Gha*_*nPL 16 opengl textures mipmaps
我想知道如果我使用自己的算法预生成它们而不是内置的自动算法,纹理mipmap的质量是否会更好.我可能会使用一个缓慢而漂亮的算法,比如Lanczos重新采样.
是否有意义?我会在现代显卡上获得任何质量提升吗?
Nil*_*nck 11
有充分的理由生成自己的mipmap.然而,下采样的质量不是其中之一.
游戏和图形程序员过去已经尝试过各种下采样算法.最后,事实证明,非常简单的"平均四像素"方法可以得到最好的结果.此外,更先进的方法在理论上更正确,它们往往会从mipmap中获得很多锐度.这样看起来很平整(试试吧!).
对于一些(对我来说不可理解)原因,简单的平均方法似乎在抗锯齿和保持mipmaps之间具有最佳权衡.
但是,您可能希望使用伽马校正来计算mipmap.OpenGL不会自己做这件事.这可以产生真正的视觉差异,尤其是对于较暗的纹理.
这样做很简单.而不是像这样平均四个值:
float average (float a, float b, float c, float d)
{
return (a+b+c+d)/4
}
Run Code Online (Sandbox Code Playgroud)
做这个:
float GammaCorrectedAverage (float a, float b, float c, float d)
{
// assume a gamma of 2.0 In this case we can just square
// the components.
return sqrt ((a*a+b*b+c*c+d*d)/4)
}
Run Code Online (Sandbox Code Playgroud)
此代码假定您的颜色分量标准化为0到1.
是什么促使你去尝试?您当前的 mipmap 生成效果是否不佳?(即,您看过吗?)请记住,无论如何,您的结果通常仍会进行(三)线性插值,因此在运动之间,改进重采样的回报通常会急剧递减。