Z Pre-pass
개요
- Depth Test에 의해서 무시되는 Fragment의 수를 최대로 하자.
- 아무것도 그리지 않는 것이 최고의 최적화니까!
- 2번의 렌더링이 필요하다.
- Z-Buffer에 Depth만 쓰는 것 한번
- Z-Test를 하면서 제대로 그리는 것 한번
방식
- 카메라에서 가까운 곳부터 먼 순서로 불투명한 Geometry를 정렬한다.
- 가까운 것부터 그리는 것이 Early Z rejection을 최대화 할 수 있으니까
- 당연히 이런 작업들은 CPU에서 처리할 수 있다.
- 이 기법과는 상관없지만 반투명한 Geometry는 먼 곳부터 가까운 순서로 그려야 한다.
- 첫번째 Rendering Pass
- 불투명한 Geometry를 Z-Buffer에 그린다.
- null pixel shader를 사용하여 pixel 연산은 하지 않도록 한다.
- 두번째 Rendering Pass
- Z-Write를 끈 채로 불투명한 Geometry를 다시 그린다.
- 원래 하고자 하는 모든 Shading을 수행한다.
- Z-Test에 의해서 무시되는 pixel이 많아지면서 per-pixel 부하가 많이 줄어든다.
참고
https://software.intel.com/en-us/articles/early-z-rejection-sample