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


Функция TraceRay

Отправляет луч в поиск попаданий в структуре ускорения.

Синтаксис

Это встроенное определение функции эквивалентно следующему шаблону функции:

Template<payload_t>
void TraceRay(RaytracingAccelerationStructure AccelerationStructure,
              uint RayFlags,
              uint InstanceInclusionMask,
              uint RayContributionToHitGroupIndex,
              uint MultiplierForGeometryContributionToHitGroupIndex,
              uint MissShaderIndex,
              RayDesc Ray,
              inout payload_t Payload);

Параметры

AccelerationStructure

Используемая структура ускорения верхнего уровня. Указание структуры ускорения NULL приводит к промаху.

RayFlags

Допустимое сочетание ray_flag значений. Система распространяет только определенные флаги лучей, т. е. видны встроенному шейдеру RayFlags .

InstanceInclusionMask

Целое число без знака, нижние 8 битов которого используются для включения или отклонения экземпляров geometry на основе InstanceMask в каждом экземпляре. Пример:

if(!((InstanceInclusionMask & InstanceMask) & 0xff)) { //ignore intersection }

RayContributionToHitGroupIndex

Целое число без знака, указывающее смещение, добавляемое при адресации вычислений в таблицах шейдеров для индексирования групп попаданий. Используются только 4 нижних бита этого значения.

MultiplierForGeometryContributionToHitGroupIndex

Целое число без знака, указывающее шаг для умножения на GeometryContributionToHitGroupIndex, который представляет собой только основанный на 0 индекс геометрии, предоставленный приложением в его структуре ускорения нижнего уровня. Используются только нижние 16 бит этого значения множителя.

MissShaderIndex

Целое число без знака, указывающее индекс промаха шейдера в таблице шейдеров.

Ray

Объект RayDesc, представляющий луч для трассировки.

Payload

Определяемые пользователем полезные данные луча, доступные как для входных, так и для выходных данных шейдерами, вызываемыми во время трассировки лучей. После завершения TraceRay вызывающий объект также сможет получить доступ к полезным данным.

Возвращаемое значение

void

Комментарии

Эту функцию можно вызвать из следующих типов шейдеров лучей:

См. также раздел

Справочник по HLSL для трассировки лучей в Direct3D 12