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 与应用程序用于创建加速结构的数据严重不匹配,则可视化效果可以帮助揭示加速结构中的驱动程序 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 等工具可以通过反序列化存储到文件以供以后播放。 虽然适用于适用于 Windows 的 PIX 等工具,但不会阻止任何应用使用此应用。

源内存必须处于 资源状态 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 结构中所述。

目标获取与最初序列化的加速结构功能等效的加速结构。 顶级加速结构与顶层加速结构的顺序无关紧要,只要顶级加速结构用于光线跟踪或加速结构更新,顶级加速结构就存在。只要顶级加速结构用于光线跟踪或加速结构更新,顶层加速结构就存在。

反序列化仅适用于同一设备和驱动程序版本,否则结果未定义。 这不用于缓存加速结构,因为运行完整加速结构生成的速度可能比从磁盘加载一个更快。
虽然适用于适用于 Windows 的 PIX 等工具,但任何应用都不会停止使用此应用,但至少现在反序列化要求 OS 处于开发人员模式。

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

要求

   
最低受支持的客户端 Windows 10 版本 1809
Header d3d12umddi.h