【发布时间】:2019-06-28 07:52:27
【问题描述】:
我计算一个立方体的网格,其顶点在完全相同的位置但加倍,如下所示:
+----+
/ /
/ /
Q0> +----+ <Q1
P0> +----+ <P1
| |
| |
+----+
P0 和 Q0 具有完全相同的位置,但是是两个不同的顶点。 P1 和 Q1 相同。
我的着色器需要的是顶点处的单独元数据(UV0、UV1、颜色等)。这就是为什么我必须将顶点加倍,尽管在同一个位置。
也就是说,我的问题如下。在沿P0->P1 和Q0->Q1 的接缝处渲染了一个空隙。它通常小于一个像素,但仍然可以察觉。看看这张效果图的拼贴:
我用 4 个蓝色箭头指出了工件。 BL 角的较小图像是完美对齐的相机,而较大的图像是倾斜相机。
我没有抗锯齿(我需要像素化的艺术风格),并且纹理未经过滤,没有 mipmap。如有需要,我可以给出纹理的完整设置。
我的问题是,为什么这些伪影会出现在有角度的三角形接缝上?三角形之间还有几个接缝是共面的,并且没有接缝是可见的。
UV 在 epsilon(像素的 1/100)上方有一个微小的填充,以减少纹理渗色。纹理在数组中,它们不在图集中!
该算法基于int,并且仅基于网格构造使用Vector3 和float。这意味着算法中不会有任何舍入误差,顺便说一句,这非常简单。
工件必须是在转换为Vector3 后产生的,并且看起来像舍入错误,但我希望硬件精确定位的顶点会产生完美对齐的 Peano-Jordan 纹素。
这里发生了什么?如何删除这些工件?
【问题讨论】: