D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS列挙 (d3d12.h)

レイトレーシングアクセラレーション構造のビルドのフラグを指定します。 この列挙体の値を、アクセラレーション構造のビルド操作への入力を提供する D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS 構造体と共に使用します。

構文

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
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を指定すると、加速度構造に保持する必要がある特定の情報があり、圧縮は非常に役立ちます。 ただし、高速化構造が更新されなくなることがパイプラインで認識されている場合は、その構造をよりコンパクトにすることができます。 一部のアプリでは、最初のビルドの後に 1 回、加速構造が静的な状態に落ち着いた後 (発生した場合) に 2 回圧縮することでメリットが得られる場合があります。

 
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指定されている限り、アクセラレーション構造の更新は無制限に連続して実行できます。

要件

要件
Header d3d12.h