RAY _ FLAG-Enumeration

Flags, die an die TraceRay-Funktion übergeben werden, um Transparenz, Culling und Early Out-Verhalten zu überschreiben.

Syntax

enum RAY_FLAG : uint
{
    RAY_FLAG_NONE                            = 0x00,
    RAY_FLAG_FORCE_OPAQUE                    = 0x01,
    RAY_FLAG_FORCE_NON_OPAQUE                = 0x02,
    RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x04,
    RAY_FLAG_SKIP_CLOSEST_HIT_SHADER         = 0x08,
    RAY_FLAG_CULL_BACK_FACING_TRIANGLES      = 0x10,
    RAY_FLAG_CULL_FRONT_FACING_TRIANGLES     = 0x20,
    RAY_FLAG_CULL_OPAQUE                     = 0x40,
    RAY_FLAG_CULL_NON_OPAQUE                 = 0x80,
}; 

Konstanten

RAY _ FLAG _ NONE

Es wurden keine Optionen ausgewählt.

RAY _ FLAG _ FORCE _ OPAQUE

Alle ray-primitiven Schnittmengen, die in einem Raytrace gefunden werden, werden als nicht transparent behandelt. Daher werden keine Treffer-Shader ausgeführt, unabhängig davon, ob die Treffergeometrie D3D12 _ RAYTRACING _ GEOMETRY FLAG OPAQUE _ angibt, und unabhängig von den _ Instanzflags auf der Instanz, die erreicht wurde.

Dieses Flag schließen sich mit RAY _ FLAG _ FORCE NON _ _ OPAQUE, RAY FLAG _ _ CULL OPAQUE und RAY _ FLAG CULL NON _ _ _ _ OPAQUE gegenseitig aus.

RAY _ FLAG _ FORCE _ NON _ OPAQUE

Alle ray-primitiven Schnittmengen, die in einem Raytrace gefunden werden, werden als nicht deckend behandelt. Daher werden alle Treffer-Shader, sofern vorhanden, unabhängig davon ausgeführt, ob die Treffergeometrie D3D12 _ RAYTRACING _ GEOMETRY FLAG OPAQUE _ angibt, und unabhängig von den _ Instanzflags für die Instanz, die erreicht wurde. Dieses Flag schließen sich mit RAY _ FLAG _ FORCE_\OPAQUE, RAY _ FLAG _ CULL OPAQUE und RAY FLAG CULL NON OPAQUE gegenseitig _ _ _ _ _ aus.

RAY _ FLAG _ ACCEPT _ FIRST _ HIT _ AND _ END _ SEARCH

Die erste ray-primitive Schnittmenge, die in einem Raytrace gefunden wird, bewirkt automatisch, dass AcceptHitAndEndSearch unmittelbar nach dem Treffer-Shader aufgerufen wird, einschließlich, wenn kein Treffer-Shader vorhanden ist.

Die einzige Ausnahme ist, wenn der vorangehende Treffer-Shader IgnoreHit aufruft. In diesem Fall wird der Strahl nicht beeinträchtigt, sodass der nächste Treffer ein weiterer Kandidat für den ersten Treffer wird. Damit diese Ausnahme angewendet werden kann, muss jeder Treffer-Shader tatsächlich ausgeführt werden. Wenn also ein Beliebiger Treffer-Shader übersprungen wird, weil der Treffer als nicht transparent behandelt wird (z. B. weil RAY _ FLAG FORCE OPAQUE oder _ _ D3D12 _ RAYTRACING _ GEOMETRY FLAG OPAQUE oder _ _ D3D12 _ RAYTRACING _ INSTANCE FLAG OPAQUE festgelegt _ _ wird), wird AcceptHitAndEndSearch aufgerufen.

Wenn beim ersten Treffer ein nächstgelegener Treffer-Shader vorhanden ist, wird er aufgerufen, es sei denn, RAY _ FLAG _ SKIP _ CLOSEST HIT _ _ SHADER ist ebenfalls vorhanden. Der gefundene Treffer gilt als "am nächsten", auch wenn andere potenzielle Treffer, die sich möglicherweise näher am Strahl befinden, nicht besucht wurden.

Eine typische Verwendung dieses Flags ist für Schatten, bei denen nur ein einziger Treffer gefunden werden muss.

RAY _ FLAG _ SKIP _ CLOSEST _ HIT _ SHADER

Auch wenn für mindestens einen Treffer ein Commit ausgeführt wurde und die Treffergruppe für den nächsten Treffer einen nächstgelegenen Treffer-Shader enthält, überspringen Sie die Ausführung dieses Shaders.

RAY _ FLAG _ CULL _ BACK _ FACING _ TRIANGLES

Aktiviert das Culling von rückwärts gerichteten Dreiecken. Unter D3D12 RAYTRACING INSTANCE FLAGS (D3D12 _ RAYTRACING-INSTANZFLAGS) _ _ können Sie auswählen, welche Dreiecke pro Instanz wieder zurückgeblendet sind.

Auf Instanzen, die D3D12 _ RAYTRACING _ INSTANCE FLAG TRIANGLE _ _ _ CULL DISABLE _ angeben, hat dieses Flag keine Auswirkungen.

Bei anderen Geometrietypen als D3D12 _ RAYTRACING _ GEOMETRY _ TYPE _ TRIANGLES hat dieses Flag keine Auswirkungen.

Dieses Flag schließen sich mit RAY _ FLAG _ CULL FRONT FACING TRIANGLES gegenseitig _ _ _ aus.

RAY _ FLAG _ CULL _ FRONT _ FACING _ TRIANGLES

Aktiviert das Culling von dreiecksseitigen Vorderseiten. Unter D3D12 RAYTRACING INSTANCE FLAGS (D3D12 _ RAYTRACING-INSTANZFLAGS) _ _ können Sie auswählen, welche Dreiecke pro Instanz wieder zurückgeblendet sind.

Auf Instanzen, die D3D12 _ RAYTRACING _ INSTANCE FLAG TRIANGLE _ _ _ CULL DISABLE _ angeben, hat dieses Flag keine Auswirkungen.

Bei anderen Geometrietypen als D3D12 _ RAYTRACING _ GEOMETRY _ TYPE _ TRIANGLES hat dieses Flag keine Auswirkungen.

Dieses Flag schließen sich mit RAY _ FLAG _ CULL BACK FACING TRIANGLES gegenseitig _ _ _ aus.

RAY _ FLAG _ CULL _ OPAQUE

Ullt alle Primitive, die basierend auf ihrer Geometrie und ihren Instanzflags als nicht transparent betrachtet werden.

Dieses Flag schließen sich mit RAY _ FLAG _ FORCE _ OPAQUE, RAY FLAG FORCE _ NON OPAQUE und RAY FLAG _ CULL NON OPAQUE gegenseitig _ _ _ _ _ _ aus.

RAY _ FLAG _ CULL _ NON _ OPAQUE

Ullt alle Primitive, die basierend auf ihrer Geometrie und ihren Instanzflags als nicht deckend betrachtet werden.

Dieses Flag schließen sich mit RAY _ FLAG _ FORCE _ OPAQUE, RAY FLAG FORCE NON OPAQUE und RAY FLAG CULL OPAQUE gegenseitig _ _ _ _ _ _ _ aus.

Anforderungen

Weitere Informationen

Direct3D 12-Raytracing, HLSL-Referenz