estructura D3D12_RAYTRACING_INSTANCE_DESC (d3d12.h)

Describe una instancia de una estructura de aceleración raytracing usada en la memoria de GPU durante el proceso de compilación de la estructura de aceleración.

Sintaxis

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;

Miembros

Transform[3]

Tipo: FLOAT [3][4]

Matriz de transformación 3x4 en diseño principal de fila que representa la transformación de instancia a mundo. Las implementaciones transforman los rayos, en lugar de transformar toda la geometría o AABB.

Nota:

El diseño de Transform es una transposición de la forma en que las matrices afín se almacenan normalmente en la memoria. En lugar de cuatro vectores 3, Transform se dispone como tres vectores 4.

InstanceID

Tipo: UINT : 24

Valor arbitrario de 24 bits al que se puede acceder mediante la InstanceID función intrínseca en tipos de sombreador admitidos.

InstanceMask

Tipo: UINT : 8

Máscara de 8 bits asignada a la instancia, que se puede usar para incluir o rechazar grupos de instancias por rayos. Si el valor es cero, la instancia nunca se incluirá, por lo que normalmente se debe establecer en un valor distinto de cero. Para obtener más información, consulte el InstanceInclusionMask parámetro para la función TraceRay .

InstanceContributionToHitGroupIndex

Tipo: UINT : 24

Valor arbitrario de 24 bits que representa la contribución por instancia para agregar a la indexación de tabla de sombreador para seleccionar el grupo de aciertos que se va a usar.

Flags

Tipo: UINT : 8

Máscara de 8 bits que representa marcas de D3D12_RAYTRACING_INSTANCE_FLAGS que se aplicarán a la instancia.

AccelerationStructure

Tipo: D3D12_GPU_VIRTUAL_ADDRESS

Dirección de la estructura de aceleración de nivel inferior que se está instanciando. La dirección debe estar alineada con 256 bytes, definida como D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT. Cualquier estructura de aceleración existente pasada aquí ya habría sido necesaria para colocarse con dicha alineación.

La memoria a la que se apunta debe estar en estado D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.

Comentarios

Esta definición de estructura de C++ es útil si se generan datos de instancia en la CPU en primer lugar y, a continuación, se cargan en la GPU. Pero la aplicación también es libre de generar descripciones de instancias directamente en la memoria de GPU (desde sombreadores de proceso, por ejemplo) siguiendo el mismo diseño.

Requisitos

   
Encabezado d3d12.h