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 |