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

> Décrit un ensemble de triangles utilisés comme géométrie de raytracing. La géométrie pointée par cette structure est toujours sous forme de liste de triangles, indexée ou non indexée.

Décrit un ensemble de triangles utilisés comme géométrie de raytracing. La géométrie pointée par cette structure est toujours sous forme de liste de triangles, indexée ou non indexée. Les bandes de triangles ne sont pas prises en charge.

## Syntaxe

```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
```

### Membres

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

Adresse d'une matrice de transformation affine 3x4 en disposition par lignes (row-major), à appliquer aux sommets de <i>VertexBuffer</i> lors de la construction d'une structure d'accélération. Le contenu de <i>VertexBuffer</i> n'est pas modifié. Si un format de sommet 2D est utilisé, la transformation est appliquée en supposant que la troisième composante du sommet est nulle.

Si <i>Transform3x4</i> a la valeur NULL, les sommets ne sont pas transformés. L'utilisation de <i>Transform3x4</i> peut augmenter les besoins en calcul et/ou en mémoire pour la construction de la structure d'accélération.

La mémoire pointée doit être dans l'état [D3D12\_RESOURCE\_STATE\_NON\_PIXEL\_SHADER\_RESOURCE](/fr/reference/graphics/d3d12_x/enums/d3d12_resource_states). L'adresse doit être alignée sur 16 octets, défini comme [D3D12\_RAYTRACING\_TRANSFORM3X4\_BYTE\_ALIGNMENT](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/constants).

*IndexFormat*\
Type : DXGI\_FORMAT

Format des index dans <i>IndexBuffer</i>. Doit être l'une des valeurs suivantes :

<ul>
  <li>**DXGI\_FORMAT\_UNKNOWN** - lorsque IndexBuffer a la valeur NULL</li>
  <li>**DXGI\_FORMAT\_R32\_UINT**</li>
  <li>**DXGI\_FORMAT\_R16\_UINT**</li>
</ul>

*VertexFormat*\
Type : DXGI\_FORMAT

Format des sommets dans <i>VertexBuffer</i>. Doit être l'une des valeurs suivantes :

<ul>
  <li>**DXGI\_FORMAT\_R32G32\_FLOAT** - la troisième composante est supposée égale à 0</li>
  <li>**DXGI\_FORMAT\_R32G32B32\_FLOAT**</li>
  <li>**DXGI\_FORMAT\_R16G16\_FLOAT** - la troisième composante est supposée égale à 0</li>
  <li>**DXGI\_FORMAT\_R16G16B16A16\_FLOAT**  - la composante A16 est ignorée ; d'autres données peuvent y être placées, par exemple en définissant le pas des sommets sur 6 octets.</li>
  <li>**DXGI\_FORMAT\_R16G16\_SNORM**  - la troisième composante est supposée égale à 0</li>
  <li>**DXGI\_FORMAT\_R16G16B16A16\_SNORM**   - la composante A16 est ignorée ; d'autres données peuvent y être placées, par exemple en définissant le pas des sommets sur 6 octets.</li>
</ul>

Les périphériques de niveau 1.1 prennent en charge les formats supplémentaires suivants :

<ul>
  <li>**DXGI\_FORMAT\_R16G16B16A16\_UNORM**   - la composante A16 est ignorée ; d'autres données peuvent y être placées, par exemple en définissant le pas des sommets sur 6 octets</li>
  <li>**DXGI\_FORMAT\_R16G16\_UNORM**   - la troisième composante est supposée égale à 0</li>
  <li>**DXGI\_FORMAT\_R10G10B10A2\_UNORM**   - la composante A2 est ignorée ; le pas doit être de 4 octets</li>
  <li>**DXGI\_FORMAT\_R8G8B8A8\_UNORM**   - la composante A8 est ignorée ; d'autres données peuvent y être placées, par exemple en définissant le pas des sommets sur 3 octets</li>
  <li>**DXGI\_FORMAT\_R8G8\_UNORM**   - la troisième composante est supposée égale à 0</li>
  <li>**DXGI\_FORMAT\_R8G8B8A8\_SNORM**  - la composante A8 est ignorée ; d'autres données peuvent y être placées, par exemple en définissant le pas des sommets sur 3 octets</li>
  <li>**DXGI\_FORMAT\_R8G8\_SNORM**   - la troisième composante est supposée égale à 0</li>
</ul>

*IndexCount*\
Type : UINT

Nombre d'index dans <i>IndexBuffer</i>. Doit être 0 si <i>IndexBuffer</i> a la valeur NULL.

*VertexCount*\
Type : UINT

Nombre de sommets dans <i>VertexBuffer</i>.

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

Tableau d'index de sommets. Si la valeur est NULL, les triangles ne sont pas indexés. Comme pour le rendu graphique, l'adresse doit être alignée sur la taille de <i>IndexFormat</i>.

La mémoire pointée doit être dans l'état [D3D12\_RESOURCE\_STATE\_NON\_PIXEL\_SHADER\_RESOURCE](/fr/reference/graphics/d3d12_x/enums/d3d12_resource_states). Notez que si une application souhaite partager des entrées de tampon d'index entre l'assembleur d'entrée graphique et l'entrée de construction de la structure d'accélération de raytracing, elle peut toujours placer une ressource simultanément dans une combinaison d'états de lecture, par exemple **D3D12\_RESOURCE\_STATE\_INDEX\_BUFFER** | **D3D12\_RESOURCE\_STATE\_NON\_PIXEL\_SHADER\_RESOURCE**.

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

Tableau de sommets incluant un pas. L'alignement de l'adresse et du pas doit être un multiple de la taille des composantes, soit 4 octets pour les formats à composantes 32 bits et 2 octets pour les formats à composantes 16 bits. Contrairement au rendu graphique, le pas n'est soumis à aucune contrainte, si ce n'est que seuls les 32 bits inférieurs de la valeur sont utilisés ; le champ est de type UINT64 uniquement pour que les champs voisins soient alignés proprement et de manière évidente partout. La position de chaque sommet est censée se trouver à l'adresse de début de la plage du pas, et tout espace excédentaire est ignoré par les constructions de structures d'accélération. Cet espace excédentaire peut contenir d'autres données de l'application, telles que des attributs de sommet, que l'application doit récupérer manuellement dans les nuanceurs, qu'elles soient entrelacées dans les tampons de sommets ou ailleurs.

La mémoire pointée doit être dans l'état [D3D12\_RESOURCE\_STATE\_NON\_PIXEL\_SHADER\_RESOURCE](/fr/reference/graphics/d3d12_x/enums/d3d12_resource_states). Notez que si une application souhaite partager des entrées de tampon de sommets entre l'assembleur d'entrée graphique et l'entrée de construction de la structure d'accélération de raytracing, elle peut toujours placer une ressource simultanément dans une combinaison d'états de lecture, par exemple **D3D12\_RESOURCE\_STATE\_VERTEX\_AND\_CONSTANT\_BUFFER** | **D3D12\_RESOURCE\_STATE\_NON\_PIXEL\_SHADER\_RESOURCE**

## Configuration requise

**En-tête :** d3d12\_xs.h\
**Bibliothèque :** d3d12\_xs.lib\
**Plateformes prises en charge** : consoles XBOX Series


## Related topics

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