BK / GRAPHICS NOTES
IMAGE QUALITY / 08

光线追踪:从相机反向寻找光的路径

光栅化问“三角形覆盖哪些像素”,光线追踪则问“从这个像素看出去先碰到什么”。相交测试让可见性问题变得直接,也带来巨大的计算量。

阅读约 12 分钟前置:向量、光照难度:进阶

01 / 一条光线只有原点和方向

光线可写成参数方程。原点 O 通常是相机位置,单位方向 D 穿过成像平面上的某个采样点;参数 t 表示沿光线前进的距离。

P(t) = O + tD,t ≥ 0
相机光线穿过成像平面并击中球体CAMERAIMAGE PLANEP(t)N
主光线穿过像素样本;最近交点决定该样本首先看到的表面。

为每个像素中心发射一条光线只能得到单次采样。景深、运动模糊和抗锯齿都需要改变相机位置、时间或像素内采样点并累积结果。

02 / 找到所有候选中的最近交点

球体相交可把光线方程代入球面方程,解一个二次方程;三角形相交常用重心坐标形式,同时求出距离和内部坐标。有效交点要求 t 位于当前光线范围内。

球面:|O + tD - C|² = r²
取满足范围的最小正根 t

相交记录通常保存距离、位置、几何法线、着色法线、材质和图元编号。若没有任何命中,则返回环境背景或天空光。

设置 t 的最小值。次级光线从表面出发时,浮点误差可能让它立刻再次击中原表面;用一个与场景尺度匹配的小偏移可减少自相交。

03 / 次级光线回答更多可见性问题

光线方向回答的问题
主光线相机到场景像素看到什么
阴影光线交点到光源光源是否可见
反射光线镜面反射方向表面反射什么
折射光线由折射率决定透明物体后面是什么

递归追踪理想镜面反射很直观,但粗糙材质不会只朝一个方向反射。需要按材质散射分布随机选择方向,多次采样后才能估计积分。

04 / BVH 避免测试每个三角形

若每条光线都与场景全部三角形相交,代价随图元数量线性增长。包围体层次结构(BVH)把相邻几何包进轴对齐包围盒,再递归分组。

先测试大包围盒 → 未命中则跳过整组几何
命中则继续测试子节点 → 叶节点测试真实图元

高质量 BVH 构建会考虑盒子表面积与图元数量,尽量降低遍历期望代价。动态场景可更新包围盒、局部重建,或将对象级与三角形级结构分开。

05 / 路径追踪用随机采样估计渲染方程

路径追踪在每次表面交互处,根据材质概率分布采样一个后续方向,直到击中光源、离开场景或被终止。单个样本噪声很大,许多独立样本的平均值才逐渐收敛。

  • 重要性采样把更多样本投向贡献大的方向。
  • 俄罗斯轮盘赌用概率终止低贡献路径,同时保持估计无偏。
  • 下一事件估计直接采样光源,改善小光源场景收敛速度。
  • 降噪器借助法线、深度和历史信息,以较少样本重建稳定图像。
核心差异:光栅化高效枚举几何对屏幕的贡献;光线追踪灵活查询任意方向的可见性。现代实时渲染常将两者混合。