D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS 结构 (d3d12.h)

定义光线跟踪加速结构生成操作的输入。 此结构由 ID3D12GraphicsCommandList4::BuildRaytracingAccelerationStructureID3D12Device5::GetRaytracingAccelerationStructurePrebuildInfo 使用。

语法

typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS {
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE        Type;
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS Flags;
  UINT                                                NumDescs;
  D3D12_ELEMENTS_LAYOUT                               DescsLayout;
  union {
    D3D12_GPU_VIRTUAL_ADDRESS            InstanceDescs;
    const D3D12_RAYTRACING_GEOMETRY_DESC *pGeometryDescs;
    const D3D12_RAYTRACING_GEOMETRY_DESC const * * ppGeometryDescs;
  };
} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS;

成员

Type

要生成的加速结构的类型。

Flags

生成标志。

NumDescs

如果 type为 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TOP_LEVEL,则此值是基于 DescsLayout 布局的实例数。

如果 typeD3D12_RAYTRACING_ACCELERATION_STRUCTURE_BOTTOM_LEVEL,则此值是 pGeometryDescs 或 ppGeometryDescs 引用的元素数。 使用哪一个字段取决于 DescsLayout

DescsLayout

如何指定几何图形说明;描述数组或指向说明的指针数组。

InstanceDescs

如果 type为 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TOP_LEVEL,则指描述实例的 GPU 内存中的 NumDescsD3D12_RAYTRACING_INSTANCE_DESC 结构。 每个实例必须与 16 个字节对齐,定义为 D3D12_RAYTRACING_INSTANCE_DESC_BYTE_ALIGNMENT

如果未D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TOP_LEVELType,则此参数未使用。

如果 DescLayoutD3D12_ELEMENTS_LAYOUT_ARRAY则 InstanceDescs 指向 GPU 内存中的实例说明数组。

如果 DescLayoutD3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS则 InstanceDescs 指向 GPU 内存中的数组 ,该数组D3D12_GPU_VIRTUAL_ADDRESS 指向实例说明的指针。

指向的内存必须处于 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE状态。

pGeometryDescs

如果 type 为 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BOTTOM_LEVEL,并且 DescsLayout为 D3D12_ELEMENTS_LAYOUT_ARRAY,则使用此字段并指向 CPU 上的 NumDescs 连续D3D12_RAYTRACING_GEOMETRY_DESC结构,描述各个几何图形。

如果未D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BOTTOM_LEVELTypeDescsLayoutD3D12_ELEMENTS_LAYOUT_ARRAY,则此参数未使用。

ppGeometryDescs

如果 type 为 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BOTTOM_LEVEL,并且 DescsLayout为 D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS,则使用此字段并指向 NumDescs 指针数组,用于D3D12_RAYTRACING_GEOMETRY_DESC CPU 上的结构,描述各个几何图形。

注解

与实际执行生成的 GetRaytracingAccelerationStructurePrebuildInfo 一起使用时,通过 D3D12_GPU_VIRTUAL_ADDRESS 引用的任何参数 (GPU 内存) 中的地址(如 InstanceDescs)都不会由该操作访问。 因此,此内存尚不需要初始化,也不需要处于特定的资源状态。 即使未取消引用指针,也可以通过操作检查 GPU 地址是否为 null。

要求

要求
Header d3d12.h