根據我的理解,片段着色器從光柵化中獲取結果。然而,根據計算機圖形學:原理與實踐(第3版),光柵化將計算基於照明在各個方向上的片段的顏色:片段着色器會覆蓋從光柵化生成的片段顏色?
for each pixel position (x, y):
closest[x, y] = ∞
for each triangle T:
for each pixel position (x, y):
let R be the ray through (x, y) from the eye
let P be the intersection of R and T
if P exists:
sum = 0
for each direction:
sum += . . .
if the distance to P is less than closest[x, y]:
pixel[x, y] = sum
closest[x, y] = |P − O|
所以片段彩色像素[X,Y]的計算基在現場照明。因此,在此之後,片段着色器會將顏色,紋理等應用到每個片段。片段着色器或紋理中的顏色與從光柵化計算出的顏色混合的方式如何?
」片段着色器的輸出是深度值「。根據我的理解,深度值是在光柵化期間計算的。 – lightrek
片段着色器是你的光柵化過程的實現嗎?我認爲片段着色器是在柵格化之後進行的。 – lightrek
@lightrek:這不完全準確。可以在光柵化過程中計算深度,但片段着色器有最終的說法。如果片段着色器從不寫入深度,則可以使用柵格化值,並且硬件設計用於執行早期深度測試,並在此場景中跳過對任何失敗片段的着色。但是,如果片段着色器將任何內容寫入'gl_FragDepth',則深度測試必須在着色後執行。出於同樣的原因,模板測試也可以提前完成;有一整套「早期片段測試」。 –