структура 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, а DescsLayoutD3D12_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, а DescsLayoutD3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS, это поле используется и указывает на массив указателей NumDescs на D3D12_RAYTRACING_GEOMETRY_DESC структуры ЦП, описывающие отдельные геометрические объекты.

Комментарии

При использовании с GetRaytracingAccelerationStructurePrebuildInfo, который фактически выполняет сборку, любой параметр, на который ссылается D3D12_GPU_VIRTUAL_ADDRESS (адрес в памяти GPU), например InstanceDescs, не будет обращаться к операции. Таким образом, эту память не нужно еще инициализировать или находиться в определенном состоянии ресурса. Указывает, являются ли адреса GPU null или нет, операция может проверить, даже если указатели не разыменовываются.

Требования

Требование Значение
Заголовок d3d12.h