픽셀 셰이더가 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);
}
관련 항목