如何(假)mipmap equirectangular渲染?

时间:2017-04-27 05:04:17

标签: opengl sampling 360-degrees 360-virtual-reality

渲染equirectangular编码360纹理时,通常会有像

这样的查找
u = atan(x,z)
v = acos(y) 

equirectangular纹理已经非常预先过滤。只是打开mipmaping是行不通的。 u不是连续的,纹理本身在uv中具有非均匀数据。并且使用2x2框下采样创建mipmap对于equirectangular也是不正确的。

但假设miplevels和硬件mipmap查找的2x2框,是否有一个很好的方法来计算任何有意义的lod或渐变?

仅使用dFdx(v)和dFdy(v)类可以处理小视口。但必须有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用glGenerateTextureMipmap()函数生成mipmap并使用texture(tex, uv)查找功能。它已经完成了这项工作。

但是,您应该对uv坐标进行标准化,使其位于[0,1]范围内:

u = atan(x,z)
v = acos(y)
uv = uv/6.283185 + .5