为什么我的纹理映射与我的片段着色器生成线在纹理坐标跳跃?

问题描述:

我在将一个equirectangular全景图像映射到一个简单的平面上遇到了很多麻烦。到目前为止,我已经得到了正确的映射,所以一切都显示出它应该在哪里。但我的问题是,在我的纹理坐标从1跳到0的地方有一条线。但是这条线不仅仅是一些线。它具有比正常尺寸大一倍的像素。我将它直接渲染到我的屏幕上,而没有帧缓冲区。我尝试启用多重采样,但它根本不影响该行。我也试图通过将它隐藏在相机后面来摆脱那条线,但后来我意识到,当我抬头看时,无论我把它放在哪里,总有线。在我的代码中,当我使用例如“if”或“atan”进行纹理坐标跳转时,此行总是显示出来。有人知道这个问题,或者至少有人可以重现吗?为什么我的纹理映射与我的片段着色器生成线在纹理坐标跳跃?

Image of the Problem

+1

请显示相关代码。 – BDL

这通常是由mipmapping贴图引起的。当您自己换算坐标时,例如在转换为极坐标系时,接缝旁边的像素最终会出现大的坐标导数,这意味着错误的mip水平会被采样。

这里最好的解决方案可能是检查你是否真的需要mipmap。在天空盒上它通常没有太大区别。否则,您必须自己计算详细程度,才能正确考虑坐标跳跃。

避免此问题的另一种方法是防止将接缝两侧的碎片一起光栅化。您可以通过构建天空盒网格来实现这一点,即三角形边缘始终与接缝对齐,以便接缝的每一侧都位于不同的三角形中。

+0

谢谢soooo,这正是造成它的原因!!!!!! – HenrikD