Sintaxe
Membros
Transform3x4Tipo: 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
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.
- 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
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.hBiblioteca: d3d12_xs.lib
Plataformas com suporte: consoles XBOX Series
