點陣化排序檢視
點陣化排序的檢視 (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物件相同(例如 RWBuffer
等)。
API 摘要
ROV 是僅限 HLSL 的建構,可將不同的行為語意套用至 UAV。 與 UAV 相關的所有 API 也都與 ROV 相關。 請注意,下列方法、結構和協助程式類別會參考轉譯器:
- D3D12_RASTERIZER_DESC:包含轉譯器描述的結構。
- D3D12_FEATURE_DATA_D3D12_OPTIONS:結構,包含布爾值,表示支援。
- CheckFeatureSupport :存取支援功能的方法。
- CD3DX12_RASTERIZER_DESC :用於建立轉譯器描述的協助程序類別。
- D3D12_GRAPHICS_PIPELINE_STATE_DESC:包含管線狀態的結構。