DirectX光线追踪:HLSL编程与初始化全解析
1. HLSL中光线遍历的控制
在DirectX光线追踪中,除了在光线发射时指定标志外,还提供了三个额外的函数来控制光线在相交和任意命中着色器中的行为。
- ReportHit()函数 :在自定义相交着色器中调用 ReportHit() 来确定光线与图元的相交位置。示例代码如下:
if ( doesIntersect( ray, curPrim ) ) {
PrimHitAttrib hitAttribs = { ... <initialize here>... };
uint hitType = <user-defined-value>;
ReportHit( distToHit, hitType, hitAttribs );
}
ReportHit() 的输入参数包括沿光线到相交点的距离、用户可定义的表示命中类型的整数以及用户可定义的命中属性结构。命中类型在命中着色器中可通过 HitKind() 获取,它是一个8位无符号整数,对于确定光线与图元相交的属性(如面朝向)很有用,并且由于是用户定义的,具有很高的可定制性。当使用内置三角形相交器报告命中时, HitKind() 返回 D3D12_HIT_KIND_TRIANGLE_FRONT_FACE 或 D3D12_HIT_KIND_TRIANGLE_BACK
超级会员免费看
订阅专栏 解锁全文

17

被折叠的 条评论
为什么被折叠?



