D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE列挙 (d3d12.h)
CopyRaytracingAccelerationStructure を呼び出すときに実行されるコピー操作の種類を指定します。
構文
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 Destination は、 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 などのツールのみを対象としていますが、アプリの使用を停止するものはありませんが、このモードは OS で開発者モードが有効になっている場合にのみ許可されます。 このコピー操作は、完全なアクセラレーション構造のビルドを実行する方がディスクから読み込むよりも高速である可能性が高いため、アクセラレーション構造のキャッシュに使用することを意図していません。 重要 ソース メモリは状態 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCEである必要があります。宛先メモリは、状態 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTUREである必要があります。 |
要件
Header | d3d12.h |