著色器指定的樣板參考值 (Direct3D 11 圖形)

讓圖元著色器能夠輸出樣板參考值,而不是使用 API 指定的著色器,可對樣板作業進行非常細微的控制。

著色器指定的值會取代該調用的 API 指定的 樣板參考值 ,這表示變更會影響樣板測試,而樣板作業D3D11_STENCIL_OP_REPLACE (D3D11_STENCIL_OP) 的一個成員用來將參考值寫入樣板緩衝區。

在舊版的 D3D11 中,樣板參考值只能由 ID3D11DeviceCoNtext::OMSetDepthStencilState 方法指定。 這表示此值只能在每一繪製資料細微性上定義。 這個 D3D11.3 功能可讓開發人員讀取和使用樣板參考值 (SV_StencilRef) ,這是圖元著色器的輸出,這表示它可以在每圖元或個別樣本的資料細微性上指定。

此功能在 D3D11.3 中是選擇性的。 若要測試其支援,請使用ID3D11Device::CheckFeatureSupport檢查 PSSpecifiedStencilRefSupportedD3D11_FEATURE_DATA_D3D11_OPTIONS2的布林值欄位

以下是在圖元著色器中使用 SV_StencilRef 的範例:

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

Direct3D 11.3 功能

著色器模型 5.1