셰이더 지정 스텐실 참조 값(Direct3D 12 그래픽)

API 지정 값을 사용하는 대신, 스텐실 참조 값을 출력하는 데 픽셀 셰이더를 사용하면 스텐실 작업을 매우 세부적으로 제어할 수 있습니다.

스텐실 참조 값은 일반적으로 ID3D12GraphicsCommandList::OMSetStencilRef 메서드에 의해 지정됩니다. 이 메서드는 그리기별 세분성에 대한 스텐실 참조 값을 설정합니다. 그러나 이 값은 픽셀 셰이더에서 덮어쓸 수 있습니다.

이 D3D12(및 D3D11.3) 기능을 사용하면 개발자가 픽셀 셰이더에서 출력되는 스텐실 참조 값(SV_StencilRef)을 읽고 사용할 수 있으므로 픽셀별 또는 샘플별 세분성을 사용할 수 있습니다.

셰이더 지정 값은 해당 호출에 대한 API 지정 참조 값을 대체합니다. 즉, 변경 내용이 스텐실 테스트와 스텐실 작업 D3D12_STENCIL_OP_REPLACE( D3D12_STENCIL_OP 멤버 하나)를 사용하여 참조 값을 스텐실 버퍼에 쓰는 경우 모두에 영향을 줍니다.

이 기능은 D3D12 및 D3D11.3 모두에서 선택 사항입니다. 지원을 테스트하려면 CheckFeatureSupport를 사용하여 PSSpecifiedStencilRefSupported D3D12_FEATURE_DATA_D3D12_OPTIONS 부울 필드를 검사.

다음은 픽셀 셰이더에서 SV_StencilRef 사용하는 예입니다.

uint main2(float4 c : COORD) : SV_StencilRef
{
    return uint(c.x);
}

렌더링

HLSL의 리소스 바인딩

셰이더 모델 5.1

HLSL의 루트 서명 지정