轉譯器排序檢視
轉譯器排序的檢視 (ROV) 允許圖元著色器程式碼 (UAV) 系結標示未排序的存取檢視,其宣告會改變 UAV 圖形管線結果順序的正常需求。 這可讓與順序無關的透明度 (OIT) 演算法運作,這在檢視中有多個透明物件彼此對齊時,提供更好的轉譯結果。
概觀
標準圖形管線可能無法正確組合多個包含透明度的紋理。 電線柵欄、火氣、玻璃和彩色玻璃等物件會使用透明度來取得所需的效果。 當包含透明度的多個紋理彼此對齊時,就會發生問題, (圍牆前面含有濕度的玻璃建築物前面,例如) 。 轉譯器排序檢視 (ROV) 可讓基礎 OIT 演算法使用硬體的功能,嘗試正確解析透明度順序。 透明度是由圖元著色器處理。
轉譯器排序檢視 (ROV) 允許圖元著色器程式碼以宣告標記 UAV 系結,以改變 UAV 圖形管線結果順序的正常需求。
ROV 保證任何一對重迭圖元著色器調用的 UAV 存取順序。 在此情況下,「重迭」表示叫用是由相同的繪製呼叫所產生,並在圖元頻率執行模式中共用相同的圖元座標,以及取樣頻率模式中的相同圖元和樣本座標。
執行重迭 ROV 存取圖元著色器調用的順序,與提交幾何的順序相同。 這表示,針對重迭的圖元著色器調用,圖元著色器調用所執行的 ROV 寫入必須可供後續調用讀取,且不得影響先前調用的讀取。 圖元著色器調用所執行的 ROV 讀取必須反映先前調用的寫入,且不得反映後續調用的寫入。 這對於 UAV 很重要,因為它們會從輸出不因變異保證的固定順序圖形管線結果一般設定而明確省略。
實作詳細資料
轉譯器排序檢視 (ROV) 會以下列新的高階著色器語言宣告 (HLSL) 物件,且僅適用于圖元著色器:
RasterizerOrderedBuffer
RasterizerOrderedByteAddressBuffer
RasterizerOrderedStructuredBuffer
RasterizerOrderedTexture1D
RasterizerOrderedTexture1DArray
RasterizerOrderedTexture2D
RasterizerOrderedTexture2DArray
RasterizerOrderedTexture3D
使用這些物件的方式與其他 UAV 物件相同, (例如 etc RWBuffer
.) 。
API summary
ROV 是僅限 HLSL 的建構,可將不同的行為語意套用至 UAV。 與 UAV 相關的所有 API 也都與 ROV 相關。 請注意,下列方法、結構和協助程式類別會參考轉譯器:
- D3D12_RASTERIZER_DESC :保存轉譯器描述的結構。
- D3D12_FEATURE_DATA_D3D12_OPTIONS :保存布林值的結構,表示支援。
- CheckFeatureSupport :用來存取支援功能的方法。
- CD3DX12_RASTERIZER_DESC :用於建立轉譯器描述的協助程式類別。
- D3D12_GRAPHICS_PIPELINE_STATE_DESC :保存管線狀態的結構。