Condividi tramite


enumerazione RAY_FLAG

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

Sintassi

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

Costanti

RAY_FLAG_NONE

Nessuna opzione selezionata.

RAY_FLAG_FORCE_OPAQUE

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.

RAY_FLAG_FORCE_NON_OPAQUE

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.

RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH

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.

RAY_FLAG_SKIP_CLOSEST_HIT_SHADER

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.

RAY_FLAG_CULL_BACK_FACING_TRIANGLES

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.

RAY_FLAG_CULL_FRONT_FACING_TRIANGLES

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 è a vicenda esclusivo con RAY_FLAG_CULL_BACK_FACING_TRIANGLES.

RAY_FLAG_CULL_OPAQUE

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.

RAY_FLAG_CULL_NON_OPAQUE

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

Vedi anche

Informazioni di riferimento su Direct3D 12 Raytracing HLSL