> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# D3D12_RAYTRACING_INSTANCE_DESC (XBOX Series 本体)

> アクセラレーション構造ビルド プロセス中に GPU メモリで使用されるレイトレーシング アクセラレーション構造のインスタンスを記述します。

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

## 構文

```cpp theme={null}
typedef struct D3D12_RAYTRACING_INSTANCE_DESC
{
    FLOAT[4] Transform;
    UINT InstanceID;
    UINT InstanceMask;
    UINT InstanceContributionToHitGroupIndex;
    UINT Flags;
    D3D12_GPU_VIRTUAL_ADDRESS AccelerationStructure;
} D3D12_RAYTRACING_INSTANCE_DESC
```

### メンバー

*Transform*\
型: FLOAT\[3]\[4]

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

<Note>
  `Transform` のレイアウトは、アフィン行列が通常メモリに格納される方法の転置です。4 つの 3 次ベクトルではなく、`Transform` は 3 つの 4 次ベクトルとしてレイアウトされます。
</Note>

*InstanceID*\
型: UINT

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

*InstanceMask*\
型: UINT

インスタンスに割り当てられた 8 ビット マスク。レイごとにインスタンスのグループを含める/拒否するために使用できます。値が 0 の場合、インスタンスは決して含まれないため、通常はこれを何らかの非ゼロ値に設定する必要があります。詳細については、[TraceRay](https://learn.microsoft.com/en-us/windows/win32/direct3d12/traceray-function) 関数の `InstanceInclusionMask` パラメーターを参照してください。

*InstanceContributionToHitGroupIndex*\
型: UINT

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

*Flags*\
型: UINT

インスタンスに適用する [D3D12\_RAYTRACING\_INSTANCE\_FLAGS](/reference/graphics/d3d12/enums/d3d12_raytracing_instance_flags_public) からのフラグを表す 8 ビット マスク。

*AccelerationStructure*\
型: D3D12\_GPU\_VIRTUAL\_ADDRESS

インスタンス化されているボトムレベル アクセラレーション構造のアドレス。アドレスは、[D3D12\_RAYTRACING\_ACCELERATION\_STRUCTURE\_BYTE\_ALIGNMENT](https://learn.microsoft.com/en-us/windows/win32/direct3d12/constants) で定義されているとおり、256 バイトにアラインされている必要があります。ここで渡された既存のアクセラレーション構造は、既にそのようなアラインメントで配置されている必要があります。

指しているメモリは [D3D12\_RESOURCE\_STATE\_RAYTRACING\_ACCELERATION\_STRUCTURE](/reference/graphics/d3d12_x/enums/d3d12_resource_states) 状態でなければなりません。

## 解説

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

## 要件

**ヘッダー:** d3d12\_xs.h\
**ライブラリ:** d3d12\_xs.lib\
**サポートされるプラットフォーム**: XBOX Series 本体


## Related topics

- [D3D12_RAYTRACING_INSTANCE_FLAGS (XBOX Series 本体)](/ja-jp/reference/graphics/d3d12/enums/d3d12_raytracing_instance_flags_public.md)
- [D3D12_RAYTRACING_GEOMETRY_DESC (XBOX Series 本体)](/ja-jp/reference/graphics/d3d12/structs/d3d12_raytracing_geometry_desc_public.md)
- [D3D12_RAYTRACING_GEOMETRY_AABBS_DESC (XBOX Series 本体)](/ja-jp/reference/graphics/d3d12/structs/d3d12_raytracing_geometry_aabbs_desc_public.md)
- [D3D12_RAYTRACING_GEOMETRY_FLAGS (XBOX Series 本体)](/ja-jp/reference/graphics/d3d12/enums/d3d12_raytracing_geometry_flags_public.md)
- [D3D12_RAYTRACING_GEOMETRY_TYPE (XBOX Series 本体)](/ja-jp/reference/graphics/d3d12/enums/d3d12_raytracing_geometry_type_public.md)
