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


перечисление D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS (d3d12.h)

Задает флаги для построения структуры ускорения трассировки лучей. Используйте значение из этого перечисления со структурой D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS , которая предоставляет входные данные для операции сборки структуры ускорения.

Синтаксис

typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS {
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x1,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x2,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x4,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x8,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20
} ;

Константы

 
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE
Значение: 0
Параметры для сборки структуры ускорения не указаны.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE
Значение: 0x1
Создайте структуру ускорения таким образом, чтобы она поддерживала будущие обновления (с помощью флага D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE) вместо того, чтобы приложение полностью перестраивало структуру. Этот параметр может привести к увеличению потребления памяти, времени сборки и снижению производительности луча. Однако будущие обновления должны выполняться быстрее, чем создание эквивалентной структуры ускорения с нуля.

Этот флаг можно установить только при начальной сборке структуры ускорения или при обновлении, в котором указана исходная структура ускорения D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE. Другими словами, после создания структуры ускорения без D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE никакие другие структуры ускорения не могут быть созданы из нее с помощью обновлений.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION
Значение: 0x2
Позволяет сжать структуру ускорения путем вызова CopyRaytracingAccelerationStructure в компактном режиме, заданном D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT.

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

Этот флаг совместим со всеми другими флагами. Если он указан как часть обновления структуры ускорения, структура исходного ускорения также должна быть построена с этим флагом. Другими словами, после создания структуры ускорения без D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION другие структуры ускорения не могут быть созданы из нее с помощью обновлений, определяющих D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION.



Указание ALLOW_COMPACTION может увеличить размер структуры ускорения перед сжатием по сравнению с отсутствием ALLOW_COMPACTION.



Если до окончательного сжатия выполняется несколько добавочных сборок, может быть выполнена избыточная работа, связанная с сжатием.


Размер, необходимый для сжатой структуры ускорения, можно запросить перед сжатием с помощью EmitRaytracingAccelerationStructurePostbuildInfo. Дополнительные сведения о свойствах сжатой структуры ускорения см. в разделе D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC .

Примечание При указании D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE есть определенные сведения, которые должны быть сохранены в структуре ускорения, и сжатие только поможет. Однако если конвейер знает, что структура ускорения больше не будет обновляться, это может сделать структуру более компактной. Некоторые приложения могут воспользоваться преимуществами сжатия дважды : один раз после начальной сборки и снова после того, как структура ускорения перейдет в статическое состояние, если это происходит.

 
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE
Значение: 0x4
Создайте высококачественную структуру ускорения, которая обеспечивает максимальную производительность за счет дополнительного времени сборки. Как правило, реализация занимает в 2–3 раза больше времени сборки, чем значение по умолчанию, чтобы повысить производительность трассировки.

Этот флаг рекомендуется, в частности, для статической геометрии. Он совместим со всеми другими флагами, кроме D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD
Значение: 0x8
Создайте структуру ускорения с более низким качеством, торгуя производительностью лучей для скорости сборки. Как правило, реализация занимает от 1/2 до 1/3 времени сборки, чем значение по умолчанию, с жертвой в производительности трассировки.

Этот флаг совместим со всеми другими флагами, кроме D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY
Значение: 0x10
Сведите к минимуму объем временной памяти, используемой во время сборки структуры ускорения, а также размер результата. Этот параметр может привести к увеличению времени сборки и (или) времени луча. Это ортогональное для флага D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION и явного сжатия структуры ускорения, которое он включает. Объединение флагов может означать как начальную структуру ускорения, так и результат сжатия, который использует меньше памяти.

Влияние использования этого флага для сборки отражается в результате вызова GetRaytracingAccelerationStructurePrebuildInfo перед выполнением сборки для получения требований к памяти для сборки.

Этот флаг совместим со всеми другими флагами.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE
Значение: 0x20
Выполните ускорение обновления структуры, а не создание с нуля. Это быстрее, чем полная сборка, но может негативно повлиять на производительность трассировки лучей, особенно если позиции базовых объектов значительно изменились по сравнению с исходной сборкой структуры ускорения до обновления.

Если адреса исходной и целевой структур ускорения идентичны, обновление выполняется на месте. Любое другое перекрытие диапазонов адресов источника и назначения недопустимо. Для неперекрывающихся источников и назначений структура ускорения исходного кода неизменяется. Требования к памяти для структуры ускорения вывода такие же, как и в структуре ускорения входных данных.

Структура исходного ускорения должна быть построена с D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE.

Этот флаг совместим со всеми другими флагами. Другие выбранные флаги, помимо D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE и D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE, должны соответствовать флагам в исходной структуре ускорения.

Обновления структуры ускорения могут выполняться неограниченно последовательно, если исходная структура ускорения была создана с D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE , а флаги для сборки обновления по-прежнему указывают D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE.

Требования

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