在 Direct3D 12 中,D3D12_RAYTRACING_INSTANCE_DESC 是一个结构体,用于描述射线追踪场景中的实例。这个结构体包含有关实例的信息,如变换矩阵和透明度。

以下是 D3D12_RAYTRACING_INSTANCE_DESC 结构的定义:
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: 3x4 的变换矩阵,用于将实例的局部坐标系变换到全局坐标系。每个元素都是 32 位浮点数。


  •  InstanceID: 24 位的实例 ID,用于在着色器程序中标识实例。


  •  InstanceMask: 8 位的实例遮罩,用于确定光线是否与实例相交。


  •  InstanceContributionToHitGroupIndex: 24 位的值,用于指定实例对于命中组(Hit Group)索引的贡献。这个索引将被用于确定光线与实例相交时应该调用哪个 Hit Group。


  •  Flags: 8 位的标志,用于指定实例的属性。可以是以下值之一或它们的组合:

  - D3D12_RAYTRACING_INSTANCE_FLAG_NONE: 无标志。
  - D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE: 禁用三角形背面剔除。
  - D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_FRONT_COUNTERCLOCKWISE: 指定三角形为逆时针(顺时针在视图空间中)。

  •  AccelerationStructure: 射线追踪实例的加速结构的 GPU 虚拟地址。这是实例指向的几何体的加速结构。


这个结构体通常用于在射线追踪应用程序中描述场景中的实例,每个实例都可以有自己的变换矩阵、遮罩、ID 等属性。当射线与场景相交时,这些实例信息将被用于计算实际的交点和命中组。


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