> ## 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_GEOMETRY_TRIANGLES_DESC

> レイトレーシング ジオメトリとして使用されるトライアングルのセットを記述します。この構造体で参照されるジオメトリは常にトライアングル リスト形式であり、インデックス付きまたはインデックスなしです。

レイトレーシング ジオメトリとして使用されるトライアングルのセットを記述します。この構造体で参照されるジオメトリは常にトライアングル リスト形式であり、インデックス付きまたはインデックスなしです。トライアングル ストリップはサポートされません。

## 構文

```cpp theme={null}
typedef struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC
{
    D3D12_GPU_VIRTUAL_ADDRESS Transform3x4;
    DXGI_FORMAT IndexFormat;
    DXGI_FORMAT VertexFormat;
    UINT IndexCount;
    UINT VertexCount;
    D3D12_GPU_VIRTUAL_ADDRESS IndexBuffer;
    D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE VertexBuffer;
} D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC
```

### メンバー

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

アクセラレーション構造ビルド中に <i>VertexBuffer</i> 内の頂点に適用される、行優先レイアウトの 3x4 アフィン変換行列のアドレス。<i>VertexBuffer</i> の内容は変更されません。2D 頂点形式が使用される場合、3 番目の頂点コンポーネントは 0 と見なされて変換が適用されます。

<i>Transform3x4</i> が NULL の場合、頂点は変換されません。<i>Transform3x4</i> を使用すると、アクセラレーション構造ビルドの計算量やメモリ要件が増加する可能性があります。

指しているメモリは [D3D12\_RESOURCE\_STATE\_NON\_PIXEL\_SHADER\_RESOURCE](/reference/graphics/d3d12_x/enums/d3d12_resource_states) 状態でなければなりません。アドレスは、[D3D12\_RAYTRACING\_TRANSFORM3X4\_BYTE\_ALIGNMENT](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/constants) で定義されているとおり、16 バイトにアラインされている必要があります。

*IndexFormat*\
型: DXGI\_FORMAT

<i>IndexBuffer</i> 内のインデックスの形式。次のいずれかである必要があります。

<ul>
  <li>**DXGI\_FORMAT\_UNKNOWN** - IndexBuffer が NULL の場合</li>
  <li>**DXGI\_FORMAT\_R32\_UINT**</li>
  <li>**DXGI\_FORMAT\_R16\_UINT**</li>
</ul>

*VertexFormat*\
型: DXGI\_FORMAT

<i>VertexBuffer</i> 内の頂点の形式。次のいずれかである必要があります。

<ul>
  <li>**DXGI\_FORMAT\_R32G32\_FLOAT** - 3 番目のコンポーネントは 0 と見なされます</li>
  <li>**DXGI\_FORMAT\_R32G32B32\_FLOAT**</li>
  <li>**DXGI\_FORMAT\_R16G16\_FLOAT** - 3 番目のコンポーネントは 0 と見なされます</li>
  <li>**DXGI\_FORMAT\_R16G16B16A16\_FLOAT**  - A16 コンポーネントは無視され、そこには他のデータをパックできます (例: 頂点ストライドを 6 バイトに設定するなど)。</li>
  <li>**DXGI\_FORMAT\_R16G16\_SNORM**  - 3 番目のコンポーネントは 0 と見なされます</li>
  <li>**DXGI\_FORMAT\_R16G16B16A16\_SNORM**   - A16 コンポーネントは無視され、そこには他のデータをパックできます (例: 頂点ストライドを 6 バイトに設定するなど)。</li>
</ul>

Tier 1.1 デバイスは、次の追加の形式をサポートします。

<ul>
  <li>**DXGI\_FORMAT\_R16G16B16A16\_UNORM**   - A16 コンポーネントは無視され、そこには他のデータをパックできます (例: 頂点ストライドを 6 バイトに設定するなど)</li>
  <li>**DXGI\_FORMAT\_R16G16\_UNORM**   - 3 番目のコンポーネントは 0 と見なされます</li>
  <li>**DXGI\_FORMAT\_R10G10B10A2\_UNORM**   - A2 コンポーネントは無視され、ストライドは 4 バイトでなければなりません</li>
  <li>**DXGI\_FORMAT\_R8G8B8A8\_UNORM**   - A8 コンポーネントは無視され、そこには他のデータをパックできます (例: 頂点ストライドを 3 バイトに設定するなど)</li>
  <li>**DXGI\_FORMAT\_R8G8\_UNORM**   - 3 番目のコンポーネントは 0 と見なされます</li>
  <li>**DXGI\_FORMAT\_R8G8B8A8\_SNORM**  - A8 コンポーネントは無視され、そこには他のデータをパックできます (例: 頂点ストライドを 3 バイトに設定するなど)</li>
  <li>**DXGI\_FORMAT\_R8G8\_SNORM**   - 3 番目のコンポーネントは 0 と見なされます</li>
