ID3D12GraphicsCommandList1::SetViewInstanceMask 方法 (d3d12.h)
設定遮罩,控制針對後續繪製啟用哪些檢視實例。
語法
void SetViewInstanceMask(
[in] UINT Mask
);
參數
[in] Mask
類型: UINT
遮罩,指定哪些檢視已啟用或停用。 如果設定從最小有效位開始的位 i ,則會啟用檢視實例 i 。
傳回值
無
備註
檢視實例遮罩只會影響宣告檢視實例遮罩的 PSO,方法是在建立期間指定D3D12_VIEW_INSTANCING_FLAG_ENABLE_VIEW_INSTANCE_MASKING旗標。 嘗試建立宣告檢視實例遮罩的 PSO 會在不支持檢視實例的配接器上失敗。
檢視實例遮罩預設為 0,這會停用所有檢視。 這會強制宣告檢視實例遮罩的應用程式明確選擇要啟用的檢視,否則不會轉譯任何檢視。 如果檢視實例遮罩預設啟用所有檢視,應用程式可能不記得停用未使用的檢視,因而因為浪費的工作而遺失效能。
套件組合不會從呼叫端繼承其檢視實例遮罩,預設為 0。 這是因為當組合記錄會影響實作記錄繪製方式時,必須知道遮罩設定。 不過,套件組合所設定的檢視實例遮罩會在套件組合完成之後保存到呼叫端。 這些繼承語意類似於 PSO 的語意。
沒有相依於SV_ViewID的著色器程式代碼路徑會在任何著色器階段執行,檢視實例會遮罩,而且不會執行裁剪、檢視區處理或點陣化。 在轉譯期間檢查遮罩的實作可能會對未宣告檢視實例遮罩的 PSO 產生較小的效能負面影響,但通常可藉由略過與遮罩關閉檢視相關聯的工作所產生的效能節省來克服。 根據略過的工作頻率和數量而定,效能提升可能會相當重要。
規格需求
需求 | 值 |
---|---|
目標平台 | Windows |
標頭 | d3d12.h |