章节摘要:第 3 章的求交函数一次只对付一件几何,而真实场景动辄百万三角形、每帧上亿条射线——裸奔的求交撑不过第一帧。本章给实验室装上"导航系统":4.1 讲空间分区的两大家族(均匀网格、八叉树与 kd 树),以及空间剖分与物体剖分这个贯穿全章的分野;4.2 全力拆解业界主力 BVH——建树从中位数切分讲到表面积启发式 SAH,遍历从顺序栈讲到硬件友好布局,并配一个完整的手推算例;4.3 处理"世界在动"的难题,引出现代 GPU 光追管线的标准答案 TLAS 与 BLAS 双层结构,以及 refit 与 rebuild 两种维护哲学的取舍。读完本章,你应当能为任意场景选对加速结构,并估算它的构建与遍历成本。
完成本章后,你应当能够:
金句先行:加速结构不减少每次求交的工时,它减少的是"需要求交"的人数——导航的本事不在走得快,在不去不该去的地方。
4.1 空间分区:网格、八叉树与 kd 树——最直白的加速思路是给空间打格子。本节从均匀网格讲起(含三维 DDA 步进遍历的手推),讲到八叉树与 kd 树的递归细分,最后立起全章最重要的概念分野:按空间切的方案允许基元横跨多个格子,按物体切的方案允许包围盒互相重叠——两大家族的所有差异都从这里生长出来。
4.2 BVH:从建树到遍历的完整拆解——包围体层次结构是现代渲染器的绝对主力,也是本章的主菜。建树部分依次讲中位数切分的朴素方案、SAH 如何用表面积把"命中概率"写进代价函数、以及构建速度与遍历质量的取舍;遍历部分给出顺序栈遍历的标准伪码,拆解"近孩子优先"与"盒子区间裁剪"两个提速支点,并给出衡量树质量的三个指标。
4.3 动态场景:TLAS 与 BLAS——树建得再好,几何一动就作废。本节先给动态性分光谱:刚体动、形变动、拓扑动,各自配不同的维护武器(refit 快而糙、rebuild 准而贵);然后把现代 GPU 光追的标准答案讲透——底层结构 BLAS 管单件几何、顶层结构 TLAS 管实例摆放,动画的代价被精准隔离在需要动的那一小块。
三节是一条"从思想到主力到工程"的收敛线:4.1 建立空间剖分的通用框架与概念词汇,4.2 在该框架里选出工业冠军并拆到可实现的粒度,4.3 把冠军结构放进会动的真实世界,给出管线级的分层答案。4.1 的"剖分对象"分野直接决定 4.2 中 BVH 与 kd 树的优劣对比;4.2 的静态 BVH 是 4.3 双层结构的原材料——没有合格的 BLAS,TLAS 无从谈起。
4.1 空间分区 4.2 BVH 4.3 动态场景 ┌────────────┐ ┌────────────┐ ┌────────────┐ │ 网格/八叉树 │ 思想 │ SAH建树 │ 上工程 │ refit │ │ kd树 │ ────→ │ 顺序遍历 │ ────→ │ rebuild │ │ 剖分分野 │ │ 质量指标 │ │ TLAS/BLAS │ └────────────┘ └────────────┘ └─────┬──────┘ ▼ 第 7 章 实时预算消费双层结构 第 8 章 RT Core 固定功能遍历
需要的数学只有 3.1 的平板法包围盒区间——它在本章出现十几次,是所有裁剪判断的基石。数据结构方面,二叉树与栈的常识即可,建树伪码会现讲排序与递归。没有 GPU 编程经验也完全不妨碍阅读,4.3 只讲思想不进驱动。
往后的挂靠点:第 6 章迷你路径追踪器会把 4.2 的遍历伪码原样装进主循环;第 7 章实时管线的每毫秒预算清单里,BVH 更新是固定支出项;第 8 章的 RT Core 本质是"把本章的遍历算法铸成固定功能电路",届时 DXR 接口里的加速结构更新 API 与本章的 refit、rebuild一一对应;第 9 章性能剖析会把"遍历热点"作为光追程序的头号嫌疑人。