Partager via


structure D3D12DDI_RAYTRACING_GEOMETRY_TRIANGLES_DESC_0054 (d3d12umddi.h)

Décrit une géométrie de triangle de traçage de rayons.

Syntaxe

typedef struct D3D12DDI_RAYTRACING_GEOMETRY_TRIANGLES_DESC_0054 {
  D3D12DDI_GPU_VIRTUAL_ADDRESS            ColumnMajorTransform3x4;
  DXGI_FORMAT                             IndexFormat;
  DXGI_FORMAT                             VertexFormat;
  UINT                                    IndexCount;
  UINT                                    VertexCount;
  D3D12DDI_GPU_VIRTUAL_ADDRESS            IndexBuffer;
  D3D12DDI_GPU_VIRTUAL_ADDRESS_AND_STRIDE VertexBuffer;
} D3D12DDI_RAYTRACING_GEOMETRY_TRIANGLES_DESC_0054;

Membres

ColumnMajorTransform3x4

Adresse d’une matrice de transformation affine 3x4 dans la disposition principale de ligne à appliquer aux sommets dans vertexBuffer lors d’une build de structure d’accélération. Le contenu de VertexBuffer n’est pas modifié. Si un format de vertex 2D est utilisé, la transformation est appliquée avec le troisième composant de vertex supposé être égal à zéro.

Si ColumnMajorTransform3x4 a la valeur NULL, les sommets ne sont pas transformés. L’utilisation de ColumnMajorTransform3x4 peut entraîner une augmentation des besoins en calcul et/ou en mémoire pour la build de structure d’accélération.

La mémoire pointée vers doit être à l’état de ressource D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE.

IndexFormat

DXGI_FORMAT, représentant le format des index dans IndexBuffer. Cette valeur doit être l’une des suivantes :

  • DXGI_FORMAT_UNKNOWN (quand IndexBuffer a la valeur NULL)
  • DXGI_FORMAT_R32_UINT
  • DXGI_FORMAT_R16_UINT

VertexFormat

DXGI_FORMAT, représentant le format des sommets (positions) dans VertexBuffer. Cette valeur doit être l’une des suivantes :

  • DXGI_FORMAT_R32G32_FLOAT (troisième composant supposé 0)
  • DXGI_FORMAT_R32G32B32_FLOAT
  • DXGI_FORMAT_R16G16_FLOAT (troisième composant supposé 0)
  • DXGI_FORMAT_R16G16B16A16_FLOAT

IndexCount

Nombre d’index dans IndexBuffer. Doit être 0 si IndexBuffer a la valeur NULL.

VertexCount

Nombre de sommets (positions) dans VertexBuffer.

IndexBuffer

Tableau d’index de vertex. Si la valeur est NULL, les triangles ne sont pas indexés. L’adresse doit être alignée sur la taille d’IndexFormat.

La mémoire pointée vers doit être à l’état de ressource D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE.

VertexBuffer

Tableau de sommets, y compris une foulée. L’alignement sur l’adresse et la foulée doit être un multiple de la taille du composant, c’est-à-dire 4 octets pour les formats avec des composants 32 bits et 2 octets pour les formats avec des composants 16 bits. Il n’existe aucune contrainte sur la foulée (alors qu’il existe une limite pour les graphiques), si ce n’est que les 32 bits inférieurs de la valeur sont tous utilisés. Cela signifie que le champ est UINT64 uniquement pour que les champs voisins s’alignent proprement et évidemment partout. Chaque position de vertex est censée se trouver à l’adresse de début de la plage de foulée et tout espace excédentaire est ignoré par les builds de structure d’accélération. Cet espace excédentaire peut contenir d’autres données d’application, telles que des attributs de vertex, que l’application est chargée d’extraire manuellement dans les nuanceurs, qu’elles soient entrelacées dans des tampons de vertex ou ailleurs.

La mémoire pointée vers doit être à l’état de ressource D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE.

Remarques

La géométrie pointée par cette structure est toujours dans la liste triangle à partir de (forme indexée ou non indexée). Les bandes ne sont pas prises en charge.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10, version 1809
En-tête d3d12umddi.h