Pular para o conteúdo principal
Descreve um conjunto de triângulos usado como geometria de raytracing. A geometria apontada por esta struct está sempre no formato de lista de triângulos, indexada ou não indexada. Faixas de triângulos (triangle strips) não têm suporte.

Sintaxe

Membros

Transform3x4
Tipo: D3D12_GPU_VIRTUAL_ADDRESS
Endereço de uma matriz de transformação afim 3x4 em layout de linha principal (row-major) a ser aplicada aos vértices em VertexBuffer durante o build de uma 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 presumindo que o terceiro componente do vértice seja zero. Se Transform3x4 for NULL, os vértices não serão transformados. O uso de Transform3x4 pode resultar em aumento dos requisitos de computação e/ou memória para o build da estrutura de aceleração. A memória apontada deve estar no estado D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE. O endereço deve estar alinhado a 16 bytes, definido como D3D12_RAYTRACING_TRANSFORM3X4_BYTE_ALIGNMENT. IndexFormat
Tipo: DXGI_FORMAT
Formato dos índices em IndexBuffer. Deve ser um dos seguintes:
  • DXGI_FORMAT_UNKNOWN - quando IndexBuffer for NULL
  • DXGI_FORMAT_R32_UINT
  • DXGI_FORMAT_R16_UINT
VertexFormat
Tipo: DXGI_FORMAT
Formato dos vértices em VertexBuffer. Deve ser um dos seguintes:
  • DXGI_FORMAT_R32G32_FLOAT - presume-se que o terceiro componente seja 0
  • DXGI_FORMAT_R32G32B32_FLOAT
  • DXGI_FORMAT_R16G16_FLOAT - presume-se que o terceiro componente seja 0
  • DXGI_FORMAT_R16G16B16A16_FLOAT - o componente A16 é ignorado; outros dados podem ser empacotados nele, por exemplo, definindo o stride de vértice como 6 bytes.
  • DXGI_FORMAT_R16G16_SNORM - presume-se que o terceiro componente seja 0
  • DXGI_FORMAT_R16G16B16A16_SNORM - o componente A16 é ignorado; outros dados podem ser empacotados nele, por exemplo, definindo o stride de vértice como 6 bytes.
Dispositivos de camada (tier) 1.1 dão suporte aos seguintes formatos adicionais:
  • DXGI_FORMAT_R16G16B16A16_UNORM - o componente A16 é ignorado; outros dados podem ser empacotados nele, por exemplo, definindo o stride de vértice como 6 bytes
  • DXGI_FORMAT_R16G16_UNORM - presume-se que o terceiro componente seja 0
  • DXGI_FORMAT_R10G10B10A2_UNORM - o componente A2 é ignorado; o stride deve ser de 4 bytes
  • DXGI_FORMAT_R8G8B8A8_UNORM - o componente A8 é ignorado; outros dados podem ser empacotados nele, por exemplo, definindo o stride de vértice como 3 bytes
  • DXGI_FORMAT_R8G8_UNORM - presume-se que o terceiro componente seja 0
  • DXGI_FORMAT_R8G8B8A8_SNORM - o componente A8 é ignorado; outros dados podem ser empacotados nele, por exemplo, definindo o stride de vértice como 3 bytes
  • DXGI_FORMAT_R8G8_SNORM - presume-se que o terceiro componente seja 0
IndexCount
Tipo: UINT
Número de índices em IndexBuffer. Deve ser 0 se IndexBuffer for NULL. VertexCount
Tipo: UINT
Número de vértices em VertexBuffer. IndexBuffer
Tipo: D3D12_GPU_VIRTUAL_ADDRESS
Matriz de índices de vértices. Se for NULL, os triângulos não são indexados. Assim como em gráficos, o endereço deve estar alinhado ao tamanho de IndexFormat. A memória apontada deve estar no estado D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE. Observe que, se um aplicativo quiser compartilhar entradas de buffer de índice entre o assembler de entrada de gráficos e a entrada de build da estrutura de aceleração de raytracing, ele sempre poderá colocar um recurso em uma combinação de estados de leitura simultaneamente, por exemplo, D3D12_RESOURCE_STATE_INDEX_BUFFER | D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE. VertexBuffer
Tipo: D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE
Matriz de vértices, incluindo um stride. O alinhamento do endereço e do stride 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. Ao contrário de gráficos, não há restrição quanto ao stride, exceto que somente os 32 bits inferiores do valor são usados; o campo é UINT64 apenas para que os campos vizinhos fiquem alinhados de forma limpa/óbvia em todos os lugares. Espera-se que a posição de cada vértice esteja no endereço inicial do intervalo de stride, e qualquer espaço excedente é ignorado pelos builds de estrutura de aceleração. Esse espaço excedente pode conter outros dados do aplicativo, como atributos de vértice, que o aplicativo é responsável por buscar manualmente nos sombreadores, estejam eles intercalados em buffers de vértice ou em outro lugar. A memória apontada deve estar no estado D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE. Observe que, se um aplicativo quiser compartilhar entradas de buffer de vértice entre o assembler de entrada de gráficos e a entrada de build da estrutura de aceleração de raytracing, ele sempre poderá colocar um recurso em uma combinação de estados de leitura simultaneamente, por exemplo, D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER | D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE

Requisitos

Cabeçalho: d3d12_xs.h
Biblioteca: d3d12_xs.lib
Plataformas com suporte: consoles XBOX Series
Última modificação em 6 de outubro de 2026