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


перечисление D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS (d3d12umddi.h)

Указывает флаги сборки структуры ускорения трассировки лучей.

Синтаксис

typedef enum D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS {
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE,
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE,
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION,
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE,
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD,
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY,
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE
} ;

Константы

 
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE
Параметры для сборки структуры ускорения не указаны.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE
Создайте структуру ускорения таким образом, чтобы она поддерживала будущие обновления с помощью флага D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE, а не полностью перестраивать приложение. Этот параметр может привести к увеличению потребления памяти и времени сборки, а также снижению производительности трассировки лучей. Однако будущие обновления должны выполняться быстрее, чем создание эквивалентной структуры ускорения с нуля.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION
Позволяет сжать структуру ускорения путем вызова CopyRaytracingAccelerationStructure в компактном режиме. См . D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE.
Этот параметр может привести к увеличению потребления памяти и времени сборки. Однако после будущего сжатия результирующая структура ускорения должна занимать меньше памяти, что не больше, чем создание структуры ускорения с нуля.

Этот флаг совместим со всеми другими флагами. Если он указан как часть обновления структуры ускорения, структура исходного ускорения также должна быть построена с этим флагом.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE
Создайте высококачественную структуру ускорения, которая максимально повышает производительность трассировки лучей за счет дополнительного времени сборки. Грубое правило заключается в том, что реализация должна занять примерно в 2–3 раза больше времени сборки по умолчанию, чтобы повысить производительность трассировки.

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

Этот флаг совместим со всеми другими флагами, кроме D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY
Сведите к минимуму объем временной памяти, используемой во время сборки структуры ускорения, а также размер результата. Этот параметр может привести к увеличению времени сборки и (или) времени трассировки лучей.

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

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

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

Этот флаг совместим со всеми другими флагами. D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE может быть задано или не задано, это не имеет значения, так как обновления будут по-прежнему разрешены. Другие выбранные флаги, помимо D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE и D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE, должны соответствовать флагам в структуре ускорения источника.

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

Требования

Требование Значение
Минимальная версия клиента Windows 10, версия 1809
Верхняя часть d3d12umddi.h