Dela via


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);
}

Direct3D 11.3-funktioner

Shader Model 5.1