D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS列舉 (d3d12.h)

指定光線追蹤加速結構的建置旗標。 使用這個列舉的值搭配提供加速結構建置作業輸入 的 D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS 結構。

Syntax

typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS {
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x1,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x2,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x4,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x8,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20
} ;

常數

 
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE
值: 0
沒有為加速結構建置指定的選項。
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE
值: 0x1
建置加速結構,使其透過旗標 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
值: 0x2
使用壓縮模式呼叫 CopyRaytracingAccelerationStructure 來啟用壓縮加速結構的選項,方法是使用 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT指定的壓縮模式。

此選項可能會導致記憶體耗用量和建置時間增加。 不過,在未來壓縮之後,產生的加速結構應該耗用比從頭開始建置加速結構較小的記憶體使用量。

此旗標與所有其他旗標相容。 如果指定為加速結構更新的一部分,則來源加速結構也必須使用此旗標來建置。 換句話說,在沒有 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
值: 0x4
建構高品質的加速結構,以犧牲額外的建置時間,將光線追蹤效能最大化。 一般而言,實作的建置時間會比預設設定多 2-3 倍,以取得更好的追蹤效能。

此旗標特別適用於靜態幾何。 除了 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD以外,它與所有其他旗標相容。
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD
值: 0x8
建構品質較低的加速結構,以交易建置速度的光線追蹤效能。 一般而言,實作需要 1/2 到 1/3 的建置時間,而不是預設設定,並犧牲追蹤效能。

除了 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD以外,此旗標與所有其他旗標相容。
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY
值: 0x10
將加速結構建置期間所使用的臨時記憶體數量以及結果的大小降到最低。 此選項可能會導致建置時間增加和/或光線追蹤時間。 這是與 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION 旗標的正交,以及它所啟用的明確加速結構壓縮。 結合旗標可能同時表示初始加速結構,以及壓縮它的結果會使用較少的記憶體。

針對組建使用此旗標的影響會反映在呼叫 GetRaytracingAccelerationStructurePrebuildInfo 之後,再執行建置以擷取組建的記憶體需求。

此旗標與所有其他旗標相容。
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE
值: 0x20
執行加速結構更新,而不是從頭開始建置。 這比完整組建更快,但可能會對光線追蹤效能造成負面影響,特別是當基礎物件的位置在更新之前從原始的加速結構組建大幅變更時。

如果來源和目的地加速結構的位址相同,則會就地執行更新。 來源和目的地的任何其他位址範圍重迭無效。 對於非重疊的來源和目的地,來源加速結構未修改。 輸出加速結構的記憶體需求與輸入加速結構相同

來源加速結構必須已使用 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE 來建置。

此旗標與所有其他旗標相容。 除了 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATED3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE之外,其他旗標選取項目必須符合來源加速結構中的旗標。

只要來源加速結構是以 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE 建立,而且更新組建的旗標會繼續指定 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE,加速結構更新可以連續執行。

規格需求

需求
標頭 d3d12.h