2013-03-18 37 views

回答

1

深度測試發生在像素着色器之後。見this question。另外,它清楚地表明像素着色器每像素運行多於一次。考慮alpha混合:不透明像素必須先渲染,然後透明像素與已渲染的不透明像素混合。如果像素着色器每個像素只輸入一次,則不會發生這種情況。

「每個基元一次」不是正確的術語。單個基元最喜歡覆蓋多個像素,因此單個基元會導致像素着色器針對基元覆蓋的每個像素運行。

爲防止像素着色器在被其他對象遮擋的圖元上運行,必須實現某種形式的occlusion culling。或者,一些司機可能會在一定程度上爲你做到這一點。請參閱下面的this link和註釋。

+1

如果像素着色器不修改像素的深度值,大多數驅動程序將進行早期深度測試,以避免遮擋像素(也稱爲「早期Z拒絕」)執行着色器。 – datenwolf 2013-03-18 20:50:33

相關問題