Freigeben über


TraceRay-Funktion

Sendet einen Ray in eine Suche nach Treffern in einer Beschleunigungsstruktur.

Syntax

Diese definition von intrinsischen Funktionen entspricht der folgenden Funktionsvorlage:

Template<payload_t>
void TraceRay(RaytracingAccelerationStructure AccelerationStructure,
              uint RayFlags,
              uint InstanceInclusionMask,
              uint RayContributionToHitGroupIndex,
              uint MultiplierForGeometryContributionToHitGroupIndex,
              uint MissShaderIndex,
              RayDesc Ray,
              inout payload_t Payload);

Parameter

AccelerationStructure

Die zu verwendende Beschleunigungsstruktur der obersten Ebene. Das Angeben einer NULL-Beschleunigungsstruktur erzwingt einen Fehler.

RayFlags

Gültige Kombination von ray_flag Werten. Nur definierte Rayflags werden vom System weitergegeben, d. h. sie sind für den intrinsischen RayFlags-Shader sichtbar.

InstanceInclusionMask

Eine ganze Zahl ohne Vorzeichen, von der die unteren 8 Bits zum Einschließen oder Ablehnen von Geometrieinstanzen basierend auf der InstanceMask in jedem instance verwendet werden. Beispiel:

if(!((InstanceInclusionMask & InstanceMask) & 0xff)) { //ignore intersection }

RayContributionToHitGroupIndex

Eine ganze Zahl ohne Vorzeichen, die den Offset angibt, der in Adressberechnungen in Shadertabellen für die Treffergruppenindizierung hinzugefügt werden soll. Es werden nur die unteren 4 Bits dieses Werts verwendet.

MultiplierForGeometryContributionToHitGroupIndex

Eine ganze Zahl ohne Vorzeichen, die den Schritt angibt, der mit GeometryContributionToHitGroupIndex multipliziert werden soll. Dabei handelt es sich nur um den 0-basierten Index, den die Geometrie von der App in ihrer Beschleunigungsstruktur der unteren Ebene bereitgestellt hat. Es werden nur die unteren 16 Bits dieses Multiplikatorwerts verwendet.

MissShaderIndex

Eine ganze Zahl ohne Vorzeichen, die den Index des Miss-Shaders in einer Shadertabelle angibt.

Ray

Ein RayDesc , der den zu verfolgenden Strahl darstellt.

Payload

Eine benutzerdefinierte Raynutzlast, auf die sowohl für die Eingabe als auch für die Ausgabe von Shadern zugegriffen wird, die während des Raytracings aufgerufen werden. Nach Abschluss von TraceRay kann der Aufrufer auch auf die Nutzlast zugreifen.

Rückgabewert

void

Bemerkungen

Diese Funktion kann von den folgenden Raytracing-Shadertypen aufgerufen werden:

Siehe auch

Direct3D 12-Raytracing, HLSL-Referenz