Sintaxe
typedef enum D3D12_RAY_FLAGS
{
D3D12_RAY_FLAG_NONE = 0x00,
D3D12_RAY_FLAG_FORCE_OPAQUE = 0x01,
D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 0x02,
D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x04,
D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 0x08,
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,
D3D12XBOX_RAY_FLAG_COHERENT_RAYS_HINT = 0x1000,
} D3D12_RAY_FLAGS
Constantes
| Constante | Descrição |
|---|---|
| D3D12_RAY_FLAG_NONE | Nenhuma opção selecionada. |
| D3D12_RAY_FLAG_FORCE_OPAQUE | Todas as interseções raio-primitiva encontradas em um traçado de raios são tratadas como opacas. Assim, nenhum sombreador any hit será executado, independentemente de a geometria atingida especificar D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE e independentemente dos sinalizadores da instância 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 | Todas as interseções raio-primitiva encontradas em um traçado de raios são tratadas como não opacas. Assim, os sombreadores any hit, se presentes, serão executados independentemente de a geometria atingida especificar D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE e independentemente dos sinalizadores da instância 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 | A primeira interseção raio-primitiva encontrada em um traçado de raios faz automaticamente com que AcceptHitAndEndSearch seja chamada imediatamente após o sombreador any hit, inclusive se não houver sombreador any hit. A única exceção é quando o sombreador any hit anterior chama IgnoreHit; nesse caso, o raio continua sem ser afetado, de modo que a próxima interseção se torna outra candidata a ser a primeira. Para que essa exceção se aplique, o sombreador any hit precisa realmente ser executado. Portanto, se o sombreador any hit for ignorado porque a interseção é tratada como opaca (por exemplo, devido a RAY_FLAG_FORCE_OPAQUE, D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE ou D3D12_RAYTRACING_INSTANCE_FLAG_OPAQUE estar definido), AcceptHitAndEndSearch será chamada. Se um sombreador closest hit estiver presente na primeira interseção, ele será invocado, a menos que RAY_FLAG_SKIP_CLOSEST_HIT_SHADER também esteja presente. A única interseção encontrada é considerada a “mais próxima”, mesmo que outras interseções potenciais que poderiam estar mais próximas no raio talvez não tenham sido visitadas. Um uso típico desse sinalizador é para sombras, em que apenas uma única interseção precisa ser encontrada. |
| D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER | Mesmo que pelo menos uma interseção tenha sido confirmada e o grupo de interseção da interseção mais próxima contenha um sombreador closest hit, ignora a execução desse sombreador. |
| D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES | Habilita a eliminação 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 | Habilita a eliminação de triângulos voltados para a frente. 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 | Elimina todas as primitivas consideradas opacas com base em sua geometria e nos sinalizadores de 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 | Elimina todas as primitivas consideradas não opacas com base em sua geometria e nos sinalizadores de instância. Esse sinalizador é mutuamente exclusivo com RAY_FLAG_FORCE_OPAQUE, RAY_FLAG_FORCE_NON_OPAQUE e RAY_FLAG_CULL_OPAQUE. |
| D3D12XBOX_RAY_FLAG_COHERENT_RAYS_HINT | Dica para o sistema de travessia de que os raios neste dispatch serão coerentes entre si. Pode tornar a travessia um pouco mais eficiente. |
Requisitos
Cabeçalho: d3d12_xs.hPlataformas compatíveis: XBOX Series X|S
