다중 렌더링 대상(Direct3D 9)

MRT(여러 렌더링 대상)는 단일 그리기 호출을 사용하여 여러 표면에 렌더링하는 기능( IDirect3D9Surface 참조)을 나타냅니다. 이러한 표면은 서로 독립적으로 만들 수 있습니다. 렌더링 대상은 IDirect3DDevice9::SetRenderTarget을 사용하여 설정할 수 있습니다.

여러 렌더링 대상에는 다음과 같은 제한 사항이 있습니다.

  • 함께 사용되는 모든 렌더링 대상 표면은 동일한 비트 깊이를 가져야 하지만 D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS 상한이 설정되지 않는 한 다른 형식일 수 있습니다.

  • 여러 렌더링 대상의 모든 표면은 너비와 높이가 같아야 합니다.

  • 일부 구현은 z-test 및 스텐실 테스트를 제외하고 디더링, 알파 테스트, 안개 없음, 혼합 또는 마스킹을 포함하여 여러 렌더링 대상에서 픽셀 후 셰이더 작업을 수행할 수 없습니다. 픽셀 후 셰이더 작업을 지원할 수 있는 디바이스는 캡 비트를 D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING 설정합니다.

    D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING 상한이 설정되면 먼저 IDirect3D9::CheckDeviceFormat 에 특정 표면 형식에 대한 USAGE_QUERY_POSTPIXELSHADER_BLENDING 결과를 참조해야 합니다. false이면 해당 특정 표면 형식에 대해 픽셀 후 셰이더 혼합 작업을 사용할 수 없습니다. true이면 디바이스는 다음과 같이 모든 동시 렌더링 대상에 동일한 상태를 적용해야 합니다.

    • 알파 혼합: oCi의 색 값은 ith 렌더링 대상과 혼합됩니다.
    • 알파 테스트: 비교는 oC0에서 발생합니다. 비교에 실패하면 모든 렌더링 대상에 대해 픽셀 테스트가 종료됩니다.
    • 안개: 렌더링 대상 0이 안개가 끼게 됩니다. 다른 렌더링 대상은 정의되지 않습니다. 구현은 모두 동일한 상태를 사용하여 안개를 흐리도록 선택할 수 있습니다.
    • 디더링: 정의되지 않았습니다.
  • 앤티앨리어싱은 지원되지 않습니다.

  • 일부 구현은 출력 쓰기 마스크(D3DRS_COLORWRITEENABLE)를 적용하지 않습니다. 독립적인 색 쓰기 마스크가 있을 수 있습니다. 이는 새 기능 비트를 사용하여 표현됩니다. 사용 가능한 독립 색 쓰기 마스크의 수는 디바이스에서 사용할 수 있는 최대 요소 수와 같습니다.

새 하드웨어 캡:

D3DCAPS9.NumSimultaneousRTs         
// The value is 1 for all hardware except those that  
//   can support this feature. It is never 0.
D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS - True if the hardware can support it
D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING - True if the hardware can support it

픽셀 파이프라인