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

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

樣板參考值通常是由 ID3D12GraphicsCommandList::OMSetStencilRef 方法指定。 這個方法會在每一繪製資料細微性上設定樣板參考值。 不過,圖元著色器可以覆寫此值。

這個 D3D12 (和 D3D11.3) 功能可讓開發人員讀取和使用樣板參考值 (SV_StencilRef) ,該值是從圖元著色器輸出,啟用每個圖元或每個樣本的細微性。

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

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

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

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

轉譯

HLSL 中的資源系結

著色器模型 5.1

在 HLSL 中指定根簽章