光线求交加速算法:边界体积层次结构(Bounding Volume Hierarchies)2
上篇的两种图元分区方法(Middle,EqualCounts)对于某些图元分布可以很好地工作,但是在实践中它们常常选择性能较差的区,从而导致光线访问树的更多节点,因此在渲染时不必要地降低了光线-图元相交的计算效率。当前用于构建射线追踪加速结构的最佳算法中,大多数都是基于“表面积启发式”(SAH)的。
表面积启发式法(The Surface Area Heuristic)
该算法提供了扎实的成本模型来估计了哪个划分位置会导致射线和图元相交最为便宜。SAH模型估计执行射线相交测试的计算成本,包括遍历树的节点所花费的时间,以及针对特定图元分区的射线与图元相交测试所花费的时间。然后,用于构建加速结构的算法以将总成本降至最低为目标。通常,使用一种贪婪算法,该算法可最大程度地减少单独构建的层次结构中每个节点的成本。
SAH成本模型背后的思想很简单,它有两种方法计算。第一种:在构建自适应加速结构(图元细分或空间细分)的任何时候,我们都可以为当前区域和几何图形创建叶节点,即直接将当前结点下所有图元归为一个叶子结点内计算求交花费。在这种情况下,穿过该区域的任何射线都将针对所有重叠的图元进行测试,并且将产生以下花费:
其中N是图元的数量。是计算光线和第i个图元相交的时间。
第二种是区域划分:
其中是遍历内部节点并确定射线穿过哪个子节点所花费的时间,