2

如果我在同一个绘制调用中有多个重叠的三角形,我的像素着色器是否为每个覆盖它的图元输入了一次?还是先进行深度测试,然后每个像素只输入一次着色器,而不管图元的数量如何?

我正在使用 DirectX 9 并使用着色器模型 4.0 级别 9_1。

谢谢!

4

1 回答 1

1

深度测试发生在像素着色器之后。看到这个问题

此外,很明显像素着色器每个像素运行不止一次。考虑 alpha 混合:必须先渲染不透明像素,然后将透明像素与已经渲染的不透明像素混合。如果每个像素只输入一次像素着色器,则永远不会发生这种情况。

“每个原语一次”不是正确的术语。单个图元很可能覆盖多个像素,因此单个图元将导致像素着色器针对图元覆盖的每个像素运行。

为了防止像素着色器在被其他对象遮挡的图元上运行,您必须实现某种形式的遮挡剔除。或者,某些驱动程序可能会在一定程度上为您执行此操作。请参阅此链接并在下面发表评论。

于 2013-03-18T20:20:47.800 回答