渲染equirectangular编码360纹理时,通常会有像
这样的查找u = atan(x,z)
v = acos(y)
equirectangular纹理已经非常预先过滤。只是打开mipmaping是行不通的。 u
不是连续的,纹理本身在uv
中具有非均匀数据。并且使用2x2框下采样创建mipmap对于equirectangular也是不正确的。
但假设miplevels和硬件mipmap查找的2x2框,是否有一个很好的方法来计算任何有意义的lod或渐变?
仅使用dFdx(v)和dFdy(v)类可以处理小视口。但必须有更好的方法吗?
答案 0 :(得分:0)
您可以使用glGenerateTextureMipmap()
函数生成mipmap并使用texture(tex, uv)
查找功能。它已经完成了这项工作。
但是,您应该对uv
坐标进行标准化,使其位于[0,1]
范围内:
u = atan(x,z)
v = acos(y)
uv = uv/6.283185 + .5