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 de la VertexBuffer lors d’une génération 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 seront pas transformés. L’utilisation de ColumnMajorTransform3x4 peut entraîner une augmentation des besoins en calcul et/ou en mémoire pour la génération de la structure d’accélération.
La mémoire pointée doit se trouver dans état de ressource D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE.
IndexFormat
Un 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
Un 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 de IndexFormat.
La mémoire pointée doit se trouver dans état de ressource D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE.
VertexBuffer
Tableau de sommets incluant un pas à pas. L’alignement sur l’adresse et la progression doit être un multiple de la taille du composant, ce qui signifie que 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 le pas (alors qu’il existe une limite pour les graphiques), à part 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 correctement et évidemment partout. Chaque position de vertex est censée être à l’adresse de début de la plage de progression 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 les attributs de vertex, que l’application soit responsable de l’extraction manuelle dans les nuanceurs, qu’elle soit entrelacée dans des mémoires tampons de vertex ou ailleurs.
La mémoire pointée doit se trouver dans é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 de triangles à partir de (indexée ou non indexée). Les bandes ne sont pas prises en charge.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 10, version 1809 |
d’en-tête | d3d12umddi.h |