如果我在同一个绘制调用中有多个重叠三角形,那么每个像素为每个像素输入一次像素着色器吗?或者首先执行深度测试,并且每个像素只输入一次着色器,无论基元的数量是多少?
我在DirectX 9中工作并使用着色器模型4.0级别9_1。
谢谢!
答案 0 :(得分:1)
在像素着色器之后进行深度测试。请参阅this question。
此外,很清楚像素着色器每个像素运行多次。考虑alpha混合:必须首先渲染不透明像素,然后将透明像素与已渲染的不透明像素混合。如果每个像素仅输入一次像素着色器,则永远不会发生这种情况。
“每个原语一次”不是正确的术语。单个图元最可能覆盖多个像素,因此单个图元将导致像素着色器针对图元所覆盖的每个像素运行。
要防止像素着色器在被其他对象遮挡的基元上运行,您必须实现某种形式的occlusion culling。或者,某些驱动程序可能会在一定程度上为您执行此操作。请参阅下面的this link和评论。