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 |