структура 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 |