структура D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS (d3d12.h)
Определяет входные данные для операции сборки структуры ускорения лучей. Эта структура используется ID3D12GraphicsCommandList4::BuildRaytracingAccelerationStructure и ID3D12Device5::GetRaytracingAccelerationStructurePrebuildInfo.
Синтаксис
typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS {
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS Flags;
UINT NumDescs;
D3D12_ELEMENTS_LAYOUT DescsLayout;
union {
D3D12_GPU_VIRTUAL_ADDRESS InstanceDescs;
const D3D12_RAYTRACING_GEOMETRY_DESC *pGeometryDescs;
const D3D12_RAYTRACING_GEOMETRY_DESC const * * ppGeometryDescs;
};
} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS;
Члены
Type
Тип создаваемой структуры ускорения.
Flags
Флаги сборки.
NumDescs
Если type имеет значение D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TOP_LEVEL, это значение — количество экземпляров, выложенное на основе DescsLayout.
Если type имеет значение D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BOTTOM_LEVEL, это значение является числом элементов, на которые ссылаются pGeometryDescs или ppGeometryDescs. Какое из этих полей используется, зависит от DescsLayout.
DescsLayout
Способ указания геометрических описаний; массив описаний или массив указателей на описания.
InstanceDescs
Если type имеет значение D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TOP_LEVEL, это относится к структурам NumDescsD3D12_RAYTRACING_INSTANCE_DESC в памяти GPU, описывающим экземпляры. Каждый экземпляр должен быть выровнен по 16 байтам, определенным как D3D12_RAYTRACING_INSTANCE_DESC_BYTE_ALIGNMENT.
Если тип не D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TOP_LEVEL, этот параметр не используется.
Если DescLayoutD3D12_ELEMENTS_LAYOUT_ARRAY, InstanceDescs указывает на массив описаний экземпляров в памяти GPU.
Если descLayoutD3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS, InstanceDescs указывает на массив в памяти GPU D3D12_GPU_VIRTUAL_ADDRESS указателей на описания экземпляров.
Указанная память должна находиться в состоянии D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE.
pGeometryDescs
Если параметр Type имеет значение D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BOTTOM_LEVEL, а DescsLayout — D3D12_ELEMENTS_LAYOUT_ARRAY, это поле используется и указывает на непрерывные D3D12_RAYTRACING_GEOMETRY_DESC структуры NumDescs на ЦП, описывающие отдельные геометрические объекты.
Если параметр Type не D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BOTTOM_LEVEL или DescsLayout не D3D12_ELEMENTS_LAYOUT_ARRAY, этот параметр не используется.
ppGeometryDescs
Если type имеет значение D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BOTTOM_LEVEL, а DescsLayout — D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS, это поле используется и указывает на массив указателей NumDescs на D3D12_RAYTRACING_GEOMETRY_DESC структуры ЦП, описывающие отдельные геометрические объекты.
Комментарии
При использовании с GetRaytracingAccelerationStructurePrebuildInfo, который фактически выполняет сборку, любой параметр, на который ссылается D3D12_GPU_VIRTUAL_ADDRESS (адрес в памяти GPU), например InstanceDescs, не будет обращаться к операции. Таким образом, эту память не нужно еще инициализировать или находиться в определенном состоянии ресурса. Указывает, являются ли адреса GPU null или нет, операция может проверить, даже если указатели не разыменовываются.
Требования
Требование | Значение |
---|---|
Заголовок | d3d12.h |