아래에서 퍼옴
http://eppengine.com/zbxe/programmig/3103
( 차폐컬링은 본 설명에서 제외된다. )
early z test 는 pixel 단위의 culling 방식이다.
간단히 이야기 하면, 각 픽셀을 연산이 되기전에 깊이테스트를 통해서 보이지 않는 pixel 에 대한 연산은
적절히 skip 하기위한 pixel culling 방식이라고 이해하면 된다.
하지만 Pipe Line 단계에서 Z test 는 pixel shader (fragment shader) 다음에 이루어진다.
그렇다면, pipe 라인상에서는 z-test 가 pixel 연산 다음에 이루어 지는데, 어떻게 앞에서 처리 할 것 인가?
결론부터 이야기 하면 하드웨어 단계에서 지원이 되어야만 가능한 부분이다.
예를들어 Nvidia Geforce 8000 대의 gpu 의 경우 특정 상황에서는 자동적으로 early z 기능이 활성화 된다.
Use
다음의 순서를 따른다.
1. 컬러쓰기를 disable 하고 write depth 만 enable 한다.
(이럴경우 nvidia 의 fx 이상급 gpu 에서는 double speed z write 가 활성화 된다.)
2. depth 를 clear 하지 않은 상태에서 ( depth buffer 를 clear 하지 않는다는 의미 ) 정상적인 rendering 을 실시한다.
(이때 depth test 연산자를 equal 로 설정한다. )
3. 1번 단계에서 기록된 depth buffer 값은 2번 단계를 거치면서 깊이비교에서 실패한 pixel 들을 자동적으로 연산에서 제외 시키게 된다. ( early z )
'게임 개발 > 3D 게임 플밍' 카테고리의 다른 글
RenderTarget : DIrect3D 화면 텍스쳐에 그리기 (0) | 2010.04.22 |
---|---|
Z 버퍼의 Read / Write 개념 (6부, Z Read/Write) (0) | 2010.03.19 |
픽셀 연산시 고려해야할 색 공간(The Importance of being Linear) (0) | 2010.03.18 |
UberShader 를 활용한 게임제작 (0) | 2010.03.18 |
Depth Buffer Based Ambient Occlusion (= SSAO) (0) | 2010.03.17 |