DirectX Graphics 프로그래밍 가이드 고도의 주제 픽셀 파이프라인 깊이 바이어스   [목차열람] [주소복사] [슬롯비우기]
깊이 바이어스
 
Microsoft DirectX 9.0

깊이 바이어스


기본도형의 래스터화중에 생성된 fragment의 깊이값에 바이어스를 걸 수가 있다. 이 기능에 의해, 동일 평면상의 기본도형를 드로잉(Drawing) 할 때의 z 화이팅의 문제를 완화할 수 있다.

이 기능은 이전의 버전의 Microsoft® Direct3D® 에서 공개되었지만, 레퍼런스 장치에서는 지정도 처리도되지 않았다.

D3DPRASTERCAPS_ZBIAS 를 공개해, 지정되지 않은 동작을 실행하는 종래의 장치와 깊이 바이어스에 근거해 실제로 경사적인 스케일링을 실행할 수 있는 장치를 구별하기 위해서, D3DPRASTERCAPS_DEPTHBIAS 과 D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS 가 추가되었다. 애플리케이션에서는, 2 개의 부동 소수점값 D3DRS_DEPTHBIAS 및 D3DRS_SLOPESCALEDEPTHBIAS 를 지정한다. 이것들은 오프셋(offset)를 계산하기 위해서 사용된다. 이 오프셋(offset)는, 깊이 테스트로 사용되거나 옵션으로 깊이 버퍼에 기입해지거나 하는 최종적인 깊이값을 생성하기 위해서, fragment의 보간 된 깊이값에 추가된다.

Offset = m * D3DRS_SLOPESCALEDEPTHBIAS + D3DRS_DEPTHBIAS

여기서, m 는 렌더링 하는 삼각형의 최대 깊이 구배이다.

m = max(delta z / delta x), abs(delta z / delta y)) 

D3DRS_DEPTHBIAS 및 D3DRS_SLOPESCALEDEPTHBIAS 렌더링 스테이트의 단위는, z 버퍼링과 w 버퍼링의 어느 쪽이 유효한가에 의해 정해진다. 애플리케이션은 적절한 값을 제공할 필요가 있다.

바이어스는, 라인 및 포인트 원시적이게는 적용되지 않는다. 다만, 와이어 프레임 모드로 드로잉(Drawing) 된 삼각형에는 이 바이어스를 적용할 필요가 있다.

API 의 변경

    // RenderStates
    D3DRS_SLOPESCALEDEPTHBIAS, // New, defaults to zero
    D3DRS_DEPTHBIAS,           // New, defaults to zero
    // Caps
    D3DPRASTERCAPS_DEPTHBIAS           // New
    D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS // New


© 2002 Microsoft Corporation. All rights reserved.
↑TOP