次の方法で共有


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 などのツールで、アプリの入力から作成されたドライバーの加速構造をアプリケーションに視覚的に感じさせるために十分です。 視覚化は、表示される内容が、許容される許容範囲を超えて、加速度構造の作成に使用されるデータと大きく一致しない場合に、加速度構造のドライバーのバグを明らかにするのに役立ちます。

ソース メモリは、リソースの状態 D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE する必要があります。 宛先メモリは、リソースの状態 D3D12DDI_RESOURCE_STATE_UNORDERED_ACCESS する必要があります。

このモードは、OS で開発者モードが有効になっている場合にのみ許可されます。
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE
Destination は、EmitRaytracingAccelerationStructurePostBuildInfo を使用して、D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC_0054で説明されているレイアウトとサイズ受け取ります。

これにより、アクセラレータ構造がシリアル化されるため、Windows 上の PIX などのツールは、逆シリアル化によって後で再生するためにファイルに格納できます。 PIX for Windows などのツールを対象としていますが、アプリによるこの使用は何も停止しません。

ソース メモリは、リソースの状態 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 構造体で説明されているように、ヘッダーの直後にあるポインターを使用して、新しい場所を指すように固定されたシリアル化されたアクセラレーション構造である必要があります。

変換先は、最初にシリアル化された加速度構造体と機能的に等価なアクセラレーション構造体を取得します。 最上位レベルと下位レベルの加速度構造体が逆シリアル化される順序は関係ありません。つまり、最上位レベルの加速度構造体がレイトレーシングまたはアクセラレーション構造の更新に使用される時点までに、参照される下位レベルの加速度構造体が存在する限り、逆シリアル化されます。

逆シリアル化は、同じデバイスとドライバーのバージョンでのみ機能します。それ以外の場合、結果は未定義です。 完全なアクセラレーション構造のビルドの実行は、ディスクから読み込むよりも高速になる可能性が高いため、これはアクセラレーション構造のキャッシュに使用することを意図していません。
PIX for Windows などのツールを対象としていますが、アプリによるこの使用は何も停止しませんが、少なくとも現時点では逆シリアル化では OS が開発者モードである必要があります。

ソース メモリは、リソースの状態 D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE する必要があります。
宛先メモリは、D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE状態である必要があります。

必要条件

要件 価値
サポートされる最小クライアント Windows 10 バージョン 1809
ヘッダー d3d12umddi.h