다음을 통해 공유


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

픽셀 셰이더가 API 지정 값을 사용하는 대신 스텐실 참조 값을 출력하도록 설정하면 스텐실 작업에 대해 매우 세분화된 제어가 가능합니다.

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

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

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

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

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

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

렌더링

HLSL 리소스 바인딩

셰이더 모델 5.1

HLSL 루트 서명 지정