D3D12_RAYTRACING_INSTANCE_DESC struttura (d3d12.h)

Descrive un'istanza di una struttura di accelerazione raytracing usata nella memoria GPU durante il processo di compilazione della struttura di accelerazione.

Sintassi

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;

Members

Transform[3]

Tipo: FLOAT [3][4]

Matrice di trasformazione 3x4 nel layout principale della riga che rappresenta la trasformazione da istanza a mondo. Le implementazioni trasformano i raggi, anziché trasformare tutte le geometrie o gli AABB.

Nota

Il layout di Transform è un trasposto del modo in cui le matrici affine vengono in genere archiviate in memoria. Invece di quattro vettori 3, Transform viene disposto come tre vettori 4.

InstanceID

Tipo: UINT : 24

Valore arbitrario a 24 bit a cui è possibile accedere usando la InstanceID funzione intrinseca nei tipi shader supportati.

InstanceMask

Tipo: UINT : 8

Maschera a 8 bit assegnata all'istanza, che può essere usata per includere/rifiutare gruppi di istanze su base a raggio. Se il valore è zero, l'istanza non verrà mai inclusa, quindi in genere questa opzione deve essere impostata su un valore diverso da zero. Per altre informazioni, vedere il InstanceInclusionMask parametro della funzione TraceRay .

InstanceContributionToHitGroupIndex

Tipo: UINT : 24

Valore arbitrario a 24 bit che rappresenta il contributo per istanza per aggiungere l'indicizzazione della tabella shader per selezionare il gruppo di hit da usare.

Flags

Tipo: UINT : 8

Maschera a 8 bit che rappresenta i flag da D3D12_RAYTRACING_INSTANCE_FLAGS da applicare all'istanza.

AccelerationStructure

Tipo: D3D12_GPU_VIRTUAL_ADDRESS

Indirizzo della struttura di accelerazione a livello inferiore istanza. L'indirizzo deve essere allineato a 256 byte, definito come D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT. Qualsiasi struttura di accelerazione esistente passata qui sarebbe già stata necessaria per essere posizionata con tale allineamento.

La memoria a cui punta deve essere in stato D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.

Commenti

Questa definizione di struct C++ è utile se si generano dati di istanza nella CPU prima, quindi si carica nella GPU. Ma l'applicazione è anche libera di generare descrizioni di istanze direttamente nella memoria GPU (da shader di calcolo, ad esempio) seguendo lo stesso layout.

Requisiti

   
Intestazione d3d12.h