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_FLAGS枚举的 D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION标志生成的时,此模式才有效,否则结果未定义。

源内存和目标内存必须处于 资源状态 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 检索目标所需的大小。

此模式仅适用于 Windows 上的 PIX 等工具,但不会阻止任何应用使用它。 输出实质上是加速结构生成的反转。

对于顶级加速结构,输出包括一组实例说明,这些说明与原始生成中使用的数据相同,顺序相同。

对于底层加速结构,输出包含一组大致与原始生成中使用的数据匹配的几何图形说明。 输出只是原始的粗略匹配,部分原因是加速结构规范中允许的容差,部分是因为报告与概念编码完全相同的结构可能并不简单。

例如,为过程基元返回的 AABB (轴对齐边界框) 可能更保守, (例如,在体积上) 更大,甚至与加速结构表示形式中实际不同,因为公开确切表示形式可能不干净。

每个几何图形都有自己的几何描述,其显示顺序必须与原始生成中的顺序相同,因为着色器表索引计算取决于此。

此具有 的整体结构足以使 Windows 上的 PIX 等工具能够让应用程序对驱动程序从应用输入中获取的加速结构一些视觉感知。 如果显示的内容与应用程序用于创建加速结构的数据严重不匹配(超出允许的容差),可视化效果可帮助揭示加速结构中的驱动程序 bug。

源内存必须处于 资源状态 D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE。 目标内存必须处于 资源状态 D3D12DDI_RESOURCE_STATE_UNORDERED_ACCESS。

仅当在 OS 上启用了开发人员模式时,才允许使用此模式。
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE
目标通过 EmitRaytracingAccelerationStructurePostBuildInfo 采用 D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC_0054 中所述的布局和大小。

这会序列化加速结构,以便 Windows 上的 PIX 等工具可以存储到文件,以便以后通过反序列化进行播放。 虽然适用于 PIX for 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 for Windows 等工具,但没有什么能阻止任何应用使用它,尽管至少现在反序列化要求操作系统处于开发人员模式。

源内存必须处于 资源状态 D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE。
目标内存必须处于D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE状态。

要求

要求
最低受支持的客户端 Windows 10 版本 1809
标头 d3d12umddi.h