Enumeração de RAY_FLAG

Sinalizadores passados para a função TraceRay para substituir a transparência, o corte e o comportamento inicial.

Sintaxe

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

Constantes

RAY_FLAG_NONE

Nenhuma opção selecionada.

RAY_FLAG_FORCE_OPAQUE

Todas as interseções ray-primitivas encontradas em um raytrace são tratadas como opacas. Portanto, nenhum sombreador de ocorrência será executado independentemente de a geometria de ocorrência especificar ou não D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE e independentemente dos sinalizadores de instância na instância que foi atingida.

Esse sinalizador é mutuamente exclusivo com RAY_FLAG_FORCE_NON_OPAQUE, RAY_FLAG_CULL_OPAQUE e RAY_FLAG_CULL_NON_OPAQUE.

RAY_FLAG_FORCE_NON_OPAQUE

Todas as interseções ray-primitivas encontradas em um raytrace são tratadas como não opacas. Portanto, todos os sombreadores de ocorrência, se presentes, serão executados independentemente de a geometria de ocorrência especificar ou não D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE e independentemente dos sinalizadores de instância na instância que foi atingida. Esse sinalizador é mutuamente exclusivo com RAY_FLAG_FORCE_\OPAQUE, RAY_FLAG_CULL_OPAQUE e RAY_FLAG_CULL_NON_OPAQUE.

RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH

A primeira interseção ray-primitive encontrada em um raytrace automaticamente faz com que AcceptHitAndEndSearch seja chamado imediatamente após qualquer sombreador de ocorrência, incluindo se não houver nenhum sombreador de ocorrência.

A única exceção é quando o sombreador de ocorrência anterior chama IgnoreHit, nesse caso, o raio continua não afetado de modo que o próximo hit se torne outro candidato a ser o primeiro hit. Para que essa exceção seja aplicada, o sombreador de qualquer ocorrência deve realmente ser executado. Portanto, se o sombreador de qualquer ocorrência for ignorado porque o hit é tratado como opaco (por exemplo, devido a RAY_FLAG_FORCE_OPAQUE ou D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE ou D3D12_RAYTRACING_INSTANCE_FLAG_OPAQUE sendo definido), AcceptHitAndEndSearch é chamado.

Se um sombreador de clique mais próximo estiver presente na primeira ocorrência, ele será invocado, a menos que RAY_FLAG_SKIP_CLOSEST_HIT_SHADER também esteja presente. O único golpe encontrado é considerado "mais próximo", embora outros possíveis golpes que possam estar mais próximos do raio possam não ter sido visitados.

Um uso típico para esse sinalizador é para sombras, em que apenas um único clique precisa ser encontrado.

RAY_FLAG_SKIP_CLOSEST_HIT_SHADER

Mesmo que pelo menos um hit tenha sido confirmado, e o grupo de ocorrências para o hit mais próximo contiver um sombreador de clique mais próximo, ignore a execução desse sombreador.

RAY_FLAG_CULL_BACK_FACING_TRIANGLES

Habilita o abate de triângulos voltados para trás. Confira D3D12_RAYTRACING_INSTANCE_FLAGS para selecionar quais triângulos estão voltados para trás, por instância.

Em instâncias que especificam D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE, esse sinalizador não tem efeito.

Em tipos de geometria diferentes de D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES, esse sinalizador não tem efeito.

Esse sinalizador é mutuamente exclusivo com RAY_FLAG_CULL_FRONT_FACING_TRIANGLES.

RAY_FLAG_CULL_FRONT_FACING_TRIANGLES

Habilita o abate de triângulos frontais. Confira D3D12_RAYTRACING_INSTANCE_FLAGS para selecionar quais triângulos estão voltados para trás, por instância.

Em instâncias que especificam D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE, esse sinalizador não tem efeito.

Em tipos de geometria diferentes de D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES, esse sinalizador não tem efeito.

Esse sinalizador é mutuamente exclusivo com RAY_FLAG_CULL_BACK_FACING_TRIANGLES.

RAY_FLAG_CULL_OPAQUE

Elimina todos os primitivos que são considerados opacos com base em seus sinalizadores de geometria e instância.

Esse sinalizador é mutuamente exclusivo com RAY_FLAG_FORCE_OPAQUE, RAY_FLAG_FORCE_NON_OPAQUE e RAY_FLAG_CULL_NON_OPAQUE.

RAY_FLAG_CULL_NON_OPAQUE

Elimina todos os primitivos que são considerados não opacos com base em seus sinalizadores de geometria e instância.

Esse sinalizador é mutuamente exclusivo com RAY_FLAG_FORCE_OPAQUE, RAY_FLAG_FORCE_NON_OPAQUE e RAY_FLAG_CULL_OPAQUE.

Requisitos

Confira também

Referência HLSL de raytracing do Direct3D 12