預測

述詞是一項功能,可讓 GPU 而非 CPU 判斷不繪製、複製或分派物件。

概觀

述詞的一般用法是遮蔽;如果繪製周框方塊且遮蔽,則繪製物件本身顯然沒有點。 在此情況下,對象的繪圖可以「述詞」,使其從 GPU 的實際轉譯中移除。

起初,這看起來可能會重複超過標準深度測試,加上早期深度通過。 但述詞可以移除繪製命令狀態本身的額外負荷,加上點陣化。 雖然早期深度傳遞會移除不必要的圖元,但它仍然可以執行頂點、殼層、定義域和幾何著色器,並叫用固定函式輸入組合器、鑲嵌器和點陣化器。 藉由繪製簡單的周框方塊或類似的周框磁碟區,比實際模型更容易處理和點陣化,即可避免不必要的點陣化和處理。

不同於 Direct3D 11,預先分割與查詢分離,而且會在 Direct3D 12 中展開,讓應用程式根據應用程式開發人員可能決定的任何原因來述詞物件(不只是遮蔽)。

SetPredication

您可以根據緩衝區內 64 位的值來設定述詞(請參閱D3D12_PREDICATION_OP)。

當 GPU 執行 SetPredication 命令時,它會擷取緩衝區中的值。 緩衝區中數據的未來變更不會追溯影響述詞狀態。

如果輸入參數 Buffer 為 NULL,則會停用述詞。

Direct3D 12 API 中沒有述詞提示;直接、計算和複製命令清單允許和述詞。 來源緩衝區可以位於任何堆積類型中(預設、上傳、讀取、自定義)。

核心執行時間會驗證下列專案:

如果來源緩衝區不在D3D12_RESOURCE_STATE_PREDICATION,偵錯層會發出錯誤(這與D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT相同,而且只是別名)狀態。

可述詞的作業集合如下:

ExecuteBundle 本身不是述詞。 相反地,上述清單中的個別作業會述詞包含在套件組合的一邊。

不會述詞 ID3D12GraphicsCommandList 方法 ResolveQueryDataBeginQuery EndQuery。

計數器和查詢

效能測量

述詞查詢逐步解說