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。

仅当作系统上启用开发人员模式时,才允许此模式。
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 等工具,但任何应用都不会停止使用此应用,但至少现在反序列化要求 OS 处于开发人员模式。

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

要求

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