estructura D3D12DDI_RAYTRACING_GEOMETRY_TRIANGLES_DESC_0054 (d3d12umddi.h)

Describe una geometría de triángulo de seguimiento de rayos.

Sintaxis

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;

Miembros

ColumnMajorTransform3x4

Dirección de una matriz de transformación afín de 3x4 en el diseño principal de fila que se aplicará a los vértices del vértice de VertexBuffer durante una compilación de estructura de aceleración. El contenido de VertexBuffer no se modifica. Si se usa un formato de vértice 2D, la transformación se aplica con el tercer componente de vértice que se supone que es cero.

Si ColumnMajorTransform3x4 es NULL, los vértices no se transformarán. El uso de ColumnMajorTransform3x4 puede dar lugar a un aumento de los requisitos de cálculo o memoria para la compilación de la estructura de aceleración.

La memoria a la que se apunta debe estar en estado de recurso D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE.

IndexFormat

Un DXGI_FORMAT, que representa el formato de los índices en IndexBuffer. Este valor debe ser uno de los siguientes:

  • DXGI_FORMAT_UNKNOWN (cuando IndexBuffer es NULL)
  • DXGI_FORMAT_R32_UINT
  • DXGI_FORMAT_R16_UINT

VertexFormat

Un DXGI_FORMAT, que representa el formato de los vértices (posiciones) en VertexBuffer. Este valor debe ser uno de los siguientes:

  • DXGI_FORMAT_R32G32_FLOAT (tercer componente asumido 0)
  • DXGI_FORMAT_R32G32B32_FLOAT
  • DXGI_FORMAT_R16G16_FLOAT (tercer componente asumido 0)
  • DXGI_FORMAT_R16G16B16A16_FLOAT

IndexCount

Número de índices en IndexBuffer. Debe ser 0 si IndexBuffer es NULL.

VertexCount

Número de vértices (posiciones) en VertexBuffer.

IndexBuffer

Matriz de índices de vértices. Si es NULL, los triángulos no están indexados. La dirección debe alinearse con el tamaño de IndexFormat.

La memoria a la que se apunta debe estar en estado de recurso D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE.

VertexBuffer

Matriz de vértices, incluido un paso. La alineación en la dirección y el intervalo debe ser un múltiplo del tamaño del componente, lo que significa que 4 bytes para formatos con componentes de 32 bits y 2 bytes para formatos con componentes de 16 bits. No hay ninguna restricción en el intervalo (mientras que hay un límite para gráficos), aparte de que los 32 bits inferiores del valor son todos los que se usan. Esto significa que el campo es UINT64 exclusivamente para hacer que los campos vecinos se alineen de forma limpia y obviamente en todas partes. Se espera que cada posición de vértice esté en la dirección inicial del intervalo de paso y cualquier espacio excesivo se omita mediante las compilaciones de la estructura de aceleración. Este exceso de espacio puede contener otros datos de la aplicación, como atributos de vértice, que la aplicación es responsable de capturar manualmente en sombreadores, ya sea intercalado en búferes de vértices o en otro lugar.

La memoria a la que se apunta debe estar en estado de recurso D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE.

Comentarios

La geometría a la que apunta esta estructura siempre está en la lista de triángulos de (forma indizada o no indizada). No se admiten tiras.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10, versión 1809
Encabezado d3d12umddi.h