перечисление D3D12_RAY_FLAGS (d3d12.h)
Флаги, передаваемые в функцию TraceRay для переопределения прозрачности, отбраковки и раннего выхода.
Синтаксис
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
} ;
Константы
D3D12_RAY_FLAG_NONE Значение: 0 Параметры не выбраны. |
D3D12_RAY_FLAG_FORCE_OPAQUE Значение: 0x1 Все примитивные пересечения лучей, встречающиеся в лучевой трассе, рассматриваются как непрозрачные. Таким образом, никакие шейдеры нажатия не будут выполняться независимо от того, указывает ли геометрия попадания D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE, и независимо от флагов экземпляра, который был поражен. Этот флаг является взаимоисключающим с RAY_FLAG_FORCE_NON_OPAQUE, RAY_FLAG_CULL_OPAQUE и RAY_FLAG_CULL_NON_OPAQUE. |
D3D12_RAY_FLAG_FORCE_NON_OPAQUE Значение: 0x2 Все примитивные пересечения лучей, встречающиеся в лучевой трассе, рассматриваются как непрозрачные. Таким образом, любые шейдеры нажатия, если они присутствуют, будут выполняться независимо от того, указывает ли геометрия попадания D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE, и независимо от флагов экземпляра, на который был достигнут удар. Этот флаг является взаимоисключающим с RAY_FLAG_FORCE_\OPAQUE, RAY_FLAG_CULL_OPAQUE и RAY_FLAG_CULL_NON_OPAQUE. |
D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH Значение: 0x4 Первое пересечение примитивного луча, обнаруженное в трассировке луча, автоматически вызывает метод AcceptHitAndEndSearch сразу после любого шейдера нажатия, в том числе при отсутствии шейдера попадания. Единственным исключением является то, что предыдущий шейдер нажатия вызывает IgnoreHit. В этом случае луч продолжается без изменений, чтобы следующее нажатие стало еще одним кандидатом на первое попадание. Чтобы применить это исключение, необходимо фактически выполнить любой шейдер нажатия. Поэтому если какой-либо шейдер нажатия пропускается, так как он обрабатывается как непрозрачный (например, из-за RAY_FLAG_FORCE_OPAQUE, D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE или D3D12_RAYTRACING_INSTANCE_FLAG_OPAQUE), вызывается метод AcceptHitAndEndSearch . Если при первом нажатии присутствует ближайший шейдер нажатия, он вызывается, если RAY_FLAG_SKIP_CLOSEST_HIT_SHADER также не присутствует. Один найденный хит считается "ближайшим", несмотря на то, что другие потенциальные хиты, которые могли быть ближе на луче, возможно, не были посещены. Обычно этот флаг используется для теней, где необходимо найти только одно попадание. |
D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER Значение: 0x8 Даже если было зафиксировано хотя бы одно нажатие, а группа для ближайшего хита содержит ближайший шейдер нажатия, пропустите выполнение этого шейдера. |
D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES Значение: 0x10 Включает отбраковку треугольников, обращенных назад. См . D3D12_RAYTRACING_INSTANCE_FLAGS , чтобы выбрать, какие треугольники обращены назад для каждого экземпляра. На экземплярах, указывающих D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE, этот флаг не действует. Для геометрических типов, отличных от D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES, этот флаг не действует. Этот флаг является взаимоисключающим с RAY_FLAG_CULL_FRONT_FACING_TRIANGLES. |
D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES Значение: 0x20 Включает выбраковку треугольников с передней стороной. См . D3D12_RAYTRACING_INSTANCE_FLAGS , чтобы выбрать, какие треугольники обращены назад для каждого экземпляра. На экземплярах, указывающих D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE, этот флаг не действует. Для геометрических типов, отличных от D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES, этот флаг не действует. Этот флаг является взаимоисключающим с RAY_FLAG_CULL_FRONT_FACING_TRIANGLES. |
D3D12_RAY_FLAG_CULL_OPAQUE Значение: 0x40 Вычисляет все примитивы, которые считаются непрозрачными, на основе их геометрии и флагов экземпляров. Этот флаг является взаимоисключающим с RAY_FLAG_FORCE_OPAQUE, RAY_FLAG_FORCE_NON_OPAQUE и RAY_FLAG_CULL_NON_OPAQUE. |
D3D12_RAY_FLAG_CULL_NON_OPAQUE Значение: 0x80 Вычисляет все примитивы, которые считаются непрозрачными, на основе их геометрических флагов и флагов экземпляров. Этот флаг является взаимоисключающим с RAY_FLAG_FORCE_OPAQUE, RAY_FLAG_FORCE_NON_OPAQUE и RAY_FLAG_CULL_OPAQUE. |
Требования
Верхняя часть | d3d12.h |