깊이 바이어스(Direct3D 9)

3D 공간에 있는 평면인 다각형은 각 공간에 z 바이어스를 추가하여 행성이 아닌 것처럼 표시할 수 있습니다. 이는 장면의 그림자가 제대로 표시되도록 하는 데 일반적으로 사용되는 기술입니다. instance 경우 벽의 그림자는 벽과 동일한 깊이 값을 가질 수 있습니다. 먼저 벽을 렌더링한 다음 그림자를 렌더링하면 그림자가 표시되지 않거나 깊이 아티팩트가 표시될 수 있습니다. 효과를 되돌리기 위해 행성 개체를 렌더링하는 순서를 되돌릴 수 있지만 깊이 아티팩트가 여전히 발생할 수 있습니다.

애플리케이션은 코플라나 다각형 집합을 렌더링할 때 시스템에서 사용하는 z-값에 바이어스를 추가하여 coplanar 다각형이 제대로 렌더링되도록 할 수 있습니다. 다각형 집합에 z 바이어스를 추가하려면 렌더링 직전에 IDirect3DDevice9::SetRenderState 메서드를 호출하고 , State 매개 변수를 D3DRS_DEPTHBIAS 설정하고, Value 매개 변수를 적합한 float 값으로 설정합니다(예: 적합한 값은 -1.0에서 1.0까지). 이 값을 SetRenderState에 전달하려면 값을 DWORD로 캐스팅해야 합니다. z-바이어스 값이 높을수록 렌더링하는 다각형이 다른 행성 다각형과 함께 표시될 가능성이 높아집니다.

Offset = m * D3DRS_SLOPESCALEDEPTHBIAS + D3DRS_DEPTHBIAS

여기서 m은 렌더링되는 삼각형의 최대 깊이 기울기입니다.

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

D3DRS_DEPTHBIAS 및 D3DRS_SLOPESCALEDEPTHBIAS 렌더링 상태의 단위는 z 버퍼링 또는 w 버퍼링을 사용할 수 있는지 여부에 따라 달라집니다. 애플리케이션은 적절한 값을 제공해야 합니다.

바이어스는 선 및 점 기본 형식에 적용되지 않습니다. 그러나 이 바이어스는 와이어프레임 모드로 그려진 삼각형에 적용해야 합니다.

// RenderStates
D3DRS_SLOPESCALEDEPTHBIAS, // Defaults to zero
D3DRS_DEPTHBIAS,           // Defaults to zero
// Caps
D3DPRASTERCAPS_DEPTHBIAS           
D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS 

픽셀 파이프라인