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