Condividi tramite


struttura D3D12DDI_RAYTRACING_GEOMETRY_TRIANGLES_DESC_0054 (d3d12umddi.h)

Descrive una geometria del triangolo di traccia dei raggi.

Sintassi

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;

Members

ColumnMajorTransform3x4

Indirizzo di una matrice di trasformazione affine 3x4 nel layout principale di riga da applicare ai vertici del VertexBuffer durante una compilazione della struttura di accelerazione. Il contenuto di VertexBuffer non viene modificato. Se viene usato un formato di vertice 2D, la trasformazione viene applicata con il terzo componente vertice assunto come zero.

Se ColumnMajorTransform3x4 è NULL, i vertici non verranno trasformati. L'uso di ColumnMajorTransform3x4 può comportare un aumento dei requisiti di calcolo e/o memoria per la compilazione della struttura di accelerazione.

La memoria a cui punta deve essere nello stato della risorsa D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE.

IndexFormat

Oggetto DXGI_FORMAT che rappresenta il formato degli indici in IndexBuffer. Questo valore deve essere uno dei seguenti:

  • DXGI_FORMAT_UNKNOWN (quando IndexBuffer è NULL)
  • DXGI_FORMAT_R32_UINT
  • DXGI_FORMAT_R16_UINT

VertexFormat

Oggetto DXGI_FORMAT, che rappresenta il formato dei vertici (posizioni) in VertexBuffer. Questo valore deve essere uno dei seguenti:

  • DXGI_FORMAT_R32G32_FLOAT (terzo componente assunto 0)
  • DXGI_FORMAT_R32G32B32_FLOAT
  • DXGI_FORMAT_R16G16_FLOAT (terzo componente assunto 0)
  • DXGI_FORMAT_R16G16B16A16_FLOAT

IndexCount

Numero di indici in IndexBuffer. Deve essere 0 se IndexBuffer è NULL.

VertexCount

Numero di vertici (posizioni) in VertexBuffer.

IndexBuffer

Matrice di indici dei vertici. Se NULL, i triangoli non sono indicizzati. L'indirizzo deve essere allineato alle dimensioni di IndexFormat.

La memoria a cui punta deve essere nello stato della risorsa D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE.

VertexBuffer

Matrice di vertici che includono uno stride. L'allineamento dell'indirizzo e dello stride deve essere un multiplo delle dimensioni del componente, ovvero 4 byte per i formati con componenti a 32 bit e 2 byte per i formati con componenti a 16 bit. Non esiste alcun vincolo sullo stride (mentre esiste un limite per la grafica), diverso dal fatto che i 32 bit inferiori del valore siano tutti utilizzati. Ciò significa che il campo è UINT64 esclusivamente per allineare i campi adiacenti in modo pulito e ovviamente ovunque. Ogni posizione del vertice deve essere all'indirizzo iniziale dell'intervallo di stride e qualsiasi spazio in eccesso viene ignorato dalle build della struttura di accelerazione. Questo spazio in eccesso potrebbe contenere altri dati dell'app, ad esempio gli attributi dei vertici, che l'app è responsabile del recupero manuale negli shader, sia che si tratti di interleaved nei buffer dei vertici o altrove.

La memoria a cui punta deve essere nello stato della risorsa D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE.

Commenti

La geometria a cui punta questa struttura è sempre nell'elenco di triangoli da (formato indicizzato o non indicizzato). Le strip non sono supportate.

Requisiti

Requisito Valore
Client minimo supportato Windows 10, versione 1809
Intestazione d3d12umddi.h