在DirectX 9中,像素着色器在每次绘制调用中每个像素运行一次以上吗?



如果我在相同的绘制调用中有多个重叠的三角形,我的像素着色器是否为每个像素输入一次每个原语覆盖它?还是首先执行深度测试,并且着色器只在每个像素输入一次,而不管原语的数量?

我在DirectX 9中工作,使用着色器模型4.0级9_1。

谢谢!

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

同样,很明显,像素着色器每个像素运行不止一次。考虑alpha混合:必须先渲染不透明像素,然后透明像素与已经渲染的不透明像素混合。如果每个像素只输入一次像素着色器,这是不可能发生的。

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

为了防止像素着色器在被其他物体遮挡的原语上运行,你必须实现某种形式的遮挡剔除。或者,某些驱动程序可能在一定程度上为您完成此操作。

最新更新