在 Direct3D 12 中,D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC 是一个结构体,用于在构建射线追踪加速结构(Ray Tracing Acceleration Structure)后,获取用于序列化和反序列化加速结构的相关信息。

以下是 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC 结构的定义:
typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC {
  D3D12_GPU_VIRTUAL_ADDRESS               DestBuffer;
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS Flags;
  UINT                                     NumDescs;
  UINT64                                   ResultDataMaxSizeInBytes;
} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC;

结构体成员的含义如下:

  •  DestBuffer: 表示用于存储加速结构的 GPU 虚拟地址。这是构建加速结构的目标缓冲区。


  •  Flags: 一个位掩码,用于指定构建加速结构时的标志。可以包括以下值之一或它们的组合:

  - D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE: 无标志。
  - D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE: 允许更新加速结构。
  - D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION: 允许压缩加速结构。
  - D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE: 优先使用更快的射线追踪性能。
  - D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD: 优先使用更快的加速结构构建性能。
  - D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY: 以最小化内存占用为目标。

  •  NumDescs: 表示构建加速结构时使用的描述符数量。


  •  ResultDataMaxSizeInBytes: 表示用于存储序列化数据的缓冲区的最大大小(以字节为单位)。


这个结构体通常与 ID3D12GraphicsCommandList4 接口的 CopyRaytracingAccelerationStructure 方法一起使用,以获取构建加速结构后的序列化信息。这样的信息对于在网络传输或保存到磁盘等场景中保存和加载加速结构非常有用。


转载请注明出处:http://www.pingtaimeng.com/article/detail/25964/Win32 API/D3d12.h/D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC