2017-04-27 97 views
-1

当渲染一个等距离长方圆柱编码360质地,通常有像如何(假)mipmap equirectangular呈现?

u = atan(x,z) 
v = acos(y) 

查找的等距离长方圆柱纹理已经非常预过滤。只要打开mipmaping就行不通了。 u不连续,纹理本身在uv中具有非均匀数据。并且创建一个2x2框缩减采样的mipmap也不适合equirectangular。

但是,假设2x2框用于miplevels和硬件mipmap查找,是否有计算lod或渐变的好方法?

只使用dFdx(v)和dFdy(v)类型的作品来处理小视口。但是一定有更好的办法?

+1

什么是“eqirect”质感? – ybungalobill

+0

@ybungalobill:像这样http://photographyreel.com/image/9-narthex-equirect-panoramic-photography – starmole

+0

它被称为'equirectangular投影'。从来没有人听说过任何人缩短到'eqirect',谷歌似乎同意。 – ybungalobill

回答

0

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

你应该,但是,规范化uv坐标,以便它们在[0,1]范围:

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

我保持正常化 - 对衍生品无关紧要。只要打开这样的mip地图是行不通的。这就是问题:) glGenerate只会做一个2x2盒子过滤器。但eqirect已经预先过滤。 – starmole

+0

@starmole:你尝试过吗?为什么它不起作用?说你的纹理已经被预过滤了,你的意思是什么?难道你不把它作为一个二维光栅图像加载?你可以发布一个示例文件吗?我的方法肯定适用于你链接的示例文件 - 不管它是'eqirect','webmerc'还是'lambcyl'都无关紧要。 – ybungalobill