我正在opengl-es-2.0中渲染一个相对于查看器(地面平面)的大角度下的纹理。在支持各向异性过滤的硬件上,一切都很好。然而,我需要支持一些硬件中没有这个的设备(没有GL_EXT_texture_filter_anisotropic)。
关闭mipmap后,纹理在远处很清晰,但我有云纹图案,不出所料。启用mipmap后,Moiré图案消失,但纹理在远处变得模糊(再次如预期)。
在没有各向异性过滤的硬件上有什么替代方案吗?在片段着色器(恐怕只有opengl-es-2.0)中这样做是可行的吗?有没有样例代码?我确实在椭圆加权平均过滤上发现了http://www.pmavridis.com/ewa.html,我猜这是可以实现的,但是示例代码使用了底层的各向异性硬件过滤,而且无论如何都使用了opengl-es-2.0中没有的东西。
我的目标不是高帧率,只是良好的图像质量。
发布于 2017-11-09 07:12:37
mipmaps的三线性过滤稍微改进了一些:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);Mipmap偏移将提高锐度。它可能会引入一些Moire,但远远比不上完全禁用mipmapping。这是通过在片段着色器中调用不同的texture2D重载来完成的
texture2D(yourSampler, yourTexCoords, yourMipBias);IIRC,yourMipBias的值为-1将使纹理采样锐化1mip级别,您必须针对场景进行调整,但-0.5到-1.5的值可能就足够好了。
我相信可以在着色器中编写自己的各向异性过滤,但我没有第一手的经验。我会先尝试这些更简单、更有效的方法,看看你是否能以这种方式获得像样的视觉质量。
https://stackoverflow.com/questions/47189773
复制相似问题