estrutura D3D12_RAYTRACING_INSTANCE_DESC (d3d12.h)
Descreve uma instância de uma estrutura de aceleração de raytracing usada na memória da GPU durante o processo de build da estrutura de aceleração.
Sintaxe
typedef struct D3D12_RAYTRACING_INSTANCE_DESC {
FLOAT Transform[3][4];
UINT InstanceID : 24;
UINT InstanceMask : 8;
UINT InstanceContributionToHitGroupIndex : 24;
UINT Flags : 8;
D3D12_GPU_VIRTUAL_ADDRESS AccelerationStructure;
} D3D12_RAYTRACING_INSTANCE_DESC;
Membros
Transform[3]
Tipo: FLOAT [3][4]
Uma matriz de transformação 3x4 no layout de linha principal que representa a transformação de instância para mundo. As implementações transformam raios, em vez de transformar toda a geometria ou AABBs.
Observação
O layout de Transform
é uma transposição de como as matrizes afim são normalmente armazenadas na memória. Em vez de quatro 3 vetores, Transform
é disposto como três quatro vetores.
InstanceID
Tipo: UINT : 24
Um valor arbitrário de 24 bits que pode ser acessado usando a InstanceID
função intrínseca em tipos de sombreador com suporte.
InstanceMask
Tipo: UINT : 8
Uma máscara de 8 bits atribuída à instância , que pode ser usada para incluir/rejeitar grupos de instâncias por raio. Se o valor for zero, a instância nunca será incluída, portanto, normalmente, isso deve ser definido como um valor diferente de zero. Para obter mais informações, consulte o InstanceInclusionMask
parâmetro para a função TraceRay .
InstanceContributionToHitGroupIndex
Tipo: UINT : 24
Um valor arbitrário de 24 bits que representa a contribuição por instância para adicionar à indexação de tabela de sombreador para selecionar o grupo de ocorrências a ser usado.
Flags
Tipo: UINT : 8
Uma máscara de 8 bits que representa sinalizadores de D3D12_RAYTRACING_INSTANCE_FLAGS a serem aplicados à instância.
AccelerationStructure
Tipo: D3D12_GPU_VIRTUAL_ADDRESS
Endereço da estrutura de aceleração de nível inferior que está sendo instânciada. O endereço deve ser alinhado a 256 bytes, definido como D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT. Qualquer estrutura de aceleração existente passada aqui já teria sido necessária para ser colocada com esse alinhamento.
A memória apontada deve estar no estado D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.
Comentários
Essa definição de struct C++ será útil se você estiver gerando dados de instância na CPU primeiro e, em seguida, carregando para a GPU. Mas seu aplicativo também é livre para gerar descrições de instância diretamente na memória da GPU (de sombreadores de computação, por exemplo) seguindo o mesmo layout.
Requisitos
Cabeçalho | d3d12.h |