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


структура D3D12_RAYTRACING_INSTANCE_DESC (d3d12.h)

Описывает экземпляр структуры ускорения лучей, используемой в памяти GPU во время построения структуры ускорения.

Синтаксис

typedef struct D3D12_RAYTRACING_INSTANCE_DESC {
  FLOAT                     Transform[3][4];
  UINT                      InstanceID : 24;
  UINT                      InstanceMask : 8;
  UINT                      InstanceContributionToHitGroupIndex : 24;
  UINT                      Flags : 8;
  D3D12_GPU_VIRTUAL_ADDRESS AccelerationStructure;
} D3D12_RAYTRACING_INSTANCE_DESC;

Члены

Transform[3]

Тип: FLOAT [3][4]

Матрица преобразования 3x4 в основной строке, представляющая преобразование "экземпляр в мир". Реализации преобразуют лучи, в отличие от преобразования всех геометрических объектов или AABB.

Примечание

Макет Transform является транспонированием того, как аффинные матрицы обычно хранятся в памяти. Вместо четырех 3-векторов, Transform выкладывается как три 4-вектора.

InstanceID

Тип: UINT : 24

Произвольное 24-разрядное значение, доступ к которому можно получить с помощью встроенной InstanceID функции в поддерживаемых типах шейдеров.

InstanceMask

Тип: UINT : 8

8-разрядная маска, назначенная экземпляру, которая может использоваться для включения или отклонения групп экземпляров на основе каждого луча. Если значение равно нулю, экземпляр никогда не будет включен, поэтому обычно для него следует задать ненулевое значение. Дополнительные сведения см. в InstanceInclusionMask разделе Параметр функции TraceRay .

InstanceContributionToHitGroupIndex

Тип: UINT : 24

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

Flags

Тип: UINT : 8

8-разрядная маска, представляющая флаги из D3D12_RAYTRACING_INSTANCE_FLAGS для применения к экземпляру .

AccelerationStructure

Тип: D3D12_GPU_VIRTUAL_ADDRESS

Адрес структуры ускорения нижнего уровня, которая экземплярируется. Адрес должен быть выровнен по 256 байтам, определенным как D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT. Любая существующая структура ускорения, переданная здесь, уже должна быть размещена с таким выравниванием.

Память, на который указывает , должна находиться в состоянии D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.

Комментарии

Это определение структуры C++ полезно, если сначала создаются данные экземпляра на ЦП, а затем отправляются в GPU. Но ваше приложение также может создавать описания экземпляров непосредственно в памяти GPU (например, из вычислительных шейдеров), используя тот же макет.

Требования

   
Верхняя часть d3d12.h