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

Тип операции копирования для выполнения.

Синтаксис

typedef enum D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE {
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE,
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT,
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS,
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE,
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE
} ;

Константы

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

Исходная и целевая память должны находиться в состоянии ресурса D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT
Как и в режиме клонирования, создается функционально эквивалентная структура ускорения для источника в назначении. Компактный режим также подходит для назначения в потенциально меньшем объеме памяти. Размер, необходимый для назначения, можно получить заранее из EmitRaytracingAccelerationStructurePostBuildInfo.

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

Исходная и целевая память должны находиться в состоянии ресурса D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS
Назначение принимается после макета, описанного в D3D12DDI_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER_0054. Размер, необходимый для назначения, можно получить заранее из EmitRaytracingAccelerationStructurePostBuildInfo.

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

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

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

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

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

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

Исходная память должна находиться в состоянии ресурса D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. Целевая память должна находиться в состоянии ресурса D3D12DDI_RESOURCE_STATE_UNORDERED_ACCESS.

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

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

Исходная память должна находиться в состоянии ресурса D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. Целевая память должна находиться в состоянии ресурса D3D12DDI_RESOURCE_STATE_UNORDERED_ACCESS.

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

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

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

Исходная память должна находиться в состоянии ресурса D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE.
Целевая память должна находиться в состоянии D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 10 версии 1809
заголовка d3d12umddi.h