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


перечисление 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 , хотя ничто не мешает приложению использовать его. Выходные данные по сути являются обратными сборке структуры ускорения.

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

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

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

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

Этой общей структуры с достаточно, чтобы такие инструменты, как 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