TraceRay-Funktion
Sendet einen Strahl in eine Suche nach Treffern in einer Beschleunigungsstruktur.
Syntax
Diese systeminterne Funktionsdefinition 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 Fehl fehl.
RayFlags
Gültige Kombination von ray_flag-Werten. Nur definierte Rayflags werden vom System propagiert, d. h., sie sind für die systeminterne RayFlags-Shader-Systemstruktur sichtbar.
InstanceInclusionMask
Eine ganze Zahl ohne Vorzeichen, deren untere 8 Bits verwendet werden, um geometry-Instanzen ein- oder abzulehnen, die auf instanceMask in jeder Instanz basieren. Beispiel:
if(!((InstanceInclusionMask & InstanceMask) & 0xff)) { //ignore intersection }
RayContributionToHitGroupIndex
Eine ganze Zahl ohne Vorzeichen, die den Offset angibt, der Adressierungsberechnungen 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 Stride angibt, der mit GeometryContributionToHitGroupIndex multipliziert werden soll. Dies ist nur der 0-basierte Index, den die Geometrie von der App in ihrer Beschleunigungsstruktur auf unterer Ebene bereitgestellt hat. Es werden nur die unteren 16 Bits dieses Multiplikatorwerts verwendet.
MissShaderIndex
Eine ganze Zahl ohne Vorzeichen, die den Index des Fehl-Shaders innerhalb 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 durch Shader 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: