D3D12_RAY_FLAGS-Enumeration (d3d12.h)

An die TraceRay-Funktion übergebene Flags, um Transparenz, Culling und Early-Out-Verhalten zu überschreiben.

Syntax

typedef enum D3D12_RAY_FLAGS {
  D3D12_RAY_FLAG_NONE = 0,
  D3D12_RAY_FLAG_FORCE_OPAQUE = 0x1,
  D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 0x2,
  D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x4,
  D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 0x8,
  D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 0x10,
  D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 0x20,
  D3D12_RAY_FLAG_CULL_OPAQUE = 0x40,
  D3D12_RAY_FLAG_CULL_NON_OPAQUE = 0x80,
  D3D12_RAY_FLAG_SKIP_TRIANGLES,
  D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES
} ;

Konstanten

 
D3D12_RAY_FLAG_NONE
Wert: 0
Keine Optionen ausgewählt.
D3D12_RAY_FLAG_FORCE_OPAQUE
Wert: 0x1
Alle ray-primitiven Schnittmengen, die in einem Raytrace vorkommen, werden als undurchsichtig behandelt. Daher werden keine Treffer-Shader 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 gegenseitig mit RAY_FLAG_FORCE_NON_OPAQUE, RAY_FLAG_CULL_OPAQUE und RAY_FLAG_CULL_NON_OPAQUE aus.
D3D12_RAY_FLAG_FORCE_NON_OPAQUE
Wert: 0x2
Alle ray-primitiven Schnittmengen, die in einem Raytrace vorkommen, werden als nicht undurchsichtig 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 instance Flags auf dem instance, der getroffen wurde. Dieses Flag schließt sich gegenseitig mit RAY_FLAG_FORCE_\OPAQUE, RAY_FLAG_CULL_OPAQUE und RAY_FLAG_CULL_NON_OPAQUE aus.
D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH
Wert: 0x4
Die erste ray-primitive Schnittmenge, die in einem Raytrace gefunden wird, bewirkt automatisch , dass AcceptHitAndEndSearch unmittelbar nach dem Treffershader aufgerufen wird, einschließlich, wenn kein Treffershader vorhanden ist.

Die einzige Ausnahme ist, wenn der vorherige Hit-Shader IgnoreHit aufruft. In diesem Fall bleibt der Strahl unbeeinflusst, sodass der nächste Treffer zu einem anderen Kandidaten wird, der der erste Treffer ist. Damit diese Ausnahme angewendet wird, muss der beliebige Treffer-Shader tatsächlich ausgeführt werden. Wenn also der beliebige Treffer-Shader übersprungen wird, weil der Treffer als undurchsichtig behandelt wird (z. B. aufgrund 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 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 einzelner Treffer gefunden werden muss.
D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER
Wert: 0x8
Selbst wenn mindestens ein Treffer festgelegt wurde und die Treffergruppe für den nächstgelegenen Treffer einen nächstgelegenen Treffer-Shader enthält, überspringen Sie die Ausführung dieses Shaders.
D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES
Wert: 0x10
Ermöglicht das Culling von nach hinten gerichteten Dreiecken. Unter D3D12_RAYTRACING_INSTANCE_FLAGS können Sie auswählen, welche Dreiecke instance nach hinten ausgerichtet sind.

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

Auf andere Geometrietypen als D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES hat dieses Flag keine Auswirkung.

Dieses Flag schließt sich mit RAY_FLAG_CULL_FRONT_FACING_TRIANGLES gegenseitig aus.
D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES
Wert: 0x20
Ermöglicht das Abknulen von nach vorne gerichteten Dreiecken. Unter D3D12_RAYTRACING_INSTANCE_FLAGS können Sie auswählen, welche Dreiecke instance nach hinten ausgerichtet sind.

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

Auf andere Geometrietypen als D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES hat dieses Flag keine Auswirkung.

Dieses Flag schließt sich mit RAY_FLAG_CULL_FRONT_FACING_TRIANGLES gegenseitig aus.
D3D12_RAY_FLAG_CULL_OPAQUE
Wert: 0x40
Ullt alle Primitiven, die basierend auf ihrer Geometrie und instance Flags als undurchsichtig gelten.

Dieses Flag schließt sich gegenseitig mit RAY_FLAG_FORCE_OPAQUE, RAY_FLAG_FORCE_NON_OPAQUE und RAY_FLAG_CULL_NON_OPAQUE aus.
D3D12_RAY_FLAG_CULL_NON_OPAQUE
Wert: 0x80
Ullt alle Grundtypen, die basierend auf ihrer Geometrie und instance Flags als nicht undurchsichtig gelten.

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

Anforderungen

   
Kopfzeile d3d12.h