D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS 枚举 (d3d12.h)

指定用于生成光线跟踪加速结构的标志。 将此枚举中的值与 D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS 结构结合使用,该结构为加速结构生成操作提供输入。

语法

typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS {
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x1,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x2,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x4,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x8,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20
} ;

常量

 
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE
值: 0
未为加速结构生成指定任何选项。
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE
值: 0x1
构建加速结构,使其支持将来通过标志D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE) ( 更新,而无需应用完全重新生成结构。 此选项可能会导致内存消耗增加、生成时间增加并降低光线跟踪性能。 但是,将来的更新应该比从头开始构建等效加速结构更快。

只能在初始加速结构生成或 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE指定源加速结构的更新上设置此标志。 换句话说,在没有 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE的情况下生成加速结构后,无法通过更新从该结构创建其他加速结构。
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION
值: 0x2
使用压缩模式调用 CopyRaytracingAccelerationStructure (使用 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT 指定)来启用压缩加速结构的选项。

此选项可能会导致内存消耗和生成时间增加。 但是,在将来进行压缩后,生成的加速结构占用的内存占用量应小于从头开始构建加速结构。

此标志与所有其他标志兼容。 如果指定为加速结构更新的一部分,则必须也使用此标志生成源加速结构。 换句话说,在没有 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION的情况下生成加速结构后,无法通过指定 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION的更新从该结构创建其他加速结构。



与不指定ALLOW_COMPACTION相比,指定ALLOW_COMPACTION可能会增加预压缩加速结构大小。



如果在最终压缩之前执行了多个增量生成,则可能执行了冗余的压缩相关工作。


压缩加速结构所需的大小可以在压缩之前通过 EmitRaytracingAccelerationStructurePostbuildInfo 查询。 有关压缩加速结构大小属性的详细信息 ,请参阅D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC

注意 指定 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE 时,加速结构中需要保留某些信息,压缩只会大有帮助。 但是,如果管道知道不会再更新加速结构,则可以使结构更加紧凑。 某些应用可能会受益于压缩两次 - 在初始生成后进行一次,在加速结构已稳定到静态状态(如果发生这种情况)之后再压缩一次。

 
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE
值: 0x4
构建高质量的加速结构,以牺牲额外的生成时间为代价,最大程度地提高光线跟踪性能。 通常,实现的生成时间是默认设置的 2-3 倍,以获得更好的跟踪性能。

特别建议将此标志用于静态几何图形。 它与除 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD以外的所有其他标志兼容。
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD
值: 0x8
构造一个质量较低的加速结构,以光线跟踪性能来提升生成速度。 通常,实现比默认设置花费 1/2 到 1/3 的生成时间,同时会牺牲跟踪性能。

此标志与除 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD以外的所有其他标志兼容。
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY
值: 0x10
最小化加速结构生成期间使用的暂存内存量以及结果的大小。 此选项可能会导致生成时间和/或光线跟踪时间增加。 这与 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION 标志及其启用的显式加速结构压缩是正交的。 组合这些标志可能意味着初始加速结构以及压缩它的结果会占用更少的内存。

将此标志用于生成的影响反映在执行生成之前调用 GetRaytracingAccelerationStructurePrebuildInfo 以检索生成的内存要求的结果中。

此标志与所有其他标志兼容。
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE
值: 0x20
执行加速结构更新,而不是从头开始生成。 这比完整生成更快,但可能会对光线跟踪性能产生负面影响,尤其是在更新之前基础对象的位置与加速结构的原始生成相比发生了重大变化时。

如果源加速结构的地址和目标加速结构的地址相同,则会就地执行更新。 源和目标的地址范围的任何其他重叠都无效。 对于不重叠的源和目标,源加速结构未修改。 输出加速结构的内存要求与输入加速结构中的内存要求相同

源加速结构必须已使用 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE 生成。

此标志与所有其他标志兼容。 除了 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATED3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE之外,其他标志选择必须与源加速结构中的标志匹配。

只要源加速结构是使用 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE 创建的,并且更新生成的标志继续指定D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE,就可以无限制地连续执行加速结构 更新

要求

要求
Header d3d12.h