語法
typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
{
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0x00,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x01,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x02,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x04,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x08,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20,
D3D12XBOX_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_DEHYDRATE = 0x40000000,
} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
常數
| 常數 | 描述 |
|---|---|
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE | 未針對加速結構建置指定任何選項。 |
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE | 建置加速結構,使其支援未來的更新 (透過 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE 旗標),而不需要由應用程式完全重建結構。此選項可能會導致記憶體耗用量和建置時間增加,以及光線追蹤效能降低。不過,未來的更新應該會比從頭建置同等的加速結構更快。此旗標只能在初始加速結構建置時設定,或在來源加速結構已指定 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE 的更新上設定。換句話說,當加速結構在未使用 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE 的情況下建置後,就無法透過更新從其建立其他加速結構。 |
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION | 啟用以壓縮模式 (以 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT 指定) 呼叫 CopyRaytracingAccelerationStructure 來壓縮加速結構的選項。此選項可能會導致記憶體耗用量和建置時間增加。不過,在之後壓縮後,產生的加速結構所佔用的記憶體應該會比從頭建置加速結構更小。此旗標與所有其他旗標相容。如果在加速結構更新中指定此旗標,來源加速結構也必須是以此旗標建置的。換句話說,當加速結構在未使用 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION 的情況下建置後,就無法透過指定 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION 的更新從其建立其他加速結構。 相較於未指定 ALLOW_COMPACTION,指定 ALLOW_COMPACTION 可能會增加壓縮前的加速結構大小。 如果在最後壓縮之前執行多次增量建置,可能會執行多餘的壓縮相關工作。 壓縮後加速結構所需的大小可以在壓縮前透過 EmitRaytracingAccelerationStructurePostbuildInfo 查詢。如需壓縮後加速結構大小屬性的詳細資訊,請參閱 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC。 注意 指定 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE 時,有某些資訊需要保留在加速結構中,因此壓縮的幫助有限。不過,如果管線知道加速結構將不再更新,就可以讓結構更精簡。某些應用程式可能會因壓縮兩次而受益:一次在初始建置後,另一次在加速結構穩定為靜態狀態後 (如果會發生的話)。 |
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE | 建構高品質的加速結構,以額外的建置時間為代價,將光線追蹤效能最大化。一般而言,實作會花費預設設定 2-3 倍的建置時間,以取得更佳的追蹤效能。特別建議將此旗標用於靜態幾何。它與 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD 以外的所有其他旗標相容。 |
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD | 建構品質較低的加速結構,以光線追蹤效能換取建置速度。一般而言,實作會花費預設設定 1/2 到 1/3 的建置時間,但會犧牲追蹤效能。此旗標與 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD 以外的所有其他旗標相容。 |
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY | 將加速結構建置期間使用的暫存記憶體量以及結果的大小降到最低。此選項可能會導致建置時間和/或光線追蹤時間增加。這與 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION 旗標及其所啟用的明確加速結構壓縮互不相關。結合這些旗標可以讓初始加速結構及其壓縮結果都使用更少的記憶體。在建置之前呼叫 GetRaytracingAccelerationStructurePrebuildInfo 以擷取建置的記憶體需求時,其結果會反映在建置中使用此旗標的影響。此旗標與所有其他旗標相容。 |
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE | 執行加速結構更新,而不是從頭建置。這比完整建置更快,但可能會對光線追蹤效能產生負面影響,特別是當基礎物件的位置與更新前加速結構的原始建置相比有顯著變化時。如果來源和目的地加速結構的位址相同,則會就地執行更新。來源和目的地位址範圍的任何其他重疊皆無效。對於不重疊的來源和目的地,來源加速結構不會被修改。輸出加速結構的記憶體需求與輸入加速結構相同。來源加速結構必須是以 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE 建置的。此旗標與所有其他旗標相容。除了 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE 和 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE 之外,其他旗標選擇必須與來源加速結構中的旗標相符。只要來源加速結構是以 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE 建立,且更新建置的旗標持續指定 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE,就可以無限次連續執行加速結構更新。 |
| D3D12XBOX_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_DEHYDRATE | 產生可使用 Deflate 壓縮的脫水 BVH (幾何資料會歸零)。BVH 可以使用 GPU 透過 ID3D12GraphicsCommandList8::RehydrateRaytracingAccelerationStructureBatchedX,或由 CPU 透過 ID3D12Device11::RehydrateRaytracingAccelerationStructureX 就地復水 |
需求
標頭: d3d12_xs.h程式庫: d3d12_xs.lib
支援的平台: XBOX Series 主機
