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


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

Указывает тип операции копирования, выполняемой при вызове CopyRaytracingAccelerationStructure.

Синтаксис

typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE {
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 0x1,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 0x2,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 0x3,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 0x4
} ;

Константы

 
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE
Значение: 0
Скопируйте структуру ускорения при исправлении всех самоназвание указателей, которые могут присутствовать, чтобы назначение было автономной копией источника. Все внешние указатели на другие структуры ускорения остаются неизменными в копии от источника к назначению. Размер места назначения идентичен размеру источника.

ВАЖНО

Исходная память должна находиться в состоянии D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. Целевая память должна находиться в состоянии D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT
Значение: 0x1
Создает функционально эквивалентную структуру ускорения для источника в назначении, аналогичную режиму клонирования, но также помещает назначение в потенциально меньший и, конечно, не больший объем памяти. Размер, необходимый для назначения, можно получить заранее из EmitRaytracingAccelerationStructurePostbuildInfo.

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

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

ВАЖНО

Исходная память должна находиться в состоянии D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. Целевая память должна находиться в состоянии D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS
Значение: 0x2
Назначение принимает макет, описанный в D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER. Размер, необходимый для назначения, можно получить заранее из EmitRaytracingAccelerationStructurePostbuildInfo.

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

Для структур ускорения верхнего уровня выходные данные включают набор описаний экземпляров, идентичных данным, используемым в исходной сборке и в том же порядке. Для структур ускорения нижнего уровня выходные данные включают набор геометрических описаний, примерно соответствующих данным, используемым в исходной сборке. Выходные данные отчасти являются приблизительными для оригинала из-за допустимых в спецификации допусков для структур ускорения и отчасти из-за присущей сложности создания отчетов о точно такой же структуре, что и концептуально закодированные. Например, если выбран диапазон 10.0.0.0/20 для виртуальной сети, для пространства клиентских адресов можно выбрать 10.1.0.0/24. Выровненные по оси ограничивающие прямоугольники (AABB), возвращаемые для процедурных примитивов, могут быть более консервативными (большими) по объему и даже отличаться по количеству, чем фактически в представлении структуры ускорения. Геометрические объекты с собственным описанием геометрии отображаются в том же порядке, что и при первоначальном ускорении, так как от этого зависят вычисления индексирования таблицы шейдеров.


ВАЖНО

Исходная память должна находиться в состоянии D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. Целевая память должна находиться в состоянии D3D12_RESOURCE_STATE_UNORDERED_ACCESS.

Этот режим разрешен только в том случае, если в ОС включен режим разработчика.

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE
Значение: 0x3
Назначение принимает макет и размер, описанные в документации для D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC, сама структура, созданная с помощью вызова EmitRaytracingAccelerationStructurePostbuildInfo.

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

При сериализации структуры ускорения верхнего уровня структуры ускорения нижнего уровня, о которых она ссылается, не должны по-прежнему присутствовать в памяти или оставаться без изменений. Аналогичным образом структуры ускорения нижнего уровня можно сериализовать независимо от того, указывают ли на них какие-либо структуры ускорения верхнего уровня. Иными словами, порядок сериализации структур ускорения не имеет значения.

ВАЖНО

Исходная память должна находиться в состоянии D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. Целевая память должна находиться в состоянии D3D12_RESOURCE_STATE_UNORDERED_ACCESS.

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE
Значение: 0x4
Источник должен представлять собой сериализованную структуру ускорения с любыми указателями непосредственно после заголовка, которые должны указывать на новые расположения. Дополнительные сведения см. в разделе D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC.

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

Десериализация может выполняться только для той же версии устройства и драйвера, в которой были сериализованы данные. В противном случае результаты не определены.

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


ВАЖНО

Исходная память должна находиться в состоянии D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE. Целевая память должна находиться в состоянии D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.

Требования

   
Верхняя часть d3d12.h