共用方式為


D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE列舉 (d3d12umddi.h)

要執行的複製作業類型。

語法

typedef enum D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE {
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE,
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT,
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS,
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE,
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE
} ;

常數

 
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE
在修正可能存在的任何自我參考指標時複製加速結構,讓目的地是來源的自封相符專案。 其他加速結構的任何外部指標都會保持不變,從來源到複本中的目的地。 目的地的大小與來源的大小相同。

來源和目的地記憶體必須處於 資源狀態 D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE。
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT
類似於複製模式,會產生功能上對等的加速結構至目的地中的來源。 精簡模式也會將目的地放入可能較小的記憶體使用量。 您可以從 EmitRaytracingAccelerationStructurePostBuildInfo預先擷取目的地所需的大小。

只有當來源加速結構原本是使用 D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS 列舉的D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION旗標建置時,這個模式才有效,否則結果為未定義。

來源和目的地記憶體必須處於 資源狀態 D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE。
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS
目的地會在 D3D12DDI_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER_0054中所述的版面配置之後使用。 您可以從 EmitRaytracingAccelerationStructurePostBuildInfo預先擷取目的地所需的大小。

此模式僅供 Windows PIX 這類工具使用,不過沒有任何專案會阻止任何應用程式使用它。 輸出基本上是加速結構建置的反函數。

針對最上層加速結構,輸出包含一組實例描述,其與原始組建中使用的數據相同,且順序相同。

對於底層加速結構,輸出包含一組幾何描述,大致符合原始組建中使用的數據。 輸出只是原始的粗略比對部分,因為加速結構的規格中允許的容錯,而部分是因為報告與概念編碼完全相同的結構可能並不簡單。

例如,針對程式基本類型傳回的AABB(軸對齊周框方塊)可能比實際在加速結構表示法中的值更保守(例如更大),甚至與加速結構表示法中的數位不同,因為公開確切表示可能不乾淨。

幾何,每個都有自己的幾何描述,必須以與原始組建相同的順序出現,因為著色器數據表索引計算相依於此。

這個整體結構足以讓 Windows 上的 PIX 之類的工具能夠讓應用程式對驅動程式從應用程式輸入所建立的加速結構有一些視覺感知。 如果顯示的內容與應用程式用來建立加速結構的數據不符,則視覺效果有助於顯示加速結構的驅動程式 Bug,超出允許的容錯。

來源記憶體必須處於 資源狀態 D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE。 目的地記憶體必須處於 資源狀態 D3D12DDI_RESOURCE_STATE_UNORDERED_ACCESS。

只有在作系統上啟用開發人員模式時,才允許此模式。
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE
目的地會透過 EmitRaytracingAccelerationStructurePostBuildInfo,取得 D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC_0054中所述的配置和大小。

這會串行化加速結構,讓 Windows 上的 PIX 之類的工具可以透過還原串行化儲存至檔案以供稍後播放。 雖然適用於適用於 Windows PIX 之類的工具,但不會阻止任何應用程式使用此專案。

來源記憶體必須處於 資源狀態 D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE。 目的地記憶體必須處於 資源狀態 D3D12DDI_RESOURCE_STATE_UNORDERED_ACCESS。

串行化最上層加速結構時,其所指的底層加速結構不需要在記憶體中仍存在或保持不變。 同樣地,底層加速結構可以串行化,而不論任何最上層加速結構是否指向它們。 另一種方式是,加速結構串行化的順序並不重要。
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE
來源必須是串行化加速結構,且具有任何指標,直接在標頭後面修正以指向其新位置,如 D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC_0054 結構中所述。

目的地會取得與原本串行化之加速結構功能相等的加速結構。 最上層和下層加速結構的順序無關緊要,最上層的加速結構是指,只要在最上層加速結構用於光線追蹤或加速結構更新時,最上層加速結構就會存在。

還原串行化僅適用於相同的裝置和驅動程式版本,否則結果未定義。 這並非用於快取加速結構,因為執行完整加速結構組建的速度可能會比從磁碟載入快。
雖然適用於WINDOWS PIX之類的工具,但沒有任何專案會阻止任何應用程式使用此專案,不過至少現在還原串行化需要作系統處於開發人員模式。

來源記憶體必須處於 資源狀態 D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE。
目的地記憶體必須處於狀態D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE。

要求

要求 價值
最低支援的用戶端 Windows 10 版本 1809
標頭 d3d12umddi.h