D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE列舉 (d3d12.h)

指定呼叫 CopyRaytracingAccelerationStructure時所執行的複製作業類型。

Syntax

typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE {
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0,
  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
} ;

常數

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

重要事項

來源記憶體必須處於狀態 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE。目的地記憶體必須處於狀態 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT
值: 0x1
產生功能上對等的加速結構與目的地中的來源,類似于複製模式,但也適合目的地可能較小的記憶體使用量,而且當然不是更大的記憶體使用量。 您可以事先從 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
值: 0x2
目的地會採用 D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER中所述的版面配置。 您可以事先從 EmitRaytracingAccelerationStructurePostbuildInfo擷取目的地所需的大小。

此模式僅適用于 PIX 之類的工具,但不會阻止任何應用程式使用它。 輸出基本上是加速結構組建的反轉。 這個整體結構足以讓工具/PIX 能夠讓應用程式對驅動程式從應用程式的輸入所構成的加速結構有視覺意義。 如果顯示的內容與應用程式用來建立加速結構的資料不符,則視覺效果有助於顯示加速結構中的驅動程式錯誤,而超出允許的容錯。

針對最上層加速結構,輸出包含一組與原始組建和相同順序中使用的資料完全相同的實例描述。 針對底層加速結構,輸出包含一組幾何描述,大致符合原始組建中使用的資料。 輸出只是原始的粗略比對,因為加速結構規格中允許的容錯,部分是因為報告與概念編碼完全相同的結構固有複雜度。 例如, 軸對齊周框方塊 (AAB) 傳回給程式基本類型) (,在磁片區中) 較大,甚至與加速結構標記法中實際傳回的數目不同。 每個幾何都有自己的幾何描述,都會以與原始加速相同的順序顯示,因為著色器資料表索引計算相依于此。


重要事項

來源記憶體必須處於狀態 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE。目的地記憶體必須處於狀態 D3D12_RESOURCE_STATE_UNORDERED_ACCESS

只有在作業系統中啟用開發人員模式時,才允許此模式。

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE
值: 0x3
目的地會採用 檔中描述的版面配置和大小,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
值: 0x4
來源必須是序列化加速結構,且任何指標緊接在標頭之後,固定以指向其新位置。 如需詳細資訊,請參閱 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC

目的地會取得功能相當於原本序列化之加速結構的加速結構。 不論最上層和下層加速結構還原序列化的順序為何,只要最上層加速結構用於光線追蹤或加速結構時,就會更新所參考的底層加速結構。

還原序列化只能在序列化資料的相同裝置和驅動程式版本上執行。 否則,會有未定義的結果。

此模式僅適用于 PIX 之類的工具,但不會阻止任何應用程式使用它,但只有在作業系統中啟用開發人員模式時,才允許此模式。 此複製作業不適合用于快取加速結構,因為執行完整加速結構組建的速度可能比從磁片載入快。


重要事項

來源記憶體必須處於狀態 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE。目的地記憶體必須處於狀態 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE

需求

   
標頭 d3d12.h