次の方法で共有


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 などのツールのみを対象としていますが、アプリで使用を停止するものはありません。 出力は、基本的に加速構造ビルドの逆関数です。

最上位レベルのアクセラレーション構造の場合、出力には、元のビルドで使用されたデータと同じ順序で使用されるインスタンス記述のセットが含まれます。

下位レベルのアクセラレーション構造の場合、出力には、元のビルドで使用されたデータとほぼ一致するジオメトリ記述のセットが含まれます。 出力は、加速度構造体の仕様で許容される許容誤差の一部で、元の 部分に対してのみ大まかな一致です。また、概念的にエンコードされたものとまったく同じ構造を報告することは単純ではない可能性があるためです。

たとえば、手続き型プリミティブに対して返される AAB (軸揃え境界ボックス) は、正確な表現を公開するクリーンではない可能性があるため、ボリュームの方が保守的で (例えば大きい)、加速構造表現の実際とは数が異なる可能性があります。

シェーダー テーブルのインデックス作成の計算はこれに依存するため、それぞれ独自のジオメトリの説明を持つジオメトリは、元のビルドと同じ順序で表示する必要があります。

この全体的な構造は、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である必要があります。

最上位レベルのアクセラレーション構造をシリアル化する場合、参照される下位レベルのアクセラレーション構造体は、メモリ内にまだ存在したり、そのままである必要はありません。 同様に、最上位レベルの加速度構造体がそれらを指しているかどうかに関係なく、下位レベルの加速度構造体をシリアル化できます。 もう 1 つの方法として、アクセラレーション構造体のシリアル化の順序は関係ありません。
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 Version 1809
Header d3d12umddi.h