2013-03-18 4 views
2

동일한 그리기 호출에서 여러 개의 겹치는 삼각형이있는 경우,이를 덮는 프리미티브 당 한 번 픽셀 쉐이더를 각 픽셀에 한 번 입력합니까? 또는 깊이 테스트가 먼저 수행되며 셰이더는 프리미티브 수에 관계없이 픽셀 당 정확히 한 번만 입력됩니까?DirectX 9에서 그리기 호출 당 한 픽셀 쉐이더를 픽셀 단위로 두 번 실행할 수 있습니까?

저는 DirectX 9에서 작동하고 있으며 셰이더 모델 4.0 레벨 9_1을 사용하고 있습니다.

감사합니다.

답변

1

픽셀 쉐이더 후에 깊이 테스트가 수행됩니다. this question을 참조하십시오.

또한 픽셀 쉐이더가 픽셀 당 두 번 이상 실행된다는 것이 확실합니다. 알파 블렌딩을 고려하십시오. 먼저 불투명 한 픽셀을 먼저 렌더링 한 다음 투명 픽셀을 이미 렌더링 된 불투명 픽셀과 혼합해야합니다. 픽셀 쉐이더가 픽셀 당 한 번만 입력 된 경우에는 이런 일이 발생하지 않습니다.

"한 번만 프리미티브"는 올바른 용어가 아닙니다. 단일 프리미티브는 여러 픽셀을 가장 좋아하기 때문에 하나의 프리미티브는 프리미티브가 포함하는 각 픽셀에 대해 픽셀 쉐이더를 실행하게합니다.

픽셀 쉐이더가 다른 객체에 의해 가려진 기본 요소에서 실행되지 않도록하려면 occlusion culling의 형식을 구현해야합니다. 또는, 일부 운전자가 당신을 위해 어느 정도 이것을 할 수도 있습니다. 아래에 this link과 코멘트를보십시오.

+1

픽셀 쉐이더가 픽셀의 깊이 값을 수정하지 않으면 대부분의 드라이버가 초기 깊이 테스트를 수행하므로 쉐이더가 폐색 픽셀에 대해 실행되지 않습니다 ("초기 Z 제거"라고도 함). – datenwolf

관련 문제