著色器指定的樣板參考值 (Direct3D 11 圖形)
讓像素著色器能夠輸出樣板參考值,而不是使用 API 指定的著色器,可對樣板作業進行非常精細的控制。
著色器指定的值會取代該調用的 API 指定 樣板參考值,這表示變更會影響樣板測試,以及樣板 op D3D11_STENCIL_OP_REPLACE (D3D11_STENCIL_OP的一個成員) 用來將參考值寫入樣板緩衝區。
在舊版 D3D11 中,樣板參考值只能由 ID3D11DeviceContext::OMSetDepthStencilState 方法指定。 這表示此值只能在每一繪製數據粒度上定義。 這個 D3D11.3 功能可讓開發人員讀取和使用圖元著色器輸出的樣本參考值(SV_StencilRef
),這表示可以在每圖元或個別樣本粒度上指定。
此功能在 D3D11.3 中是選擇性的。 若要測試其支援,請使用 ID3D11Device::CheckFeatureSupport 檢查 D3D11_FEATURE_DATA_D3D11_OPTIONS2 的 PSSpecifiedStencilRefSupported
布爾值字段
以下是在像素著色器中使用 SV_StencilRef
的範例:
uint main2(float4 c : COORD) : SV_StencilRef
{
return uint(c.x);
}
相關主題