내 이해에 따르면, 조각 셰이더는 래스터 화의 결과를 가져옵니다. 그러나, 컴퓨터 그래픽스에있어서조각 쉐이더는 래스터 화에서 생성 된 조각 색상을 덮어 씁니까?
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]에 기초하여 계산된다 : 원리 및 연습 (제 3 판), 래스터 화는 다양한 방향의 조명에 따라 프래그먼트 색상을 계산할 현장에서 조명. 그래서, 이후에, 조각 셰이더는 각 조각에 색, 질감 등을 적용 할 것입니다. 조각 셰이더의 색상 또는 텍스처와 래스터 화에서 계산 된 색상이 어떻게 섞여 있습니까?
"조각 셰이더의 출력은 깊이 값입니다." 내 이해에 깊이 값은 래스터 화 중에 계산됩니다. – lightrek
조각 쉐이더는 래스터 화 과정을 구현 한 것입니까? 조각 쉐이더는 파이프 라인에서 래스터 화 한 후에 제공됩니다. – lightrek
@lightrek : 그건 완전히 정확하지 않습니다. 래스터 화 중에 깊이를 계산할 수는 있지만 프래그먼트 셰이더는 최종 결과를 보입니다. 조각 쉐이더가 절대로 깊이를 쓰지 않으면 래스터 화 된 값을 사용할 수 있으며 하드웨어는 초기 심도 테스트를 수행하고이 시나리오에서 실패한 조각을 음영 처리하지 않도록 설계되었습니다. 그러나 프래그먼트 쉐이더가 'gl_FragDepth'에 아무 것도 쓰지 않는다면 쉐이딩 후에 깊이 테스트를 수행해야합니다. 스텐실 테스트는 같은 이유로 일찍 완료 될 수 있습니다. 전체 클래스의 "초기 조각 테스트"가 있습니다. –