D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE 枚举 (d3d12.h)

指定调用 CopyRaytracingAccelerationStructure 时执行的复制操作的类型。

语法

typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE {
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 0x1,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 0x2,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 0x3,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 0x4
} ;

常量

 
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE
值: 0
在修复可能存在的任何自引用指针时复制加速结构,以便目标为源的自包含副本。 指向其他加速结构的任何外部指针在副本中从源到目标保持不变。 目标的大小与源的大小相同。

重要事项

源内存必须处于 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE状态。目标内存必须处于 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE状态。

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT
值: 0x1
生成功能上等效的加速结构以在目标中源,类似于克隆模式,但也将目标拟合到可能更小(当然不是更大的)内存占用空间中。 可以事先从 EmitRaytracingAccelerationStructurePostbuildInfo 检索目标所需的大小。

仅当源加速结构最初使用 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION 标志生成时,此模式才有效,否则结果未定义。

压缩几何图形需要构造整个加速结构,这就是为什么必须首先生成然后压缩结构的原因。

重要事项

源内存必须处于 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE状态。目标内存必须处于 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE状态。

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS
值: 0x2
目标采用 D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER 中所述的布局。 可以事先从 EmitRaytracingAccelerationStructurePostbuildInfo 检索目标所需的大小。

此模式仅适用于 PIX 等工具,但不会阻止任何应用使用它。 输出实质上是加速结构生成的反转。 具有 的此整体结构足以使工具/PIX 能够让应用程序对驱动程序从应用的输入中构建的加速结构进行一些视觉感知。 如果显示的内容与应用程序用于创建加速结构的数据严重不匹配(超出允许的容差),可视化效果可帮助揭示加速结构中的驱动程序 bug。

对于顶级加速结构,输出包括一组实例说明,这些说明与原始生成中使用的数据相同,顺序相同。 对于底层加速结构,输出包含一组大致与原始生成中使用的数据匹配的几何图形说明。 输出只是原始的粗略匹配,部分原因是加速结构规范中允许的容差,部分是由于报告与概念编码结构完全相同的固有复杂性。 例如, ) 为过程基元返回的 AABB (轴对齐边界框可能更保守 (体积) 更大,甚至与加速结构表示形式中实际不同。 每个几何图形都有自己的几何描述,其显示顺序与原始加速相同,因为着色器表索引计算取决于此。


重要事项

源内存必须处于 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE状态。目标内存必须处于 D3D12_RESOURCE_STATE_UNORDERED_ACCESS状态。

仅当在 OS 中启用了开发人员模式时,才允许使用此模式。

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE
值: 0x3
Destination 采用文档中所述的布局和大小 ,D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC本身是调用 EmitRaytracingAccelerationStructurePostbuildInfo 生成的结构。

此模式序列化加速结构,以便应用或工具可以通过反序列化将其存储到文件中供以后重复使用(通常在不同的设备实例上)。

序列化顶级加速结构时,它所引用的底层加速结构不必在内存中仍然存在或保持不变。 同样,可以序列化底层加速结构,而不考虑是否有任何顶级加速结构指向它们。 换句话说,加速结构的序列化顺序并不重要。

重要事项

源内存必须处于 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE状态。目标内存必须处于 D3D12_RESOURCE_STATE_UNORDERED_ACCESS状态。

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE
值: 0x4
源必须是序列化的加速结构,任何指针(直接在标头后面)都固定为指向其新位置。 有关详细信息,请参阅 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC

目标获取的加速结构在功能上等效于最初序列化的加速结构。 只要使用顶级加速结构进行光线追踪或加速结构时更新它引用的底层加速结构,就不管顶级和底层加速结构的反序列化顺序如何。

只能在序列化数据的同一设备和驱动程序版本上执行反序列化。 否则,结果将是不确定的。

此模式仅适用于 PIX 等工具,但不会阻止任何应用使用它,但仅当操作系统中启用了开发人员模式时,才允许此模式。 此复制操作不用于缓存加速结构,因为运行完全加速结构生成可能比从磁盘加载加速结构要快。


重要事项

源内存必须处于 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE状态。目标内存必须处于 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE状态。

要求

   
标头 d3d12.h