Compartilhar via


D3D12_RAY_FLAGS enumeração (d3d12.h)

Sinalizadores passados para a função TraceRay para substituir a transparência, o abate e o comportamento de início.

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

Constantes

 
D3D12_RAY_FLAG_NONE
Valor: 0
Nenhuma opção selecionada.
D3D12_RAY_FLAG_FORCE_OPAQUE
Valor: 0x1
Todas as interseções ray-primitive 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.
D3D12_RAY_FLAG_FORCE_NON_OPAQUE
Valor: 0x2
Todas as interseções ray-primitive 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.
D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH
Valor: 0x4
A primeira interseção ray-primitive encontrada em um raytrace automaticamente faz com que AcceptHitAndEndSearch seja chamado imediatamente após o sombreador de qualquer 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 precisa ser realmente 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 ocorrência mais próximo estiver presente no primeiro clique, ele será invocado, a menos que RAY_FLAG_SKIP_CLOSEST_HIT_SHADER também esteja presente. O único golpe encontrado é considerado "mais próximo", mesmo que outros possíveis ataques 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.
D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER
Valor: 0x8
Mesmo que pelo menos um hit tenha sido confirmado, e o grupo de ocorrências do hit mais próximo contiver um sombreador de clique mais próximo, ignore a execução desse sombreador.
D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES
Valor: 0x10
Habilita o abate de triângulos voltados para trás. Consulte 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.
D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES
Valor: 0x20
Habilita o abate de triângulos frontais. Consulte 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.
D3D12_RAY_FLAG_CULL_OPAQUE
Valor: 0x40
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.
D3D12_RAY_FLAG_CULL_NON_OPAQUE
Valor: 0x80
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

   
Cabeçalho d3d12.h