enumerazione D3D12_RAY_FLAGS (d3d12.h)

Flag passati alla funzione TraceRay per eseguire l'override della trasparenza, dell'analisi e del comportamento iniziale.

Sintassi

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
} ;

Costanti

 
D3D12_RAY_FLAG_NONE
Valore: 0
Nessuna opzione selezionata.
D3D12_RAY_FLAG_FORCE_OPAQUE
Valore: 0x1
Tutte le intersezioni ray-primitive rilevate in un raytrace vengono considerate opache. Pertanto, nessun hit shader verrà eseguito indipendentemente dal fatto che la geometria di hit specifica D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE e indipendentemente dai flag di istanza nell'istanza che è stata raggiunta.

Questo flag si escludono a vicenda con RAY_FLAG_FORCE_NON_OPAQUE, RAY_FLAG_CULL_OPAQUE e RAY_FLAG_CULL_NON_OPAQUE.
D3D12_RAY_FLAG_FORCE_NON_OPAQUE
Valore: 0x2
Tutte le intersezioni ray-primitive rilevate in un raytrace vengono considerate non opache. Pertanto, eventuali hit shader, se presenti, verranno eseguiti indipendentemente dal fatto che la geometria di hit specifica D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE e indipendentemente dai flag di istanza nell'istanza che è stata raggiunta. Questo flag si escludono a vicenda con RAY_FLAG_FORCE_\OPAQUE, RAY_FLAG_CULL_OPAQUE e RAY_FLAG_CULL_NON_OPAQUE.
D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH
Valore: 0x4
La prima intersezione ray-primitive rilevata in un raytrace causa automaticamente la chiamata di AcceptHitAndEndSearch immediatamente dopo l'hit shader, incluso se non è presente alcun hit shader.

L'unica eccezione è quando l'ultimo hit shader chiama IgnoreHit, nel qual caso il raggio continua a non essere interessato in modo che il successivo hit diventi un altro candidato per essere il primo colpo. Per applicare questa eccezione, l'eventuale hit shader deve essere effettivamente eseguito. Quindi, se l'hit shader viene ignorato perché il colpo viene considerato opaco (ad esempio, a causa di RAY_FLAG_FORCE_OPAQUE o D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE o D3D12_RAYTRACING_INSTANCE_FLAG_OPAQUE impostato), viene chiamato AcceptHitAndEndSearch .

Se un hit shader più vicino è presente al primo colpo, viene richiamato a meno che non sia presente anche RAY_FLAG_SKIP_CLOSEST_HIT_SHADER. L'unico colpo trovato è considerato "più vicino", anche se altri potenziali colpi che potrebbero essere più vicini al raggio potrebbero non essere stati visitati.

Un uso tipico per questo flag è per le ombreggiature, dove deve essere trovato solo un singolo colpo.
D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER
Valore: 0x8
Anche se almeno un hit è stato eseguito e il gruppo di hit per il hit più vicino contiene un hit shader più vicino, ignorare l'esecuzione di tale shader.
D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES
Valore: 0x10
Abilita l'abbattimento dei triangoli visi indietro. Vedere D3D12_RAYTRACING_INSTANCE_FLAGS per selezionare i triangoli che si trovano di fronte, per istanza.

Nelle istanze che specificano D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE, questo flag non ha alcun effetto.

Nei tipi geometry diversi da D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES, questo flag non ha alcun effetto.

Questo flag si escludono a vicenda con RAY_FLAG_CULL_FRONT_FACING_TRIANGLES.
D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES
Valore: 0x20
Abilita l'abbattimento dei triangoli frontali. Vedere D3D12_RAYTRACING_INSTANCE_FLAGS per selezionare i triangoli che si trovano di fronte, per istanza.

Nelle istanze che specificano D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE, questo flag non ha alcun effetto.

Nei tipi geometry diversi da D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES, questo flag non ha alcun effetto.

Questo flag si escludono a vicenda con RAY_FLAG_CULL_FRONT_FACING_TRIANGLES.
D3D12_RAY_FLAG_CULL_OPAQUE
Valore: 0x40
Culls tutte le primitive considerate opache in base ai flag di geometria e istanza.

Questo flag è a vicenda esclusivo con RAY_FLAG_FORCE_OPAQUE, RAY_FLAG_FORCE_NON_OPAQUE e RAY_FLAG_CULL_NON_OPAQUE.
D3D12_RAY_FLAG_CULL_NON_OPAQUE
Valore: 0x80
Elimina tutte le primitive considerate non opache in base ai flag di geometria e istanza.

Questo flag è a vicenda esclusivo con RAY_FLAG_FORCE_OPAQUE, RAY_FLAG_FORCE_NON_OPAQUE e RAY_FLAG_CULL_OPAQUE.

Requisiti

   
Intestazione d3d12.h