Поделиться через


Структура атрибутов пересечения

Структура, объявленная в HLSL для представления атрибутов попадания для пересечения треугольника с фиксированной функцией или выровненного по оси ограничивающего прямоугольника для процедурного примитивного пересечения.

Пересечение треугольника с фиксированной функцией

Следующая структура объявляется в HLSL для представления атрибутов попадания для пересечения треугольника с фиксированной функцией:

struct BuiltInTriangleIntersectionAttributes
{
    float2 barycentrics;
};

Все шейдеры попадания и ближайшие шейдеры нажатия, вызываемые с помощью пересечения треугольника с фиксированной функцией, должны использовать эту структуру для атрибутов попадания. Если заданы атрибуты a0, a1 и a2 для 3 вершин треугольника, barycentrics.x — вес для a1, а barycentrics.y — вес для a2. Например, приложение может выполнить интерполяцию, выполнив следующие действия: a = a0 + barycentrics.x * (a1–a0) + barycentrics.y* (a2 – a0).

Выровненный по оси ограничивающий прямоугольник для процедурного примитивного пересечения

Если выровненные по оси ограничивающие прямоугольники используются для пересечения с процедурными примитивами, активируется шейдер пересечения. Этот шейдер предоставляет определяемую пользователем структуру атрибута пересечения для вызова ReportHit . Все шейдеры попадания и ближайшие шейдеры попаданий, связанные в одной группе попаданий с этим шейдером пересечения, должны использовать одну и ту же структуру для атрибутов hit, даже если на атрибуты нет ссылок. Максимальный размер структуры атрибута составляет 32 байта, что определяется как D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES.