D3D12_RAYTRACING_INSTANCE_DESC-Struktur (d3d12.h)
Beschreibt eine instance einer Raytracingbeschleunigungsstruktur, die während des Erstellungsprozesses der Beschleunigungsstruktur im GPU-Speicher verwendet wird.
Syntax
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;
Member
Transform[3]
Typ: FLOAT [3][4]
Eine 3x4-Transformationsmatrix im Zeilen-Hauptlayout, die die instance-in-Welt-Transformation darstellt. Implementierungen transformieren Strahlen, anstatt die gesamte Geometrie oder AABBs zu transformieren.
Hinweis
Das Layout von Transform
ist eine Transponierung davon, wie affine Matrizen normalerweise im Arbeitsspeicher gespeichert werden. Statt vier 3-Vektoren Transform
sind drei 4-Vektoren angelegt.
InstanceID
Typ: UINT : 24
Ein beliebiger 24-Bit-Wert, auf den mithilfe der InstanceID
systeminternen Funktion in unterstützten Shadertypen zugegriffen werden kann.
InstanceMask
Typ: UINT : 8
Eine dem instance zugewiesene 8-Bit-Maske, mit der Gruppen von Instanzen pro Ray eingeschlossen/abgelehnt werden können. Wenn der Wert 0 ist, wird der instance nie eingeschlossen. Daher sollte dies in der Regel auf einen Wert ungleich 0 festgelegt werden. Weitere Informationen finden Sie im InstanceInclusionMask
Parameter für die TraceRay-Funktion .
InstanceContributionToHitGroupIndex
Typ: UINT : 24
Ein beliebiger 24-Bit-Wert, der pro instance Beitrag darstellt, der zur Shadertabellenindizierung hinzugefügt werden soll, um die zu verwendende Treffergruppe auszuwählen.
Flags
Typ: UINT : 8
Eine 8-Bit-Maske, die Flags von D3D12_RAYTRACING_INSTANCE_FLAGS darstellt, die auf die instance angewendet werden sollen.
AccelerationStructure
Typ: D3D12_GPU_VIRTUAL_ADDRESS
Adresse der Beschleunigungsstruktur auf unterer Ebene, die instanziert wird. Die Adresse muss an 256 Bytes ausgerichtet sein, die als D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT definiert sind. Jede vorhandene Beschleunigungsstruktur, die hier übergeben wurde, hätte bereits mit einer solchen Ausrichtung platziert werden müssen.
Der Speicher, auf den verwiesen wird, muss sich im Zustand D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE befinden.
Hinweise
Diese C++-Strukturdefinition ist nützlich, wenn Sie zuerst instance Daten auf der CPU generieren und dann auf die GPU hochladen. Ihre Anwendung kann jedoch auch instance Beschreibungen direkt in den GPU-Speicher (aus Compute-Shadern für instance) nach demselben Layout generieren.
Anforderungen
Kopfzeile | d3d12.h |