Passer au contenu principal
Décrit un ensemble de triangles utilisés comme géométrie de lancer de rayons. 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

Membres

Transform3x4
Type : D3D12_GPU_VIRTUAL_ADDRESS
Adresse d’une matrice de transformation affine 3x4 en disposition par ligne (row-major) à appliquer aux sommets du VertexBuffer pendant la génération d’une structure d’accélération. Le contenu de VertexBuffer 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 Transform3x4 est NULL, les sommets ne seront pas transformés. L’utilisation de Transform3x4 peut entraîner une augmentation des calculs ou des besoins en mémoire pour la génération de la structure d’accélération. La mémoire pointée doit être dans l’état D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE. L’adresse doit être alignée sur 16 octets, défini comme D3D12_RAYTRACING_TRANSFORM3X4_BYTE_ALIGNMENT. IndexFormat
Type : DXGI_FORMAT
Format des index dans IndexBuffer. Doit être l’un des suivants :
  • DXGI_FORMAT_UNKNOWN - lorsque IndexBuffer est NULL
  • DXGI_FORMAT_R32_UINT
  • DXGI_FORMAT_R16_UINT
VertexFormat
Type : DXGI_FORMAT
Format des sommets dans VertexBuffer. Doit être l’un des suivants :
  • DXGI_FORMAT_R32G32_FLOAT - la troisième composante est supposée être 0
  • DXGI_FORMAT_R32G32B32_FLOAT
  • DXGI_FORMAT_R16G16_FLOAT - la troisième composante est supposée être 0
  • DXGI_FORMAT_R16G16B16A16_FLOAT - la composante A16 est ignorée; d’autres données peuvent y être regroupées, par exemple en définissant le pas des sommets à 6 octets.
  • DXGI_FORMAT_R16G16_SNORM - la troisième composante est supposée être 0
  • DXGI_FORMAT_R16G16B16A16_SNORM - la composante A16 est ignorée; d’autres données peuvent y être regroupées, par exemple en définissant le pas des sommets à 6 octets.
Les appareils de niveau 1.1 prennent en charge les formats supplémentaires suivants :
  • DXGI_FORMAT_R16G16B16A16_UNORM - la composante A16 est ignorée; d’autres données peuvent y être regroupées, par exemple en définissant le pas des sommets à 6 octets
  • DXGI_FORMAT_R16G16_UNORM - la troisième composante est supposée être 0
  • DXGI_FORMAT_R10G10B10A2_UNORM - la composante A2 est ignorée; le pas doit être de 4 octets
  • DXGI_FORMAT_R8G8B8A8_UNORM - la composante A8 est ignorée; d’autres données peuvent y être regroupées, par exemple en définissant le pas des sommets à 3 octets
  • DXGI_FORMAT_R8G8_UNORM - la troisième composante est supposée être 0
  • DXGI_FORMAT_R8G8B8A8_SNORM - la composante A8 est ignorée; d’autres données peuvent y être regroupées, par exemple en définissant le pas des sommets à 3 octets
  • DXGI_FORMAT_R8G8_SNORM - la troisième composante est supposée être 0
IndexCount
Type : UINT
Nombre d’index dans IndexBuffer. Doit être 0 si IndexBuffer est NULL. VertexCount
Type : UINT
Nombre de sommets dans VertexBuffer. IndexBuffer
Type : D3D12_GPU_VIRTUAL_ADDRESS
Tableau d’index de sommets. S’il est NULL, les triangles ne sont pas indexés. Comme pour les graphiques, l’adresse doit être alignée sur la taille de IndexFormat. La mémoire pointée doit être dans l’état D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE. Notez que si une application souhaite partager les entrées de tampon d’index entre l’assembleur d’entrée graphique et l’entrée de génération de structure d’accélération de lancer de rayons, elle peut toujours placer une ressource dans une combinaison d’états de lecture simultanément, 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 de 32 bits et 2 octets pour les formats à composantes de 16 bits. Contrairement aux graphiques, il n’y a aucune contrainte sur le pas, outre le fait 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 s’alignent proprement et clairement 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 générations de structures d’accélération. Cet espace excédentaire peut contenir d’autres données de l’application, comme des attributs de sommet, que l’application est chargée de récupérer manuellement dans les nuanceurs, qu’ils soient entrelacés dans les tampons de sommets ou ailleurs. La mémoire pointée doit être dans l’état D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE. Notez que si une application souhaite partager les entrées de tampon de sommets entre l’assembleur d’entrée graphique et l’entrée de génération de structure d’accélération de lancer de rayons, elle peut toujours placer une ressource dans une combinaison d’états de lecture simultanément, 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
Dernière modification le 6 octobre 2026