Compartilhar via


estrutura D3D12DDI_RAYTRACING_GEOMETRY_TRIANGLES_DESC_0054 (d3d12umddi.h)

Descreve uma geometria do triângulo de rastreamento de raios.

Sintaxe

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;

Membros

ColumnMajorTransform3x4

Endereço de uma matriz de transformação de affine 3x4 no layout principal da linha a ser aplicado aos vértices no VertexBuffer durante um build de estrutura de aceleração. O conteúdo de VertexBuffer não é modificado. Se um formato de vértice 2D for usado, a transformação será aplicada com o terceiro componente de vértice considerado zero.

Se ColumnMajorTransform3x4 for NULL, os vértices não serão transformados. O uso de ColumnMajorTransform3x4 pode resultar em maior computação e/ou requisitos de memória para o build da estrutura de aceleração.

A memória apontada deve estar no estado do recurso D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE.

IndexFormat

Um DXGI_FORMAT, que representa o formato dos índices no IndexBuffer. O valor precisa ser um dos seguintes:

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

VertexFormat

Um DXGI_FORMAT, que representa o formato dos vértices (posições) em VertexBuffer. O valor precisa ser um dos seguintes:

  • DXGI_FORMAT_R32G32_FLOAT (terceiro componente assumido 0)
  • DXGI_FORMAT_R32G32B32_FLOAT
  • DXGI_FORMAT_R16G16_FLOAT (terceiro componente assumido 0)
  • DXGI_FORMAT_R16G16B16A16_FLOAT

IndexCount

Número de índices no IndexBuffer. Deve ser 0 se IndexBuffer for NULL.

VertexCount

Número de vértices (posições) em VertexBuffer.

IndexBuffer

Matriz de índices de vértice. Se NULL, os triângulos não serão indexados. O endereço deve ser alinhado ao tamanho de IndexFormat.

A memória apontada deve estar no estado do recurso D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE.

VertexBuffer

Matriz de vértices, incluindo um passo a passo. O alinhamento no endereço e no passo deve ser um múltiplo do tamanho do componente, ou seja, 4 bytes para formatos com componentes de 32 bits e 2 bytes para formatos com componentes de 16 bits. Não há nenhuma restrição no passo (enquanto há um limite para elementos gráficos), exceto que os 32 bits inferiores do valor são todos usados. Isso significa que o campo é UINT64 puramente para fazer com que os campos vizinhos se alinhem de forma limpa e, obviamente, em todos os lugares. Espera-se que cada posição de vértice esteja no endereço inicial do intervalo de passos e qualquer espaço em excesso seja ignorado por builds de estrutura de aceleração. Esse espaço em excesso pode conter outros dados do aplicativo, como atributos de vértice, que o aplicativo é responsável por buscar manualmente em sombreadores, seja ele intercalado em buffers de vértice ou em outro lugar.

A memória apontada deve estar no estado do recurso D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE.

Comentários

A geometria apontada por essa estrutura está sempre na lista de triângulos de (forma indexada ou não indexada). Não há suporte para faixas.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10, versão 1809
Cabeçalho d3d12umddi.h