</ul>

*IndexCount*\
型: UINT

<i>IndexBuffer</i> 内のインデックスの数。<i>IndexBuffer</i> が NULL の場合は 0 でなければなりません。

*VertexCount*\
型: UINT

<i>VertexBuffer</i> 内の頂点の数。

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

頂点インデックスの配列。NULL の場合、トライアングルはインデックスなしです。グラフィックスと同様に、アドレスは <i>IndexFormat</i> のサイズにアラインされている必要があります。

指しているメモリは [D3D12\_RESOURCE\_STATE\_NON\_PIXEL\_SHADER\_RESOURCE](/reference/graphics/d3d12_x/enums/d3d12_resource_states) 状態でなければなりません。アプリがグラフィックス入力アセンブラーとレイトレーシング アクセラレーション構造ビルド入力の間でインデックス バッファー入力を共有したい場合、常にリソースを読み取り状態の組み合わせに同時に置くことができることに注意してください (例: **D3D12\_RESOURCE\_STATE\_INDEX\_BUFFER** | **D3D12\_RESOURCE\_STATE\_NON\_PIXEL\_SHADER\_RESOURCE**)。

*VertexBuffer*\
型: D3D12\_GPU\_VIRTUAL\_ADDRESS\_AND\_STRIDE

ストライドを含む頂点の配列。アドレスとストライドのアラインメントはコンポーネント サイズの倍数でなければならないため、32 ビット コンポーネントの形式では 4 バイト、16 ビット コンポーネントの形式では 2 バイトです。グラフィックスとは異なり、ストライドには制約はありません (値の下位 32 ビットのみが使用されるということ以外は。フィールドが UINT64 であるのは、隣接するフィールドがどこでも綺麗に/明確にアラインされるようにするためです)。各頂点位置はストライド範囲の開始アドレスにあることが期待され、余分な領域はアクセラレーション構造ビルドで無視されます。この余分な領域には頂点属性などの他のアプリ データが含まれる場合があり、そのデータが頂点バッファーにインターリーブされているか他の場所にあるかに関わらず、アプリはシェーダー内で手動で取得する責任があります。

指しているメモリは [D3D12\_RESOURCE\_STATE\_NON\_PIXEL\_SHADER\_RESOURCE](/reference/graphics/d3d12_x/enums/d3d12_resource_states) 状態でなければなりません。アプリがグラフィックス入力アセンブラーとレイトレーシング アクセラレーション構造ビルド入力の間で頂点バッファー入力を共有したい場合、常にリソースを読み取り状態の組み合わせに同時に置くことができることに注意してください (例: **D3D12\_RESOURCE\_STATE\_VERTEX\_AND\_CONSTANT\_BUFFER** | **D3D12\_RESOURCE\_STATE\_NON\_PIXEL\_SHADER\_RESOURCE**)。

## 要件

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


## Related topics

- [D3D12_RAYTRACING_GEOMETRY_DESC (XBOX Series 本体)](/ja-jp/reference/graphics/d3d12/structs/d3d12_raytracing_geometry_desc_public.md)
- [D3D12_RAYTRACING_INSTANCE_FLAGS (XBOX Series 本体)](/ja-jp/reference/graphics/d3d12/enums/d3d12_raytracing_instance_flags_public.md)
- [GetRaytracingAccelerationStructurePrebuildInfo](/ja-jp/reference/graphics/d3d12/interfaces/id3d12device5/methods/id3d12device5_getraytracingaccelerationstructureprebuildinfo_public.md)
- [D3D12_RAYTRACING_GEOMETRY_TYPE (XBOX Series 本体)](/ja-jp/reference/graphics/d3d12/enums/d3d12_raytracing_geometry_type_public.md)
- [D3D12_RAYTRACING_GEOMETRY_AABBS_DESC (XBOX Series 本体)](/ja-jp/reference/graphics/d3d12/structs/d3d12_raytracing_geometry_aabbs_desc_public.md)
