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

Структура, объявленная в 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 . Любой удар и ближайшие шейдеры попаданий, привязанные в той же группе попаданий с этим шейдером пересечения, должны использовать ту же структуру для атрибутов попадания, даже если атрибуты не ссылаются. Максимальный размер структуры атрибутов составляет 32 байта, определенных как D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES.