構文
メンバー
Transform型: FLOAT[3][4] インスタンスからワールドへの変換を表す、行優先レイアウトの 3x4 変換行列。実装は、すべてのジオメトリまたは AABB を変換するのではなく、レイを変換します。
Transform のレイアウトは、アフィン行列が通常メモリに格納される方法の転置です。4 つの 3 次ベクトルではなく、Transform は 3 つの 4 次ベクトルとしてレイアウトされます。型: UINT サポートされているシェーダー タイプで
InstanceID 組み込み関数を使用してアクセスできる任意の 24 ビット値。
InstanceMask型: UINT インスタンスに割り当てられた 8 ビット マスク。レイごとにインスタンスのグループを含める/拒否するために使用できます。値が 0 の場合、インスタンスは決して含まれないため、通常はこれを何らかの非ゼロ値に設定する必要があります。詳細については、TraceRay 関数の
InstanceInclusionMask パラメーターを参照してください。
InstanceContributionToHitGroupIndex型: UINT 使用するヒット グループを選択するためにシェーダー テーブル インデックス作成に追加する、インスタンスごとの寄与を表す任意の 24 ビット値。 Flags
型: UINT インスタンスに適用する 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 メモリに直接 (たとえばコンピュート シェーダーから) インスタンスの記述を生成することも自由にできます。要件
ヘッダー: d3d12_xs.hライブラリ: d3d12_xs.lib
サポートされるプラットフォーム: XBOX Series 本体
