Shader Angivet stencilreferensvärde (Direct3D 11-grafik)
Om du aktiverar pixelskuggningar för att mata ut stencilreferensvärdet, i stället för att använda det API-angivna, kan du få en mycket fin detaljerad kontroll över stencilåtgärder.
Det angivna värdet för skuggning ersätter det API-angivna stencilreferensvärdet för anropet, vilket innebär att ändringen påverkar både stenciltestet och när stencil op D3D11_STENCIL_OP_REPLACE (en medlem i D3D11_STENCIL_OP) används för att skriva referensvärdet till stencilbufferten.
I tidigare versioner av D3D11 kan stencilreferensvärdet endast anges av metoden ID3D11DeviceContext::OMSetDepthStencilState. Det innebär att det här värdet bara kan definieras per ritad kornighet. Med den här funktionen D3D11.3 kan utvecklare läsa och använda stencilreferensvärdet (SV_StencilRef
) som är utdata från en pixelskuggning, vilket innebär att det kan anges på en kornighet per bildpunkt eller per exempel.
Den här funktionen är valfri i D3D11.3. Kontrollera PSSpecifiedStencilRefSupported
booleskt fält i D3D11_FEATURE_DATA_D3D11_OPTIONS2 med hjälp av ID3D11Enhet::CheckFeatureSupport
Här är ett exempel på användningen av SV_StencilRef
i en pixelskuggning:
uint main2(float4 c : COORD) : SV_StencilRef
{
return uint(c.x);
}
Relaterade ämnen