Compartilhar via


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