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_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENTとして定義された 256 バイトに揃える必要があります。 ここに渡された既存の加速度構造は、このような配置で既に配置されている必要があります。
が指すメモリは、 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE状態である必要があります。
解説
この C++ 構造体定義は、最初に CPU でインスタンス データを生成してから GPU にアップロードする場合に便利です。 ただし、アプリケーションでは、同じレイアウトに従って (コンピューティング シェーダーから) インスタンスの説明を GPU メモリに直接生成することもできます。
要件
Header | d3d12.h |