D3D12_RAYTRACING_INSTANCE_DESC 结构 (d3d12.h)

描述在加速结构生成过程中 GPU 内存中使用的光线跟踪加速结构的实例。

语法

typedef struct D3D12_RAYTRACING_INSTANCE_DESC {
  FLOAT                     Transform[3][4];
  UINT                      InstanceID : 24;
  UINT                      InstanceMask : 8;
  UINT                      InstanceContributionToHitGroupIndex : 24;
  UINT                      Flags : 8;
  D3D12_GPU_VIRTUAL_ADDRESS AccelerationStructure;
} D3D12_RAYTRACING_INSTANCE_DESC;

成员

Transform[3]

类型: FLOAT [3][4]

行主布局中的 3x4 转换矩阵,表示实例到世界转换。 实现转换光线,而不是转换所有几何图形或 AABB。

注意

Transform 布局是仿射矩阵通常如何存储在内存中的转置。 布局为三个 4 向量, Transform 而不是四个 3 向量。

InstanceID

类型: UINT :24

可以使用受支持的着色器类型中的内部函数访问 InstanceID 的任意 24 位值。

InstanceMask

类型: UINT : 8

分配给实例的 8 位掩码,可用于按光线包含/拒绝实例组。 如果值为零,则永远不会包含实例,因此通常应将其设置为某个非零值。 有关详细信息, InstanceInclusionMask 请参阅 TraceRay 函数的 参数。

InstanceContributionToHitGroupIndex

类型: UINT :24

一个任意 24 位值,表示要添加到着色器表索引以选择要使用的命中组的每个实例贡献。

Flags

类型: UINT : 8

一个 8 位掩码,表示要应用于实例 的D3D12_RAYTRACING_INSTANCE_FLAGS 标志。

AccelerationStructure

类型: D3D12_GPU_VIRTUAL_ADDRESS

正在实例的底层加速结构的地址。 地址必须对齐到 256 字节,定义为 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT。 此处传入的任何现有加速结构都已要求使用这种对齐方式进行放置。

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

备注

如果首先在 CPU 上生成实例数据,然后上传到 GPU,则此 C++ 结构定义非常有用。 但是,应用程序也可以直接从计算着色器 (直接在 GPU 内存中生成实例说明,例如,) 遵循相同的布局。

要求

   
标头 d3d12.h