Freigeben über


RAY_FLAG-Enumeration

An die TraceRay-Funktion übergebene Flags, um Transparenz, Culling und EarlyOut-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,
    RAY_FLAG_SKIP_TRIANGLES                  = 0x100,
    RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES      = 0x200,
}; 

Konstanten

RAY_FLAG_NONE

Keine Optionen ausgewählt.

RAY_FLAG_FORCE_OPAQUE

Alle schnittmengen, die in einem Raytrace gefunden werden, werden als undurchsichtig behandelt. Daher werden keine Treffershader ausgeführt, unabhängig davon, ob die Treffergeometrie D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE angibt oder nicht, und unabhängig von den instance Flags auf dem instance, der getroffen wurde.

Dieses Flag schließt 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 schnittmengen, die in einem Raytrace gefunden werden, werden als nicht undurchsichtig behandelt. Daher werden alle Treffershader, sofern vorhanden, unabhängig davon ausgeführt, ob die Treffergeometrie D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE angibt oder nicht, und unabhängig von den instance Flags auf dem instance, der getroffen wurde. Dieses Flag schließt 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 in einem Raytrace bewirkt automatisch, dass AcceptHitAndEndSearch unmittelbar nach dem Treffershader aufgerufen wird, auch wenn kein Treffershader vorhanden ist.

Die einzige Ausnahme ist, wenn der vorangehende Hit-Shader IgnoreHit aufruft. In diesem Fall bleibt der Strahl unverändert, sodass der nächste Treffer ein weiterer Kandidat für den ersten Treffer wird. Damit diese Ausnahme angewendet wird, muss der beliebige Treffershader tatsächlich ausgeführt werden. Wenn also der Treffershader übersprungen wird, weil der Treffer als undurchsichtig behandelt wird (z. B. aufgrund von RAY_FLAG_FORCE_OPAQUE, D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE oder D3D12_RAYTRACING_INSTANCE_FLAG_OPAQUE festgelegt wird), wird AcceptHitAndEndSearch aufgerufen.

Wenn beim ersten Treffer ein nächstgelegener Treffer vorhanden ist, wird er aufgerufen, es sei denn, RAY_FLAG_SKIP_CLOSEST_HIT_SHADER ist ebenfalls vorhanden. Der eine Treffer, der gefunden wurde, gilt als "am nächsten", obwohl andere potenzielle Treffer, die näher auf dem Strahl sein könnten, möglicherweise nicht besucht wurden.

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

RAY_FLAG_SKIP_CLOSEST_HIT_SHADER

Selbst wenn mindestens ein Treffer committet wurde und die Treffergruppe für den nächstgelegenen Treffer einen nächstgelegenen Treffershader enthält, überspringen Sie die Ausführung dieses Shaders.

RAY_FLAG_CULL_BACK_FACING_TRIANGLES

Ermöglicht das Culling von nach hinten gerichteten Dreiecken. Unter D3D12_RAYTRACING_INSTANCE_FLAGS können Sie auswählen, welche Dreiecke pro instance nach hinten gerichtet sind.

Auf Instanzen, die D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE angeben, hat dieses Flag keine Auswirkungen.

Auf andere Geometrietypen als D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES hat dieses Flag keine Auswirkungen.

Dieses Flag schließt sich mit RAY_FLAG_CULL_FRONT_FACING_TRIANGLES gegenseitig aus.

RAY_FLAG_CULL_FRONT_FACING_TRIANGLES

Ermöglicht das Culling von nach vorne gerichteten Dreiecken. Unter D3D12_RAYTRACING_INSTANCE_FLAGS können Sie auswählen, welche Dreiecke pro instance nach hinten gerichtet sind.

Auf Instanzen, die D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE angeben, hat dieses Flag keine Auswirkungen.

Auf andere Geometrietypen als D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES hat dieses Flag keine Auswirkungen.

Dieses Flag schließt sich mit RAY_FLAG_CULL_BACK_FACING_TRIANGLES gegenseitig aus.

RAY_FLAG_CULL_OPAQUE

Ulliert alle Grundtypen, die basierend auf ihrer Geometrie und instance Flags als undurchsichtig angesehen werden.

Dieses Flag schließt sich mit RAY_FLAG_FORCE_OPAQUE, RAY_FLAG_FORCE_NON_OPAQUE und RAY_FLAG_CULL_NON_OPAQUE gegenseitig aus.

RAY_FLAG_CULL_NON_OPAQUE

Ulliert alle Grundtypen, die als nicht undurchsichtig gelten, basierend auf ihrer Geometrie und instance Flags.

Dieses Flag schließt 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