TraceRay 函数

在加速结构中将射线发送到搜索命中。

语法

此内部函数定义等效于以下函数模板:

Template<payload_t>
void TraceRay(RaytracingAccelerationStructure AccelerationStructure,
              uint RayFlags,
              uint InstanceInclusionMask,
              uint RayContributionToHitGroupIndex,
              uint MultiplierForGeometryContributionToHitGroupIndex,
              uint MissShaderIndex,
              RayDesc Ray,
              inout payload_t Payload);

参数

AccelerationStructure

要使用的顶级加速结构。 指定 NULL 加速结构会强制未命中。

RayFlags

ray_flag值的有效组合。 系统仅传播定义的光线标志,即 对 RayFlags 着色器内部函数可见。

InstanceInclusionMask

一个无符号整数,其底部的 8 位用于根据每个实例中的 InstanceMask 包含或拒绝几何图形实例。 例如:

if(!((InstanceInclusionMask & InstanceMask) & 0xff)) { //ignore intersection }

RayContributionToHitGroupIndex

一个无符号整数,指定要添加到着色器表中用于命中组索引的寻址计算中的偏移量。 仅使用此值的底部 4 位。

MultiplierForGeometryContributionToHitGroupIndex

一个无符号整数,指定要乘以 GeometryContributionToHitGroupIndex 的步幅,该索引只是几何图形由应用提供给其底层加速结构的从 0 开始的索引。 仅使用此乘数值的底部 16 位。

MissShaderIndex

一个无符号整数,指定着色器表中未命中着色器的索引。

Ray

表示要跟踪的光线的 RayDesc

Payload

在光线跟踪期间调用的着色器为输入和输出访问用户定义的光线有效负载。 TraceRay 完成后,调用方也可以访问有效负载。

返回值

void

备注

可以从以下光线追踪着色器类型调用此函数:

另请参阅

Direct3D 12 光线跟踪 HLSL 参考