語法
typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
{
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0x0,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 0x1,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 0x2,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 0x3,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 0x4,
// The following are deprecated and to be removed in June 2024
D3D12XBOX_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE_AND_COMPRESS = 0x80000005,
D3D12XBOX_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE_AND_COMPRESS_FOR_GPU = 0x80000006,
} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
常數
| 常數 | 描述 |
|---|---|
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE | 複製加速結構,同時修正可能存在的任何自我參考指標,讓目的地成為來源的獨立複本。在複本中,指向其他加速結構的任何外部指標從來源到目的地都維持不變。目的地的大小與來源的大小相同。 重要 來源記憶體必須處於 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 狀態。目的地記憶體必須處於 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 狀態。 |
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT | 在目的地產生與來源功能相同的加速結構 (類似於複製模式),但也會將目的地放入可能較小、但一定不會較大的記憶體空間。目的地所需的大小可以事先從 EmitRaytracingAccelerationStructurePostbuildInfo 擷取。只有當來源加速結構最初是以 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION 旗標建置時,此模式才有效,否則結果未定義。壓縮幾何需要建構整個加速結構,這就是為什麼您必須先建置結構再壓縮它。 重要 來源記憶體必須處於 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 狀態。目的地記憶體必須處於 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 狀態。 |
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS | 目的地採用 D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER 中所述的配置。目的地所需的大小可以事先從 EmitRaytracingAccelerationStructurePostbuildInfo 擷取。此模式僅適用於 PIX 等工具,但不會阻止任何應用程式使用它。輸出基本上是加速結構建置的反向作業。這個整體結構足以讓工具/PIX 能夠為應用程式提供驅動程式根據應用程式輸入所建立之加速結構的某種視覺概念。如果顯示的內容與應用程式用來建立加速結構的資料嚴重不符 (超出允許的容錯範圍),視覺化可以協助揭露加速結構中的驅動程式錯誤。對於頂層加速結構,輸出包含一組執行個體描述,這些描述與原始建置中使用的資料相同,且順序相同。對於底層加速結構,輸出包含一組與原始建置中使用的資料大致相符的幾何描述。輸出只與原始資料大致相符,部分原因是加速結構規格中允許的容錯範圍,部分原因是要報告與概念上編碼完全相同的結構本身具有複雜性。例如,針對程序式基本型別傳回的軸對齊週框方塊 (AABB) 在體積上可能更保守 (更大),甚至在數量上與加速結構表示中實際存在的不同。每個幾何都有自己的幾何描述,其出現順序與原始加速結構中的相同,因為著色器表格索引計算取決於此。 重要 來源記憶體必須處於 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 狀態。目的地記憶體必須處於 D3D12_RESOURCE_STATE_UNORDERED_ACCESS 狀態。只有在作業系統中啟用開發人員模式時,才允許使用此模式。 |
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE | 目的地採用 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC 文件中所述的配置和大小,該結構本身是透過呼叫 EmitRaytracingAccelerationStructurePostbuildInfo 所產生。此模式會序列化加速結構,讓應用程式或工具可以將其儲存至檔案,以便之後透過還原序列化重複使用 (通常在不同的裝置執行個體上)。序列化頂層加速結構時,它所參考的底層加速結構不必仍存在於記憶體中或保持完整。同樣地,無論是否有任何頂層加速結構指向底層加速結構,都可以獨立序列化底層加速結構。換句話說,加速結構的序列化順序並不重要。 重要 來源記憶體必須處於 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 狀態。目的地記憶體必須處於 D3D12_RESOURCE_STATE_UNORDERED_ACCESS 狀態。 |
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE | 來源必須是已序列化的加速結構,其中緊接在標頭之後的任何指標都已修正為指向其新位置。如需詳細資訊,請參閱 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC。目的地會取得與原始序列化之加速結構功能相同的加速結構。頂層和底層加速結構的還原序列化順序並不重要,只要在頂層加速結構用於光線追蹤或加速結構更新時,它所參考的底層加速結構已存在即可。還原序列化只能在序列化資料時所在的相同裝置和驅動程式版本上執行。否則,結果未定義。此模式僅適用於 PIX 等工具,但不會阻止任何應用程式使用它,不過只有在作業系統中啟用開發人員模式時,才允許使用此模式。 此複製作業並非用於快取加速結構,因為執行完整的加速結構建置可能比從磁碟載入更快。 重要 來源記憶體必須處於 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE 狀態。> 目的地記憶體必須處於 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 狀態。 |
| D3D12XBOX_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE_AND_COMPRESS | 注意: 此旗標已淘汰,並將在 June 2024 GDK 中移除 複製加速結構並加以壓縮,以搭配 XG 的 CPU 型 BVH 解壓縮器 DecompressBVH() 使用。此壓縮適用於離線建置的 BVH。 |
| D3D12XBOX_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE_AND_COMPRESS_FOR_GPU | 注意: 此旗標已淘汰,並將在 June 2024 GDK 中移除 複製加速結構並加以壓縮,以搭配 XG 的 GPU 型 BVH 解壓縮器 DecompressBVH_BatchedGPU() 使用。此壓縮適用於離線建置的 BVH。 |
