Compartir a través de


Enumeración RAY_FLAG

Marcas pasadas a la función TraceRay para invalidar la transparencia, la selección y el comportamiento anticipado.

Syntax

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

No hay opciones seleccionadas.

RAY_FLAG_FORCE_OPAQUE

Todas las intersecciones primitivas de rayos encontradas en un raytrace se tratan como opacos. Por lo tanto, ningún sombreador de aciertos se ejecutará independientemente de si la geometría de aciertos especifica D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE e independientemente de las marcas de instancia de la instancia a la que se ha alcanzado.

Esta marca es mutuamente excluyente con RAY_FLAG_FORCE_NON_OPAQUE, RAY_FLAG_CULL_OPAQUE y RAY_FLAG_CULL_NON_OPAQUE.

RAY_FLAG_FORCE_NON_OPAQUE

Todas las intersecciones primitivas de rayos encontradas en un raytrace se tratan como no opacos. Por lo tanto, los sombreadores de aciertos, si están presentes, se ejecutarán independientemente de si la geometría de aciertos especifica D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE e independientemente de las marcas de instancia de la instancia a la que se ha alcanzado. Esta marca es mutuamente excluyente con RAY_FLAG_FORCE_\OPAQUE, RAY_FLAG_CULL_OPAQUE y RAY_FLAG_CULL_NON_OPAQUE.

RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH

La primera intersección primitiva de rayos encontrada en un raytrace hace que se llame automáticamente a AcceptHitAndEndSearch inmediatamente después del sombreador de golpes, incluido si no hay ningún sombreador de aciertos.

La única excepción es cuando el sombreador de posicionamiento anterior llama a IgnoreHit, en cuyo caso el rayo continúa sin verse afectado de modo que el siguiente golpe se convierta en otro candidato para ser el primer acierto. Para que se aplique esta excepción, el sombreador de aciertos debe ejecutarse realmente. Por lo tanto, si se omite cualquier sombreador de aciertos porque el hit se trata como opaco (por ejemplo, debido a RAY_FLAG_FORCE_OPAQUE o D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE o D3D12_RAYTRACING_INSTANCE_FLAG_OPAQUE se establece), se llama a AcceptHitAndEndSearch .

Si hay un sombreador de aciertos más cercano en el primer acierto, se invoca a menos que RAY_FLAG_SKIP_CLOSEST_HIT_SHADER también esté presente. El golpe que se encontró se considera "más cercano", aunque otros posibles aciertos que podrían estar más cerca del rayo pueden no haberse visitado.

Un uso típico de esta marca es para sombras, donde solo es necesario encontrar un solo golpe.

RAY_FLAG_SKIP_CLOSEST_HIT_SHADER

Incluso si se ha confirmado al menos un golpe y el grupo de aciertos para el hit más cercano contiene un sombreador de aciertos más cercano, omita la ejecución de ese sombreador.

RAY_FLAG_CULL_BACK_FACING_TRIANGLES

Permite la selección de triángulos orientados hacia atrás. Consulte D3D12_RAYTRACING_INSTANCE_FLAGS para seleccionar qué triángulos están orientados hacia atrás, por instancia.

En las instancias que especifican D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE, esta marca no tiene ningún efecto.

En los tipos de geometría distintos de D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES, esta marca no tiene ningún efecto.

Esta marca es mutuamente excluyente con RAY_FLAG_CULL_FRONT_FACING_TRIANGLES.

RAY_FLAG_CULL_FRONT_FACING_TRIANGLES

Permite la selección de triángulos frontales. Consulte D3D12_RAYTRACING_INSTANCE_FLAGS para seleccionar qué triángulos están orientados hacia atrás, por instancia.

En las instancias que especifican D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE, esta marca no tiene ningún efecto.

En los tipos de geometría distintos de D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES, esta marca no tiene ningún efecto.

Esta marca es mutuamente excluyente con RAY_FLAG_CULL_BACK_FACING_TRIANGLES.

RAY_FLAG_CULL_OPAQUE

Selecciona todos los primitivos que se consideran opacos en función de sus marcas de geometría e instancia.

Esta marca es mutuamente excluyente con RAY_FLAG_FORCE_OPAQUE, RAY_FLAG_FORCE_NON_OPAQUE y RAY_FLAG_CULL_NON_OPAQUE.

RAY_FLAG_CULL_NON_OPAQUE

Selecciona todos los primitivos que se consideran no opacos en función de sus marcas de geometría e instancia.

Esta marca es mutuamente excluyente con RAY_FLAG_FORCE_OPAQUE, RAY_FLAG_FORCE_NON_OPAQUE y RAY_FLAG_CULL_OPAQUE.

Requisitos

Consulte también

Reference de HLSL de Direct3D 12 Raytracing