D3D12_RAYTRACING_INSTANCE_DESC構造体 (d3d12.h)

アクセラレーション構造のビルド プロセス中に GPU メモリで使用されるレイトレーシング アクセラレーション構造体のインスタンスについて説明します。

構文

typedef struct D3D12_RAYTRACING_INSTANCE_DESC {
  FLOAT                     Transform[3][4];
  UINT                      InstanceID : 24;
  UINT                      InstanceMask : 8;
  UINT                      InstanceContributionToHitGroupIndex : 24;
  UINT                      Flags : 8;
  D3D12_GPU_VIRTUAL_ADDRESS AccelerationStructure;
} D3D12_RAYTRACING_INSTANCE_DESC;

メンバー

Transform[3]

種類: FLOAT [3][4]

インスタンスからワールドへの変換を表す行メジャー レイアウトの 3x4 変換マトリックス。 実装では、すべてのジオメトリまたは AAB を変換するのではなく、レイを変換します。

Note

Transform レイアウトは、アフィン 行列が通常メモリに格納される方法の入れ替えです。 4つの3ベクトルの代わりに、 Transform 3つの4ベクトルとしてレイアウトされる。

InstanceID

種類: UINT : 24

サポートされているシェーダーの種類の組み込み関数を InstanceID 使用してアクセスできる任意の 24 ビット値。

InstanceMask

種類: UINT : 8

インスタンスに割り当てられた 8 ビット マスク。これを使用して、レイごとにインスタンスのグループを含める/拒否できます。 値が 0 の場合、インスタンスは含まれなくなります。そのため、通常、これはゼロ以外の値に設定する必要があります。 詳細については、TraceRay 関数の InstanceInclusionMask パラメーターに関するページを参照してください。

InstanceContributionToHitGroupIndex

種類: UINT : 24

使用するヒット グループを選択するためにシェーダー テーブルのインデックス作成に追加するインスタンスごとのコントリビューションを表す任意の 24 ビット値。

Flags

種類: UINT : 8

インスタンスに適用する D3D12_RAYTRACING_INSTANCE_FLAGS からのフラグを表す 8 ビット マスク。

AccelerationStructure

種類: D3D12_GPU_VIRTUAL_ADDRESS

インスタンス化されている下位レベルのアクセラレーション構造体のアドレス。 アドレスは、 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENTとして定義された 256 バイトに揃える必要があります。 ここに渡された既存の加速度構造は、このような配置で既に配置されている必要があります。

が指すメモリは、 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE状態である必要があります。

解説

この C++ 構造体定義は、最初に CPU でインスタンス データを生成してから GPU にアップロードする場合に便利です。 ただし、アプリケーションでは、同じレイアウトに従って (コンピューティング シェーダーから) インスタンスの説明を GPU メモリに直接生成することもできます。

要件

   
Header d3d12.h