非有序三角形光栅化

时间:2015-09-17 13:50:54

标签: graphics 3d parallel-processing pixel raster

我正在做一个三角形栅格化器,一切正常但现在我想使用并行计算来绘制一堆三角形。

这意味着三角形可以每帧以任意随机顺序绘制,问题是这种无序绘制会造成伪影。

作为测试用例,让我们考虑两个共享两个顶点的三角形,如下所示: enter image description here

如果我们查看像素网格,顶点将如下所示: enter image description here

我正在使用的填充惯例就是ceil()
因此,如果我们绘制蓝色三角形,它将看起来像这样 enter image description here

现在变得明显的问题是,如果我们现在绘制黄色三角形,因为它们共享两个顶点,黄色三角形将绘制在蓝色三角形上: enter image description here

这不是问题本身,问题是如果我们以相反的顺序绘制它们(黄色的第一个,蓝色的第二个),那么蓝色的将被绘制而不是: enter image description here

这会导致明显的伪影,因为在任何帧中,顺序可以是随机的,因此当一个三角形绘制在另一个三角形上时,您将看到一条闪烁的线,反之亦然。

有没有什么可以做的,以确保无论绘制三角形的顺序,最终图像看起来都相同?

1 个答案:

答案 0 :(得分:1)

始终截断为整数设备像素,并始终以相同的方式执行。这可能是地板或天花板甚至是圆形(如果你确定两个三角形在数字上都是相同的输入,那么它们应该相同)。

定义三角形的边界以包括最低端点但排除最高端点,即。,min(x0,x1)< = x< max(x0,x1)和y范围类似。