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