Rendering Lecture 7:Path Tracing I

Course: 渲染基础 Rendering Basics Date: November 29, 2025 11:07 AM (GMT+8)

🎨 Rendering Lecture 7:Path Tracing I

Notion 完整学习笔记(内容不删减版)


🏛 1. Path Tracing 的核心思想

路径追踪是一种根据渲染方程进行随机路径采样的算法,其目标是估计:

  • 像素 radiance(亮度)
  • 全局光照贡献
  • 所有可能路径在路径空间中的积分

与光房(Radiosity)或有限元方法不同,路径追踪不在空间中建立方程,而是在路径空间进行随机采样。


🎯 2. 像素值的表达:路径空间积分

对于像素 j,其亮度可写成:

Ij=all pathsFj(Xˉ)dμ(Xˉ) I_j = \int_{\text{all paths}} F_j(\bar{X})\,d\mu(\bar{X})

其中:

  • X̄(路径):由一系列顶点 x₀, x₁, …, xₙ 组成
  • μ(测度):决定路径如何被积分
  • F_j(X̄):路径对像素的贡献

路径可能从光源开始,也可能从相机开始,取决于积分方式。


📐 3. Surface Area Sampling(表面积采样)

一种简单的路径采样是:

  • 从光源开始
  • 沿着光线击中一个表面点
  • 在该点从单位半球上采样反射方向
  • 如此反复,构建完整路径

这种方式称为 “surfel(surface element)采样”。

但这种采样效率低,因为绝大多数路径不一定能到达相机。


🔁 4. 从相机生成路径(Camera Path Sampling)

更有效的方法:

  1. 从相机生成一条射线
  2. 找到与场景第一个交点 x₁
  3. 在 x₁ 半球中采样反射方向,得到 x₂
  4. 重复直到路径终止(到光源或 Russian Roulette)

这是最常用的路径追踪形式。

相机的积分形式:

Ij=L(xkxk1)T(x0..xk)dμ(x1..xk) I_j = \int L(x_k \rightarrow x_{k-1})\,T(x_0..x_k)\,d\mu(x_1..x_k)

缩写成:

Ij=F(Xˉ)dμ I_j = \int F(\bar{X})\,d\mu

🎨 5. Path Throughput(路径通量)

定义:

T(x0..xk)=i=1..kfs(xi)G(xi1,xi) T(x_0..x_k) = \prod_{i=1..k} f_s(x_i)\,G(x_{i-1}, x_i)

其中包括:

  • BRDF
  • 几何项(G,包括可见性、余弦项、距离平方)
  • 光源发射项由路径起点决定

路径通量表示整条路径的能量传输比例。

由于包含多个乘积,值通常随着跳数快速衰减。


🧱 6. Monte Carlo 估计的路径追踪形式

将路径积分写成 Monte Carlo 形式:

Ij1NiF(Xˉi)p(Xˉi) I_j \approx \frac{1}{N}\sum_i \frac{F(\bar{X}_i)}{p(\bar{X}_i)}

其中:

  • F(X̄):路径贡献
  • p(X̄):路径的采样概率
  • N:样本数量

路径追踪的目标是构造一个可采样的 p(X̄)。


📦 7. 从半球进行方向采样

在每个表面点 x_i:

  • 采样方向 ω_i
  • 样本 PDF 为 p(ω_i)
  • 路径贡献使用:
fscosθp(ωi) \frac{f_s \cos\theta}{p(\omega_i)}

这形成了路径追踪中最基础的反射方向采样结构。


✨ 8. BRDF Sampling(材质采样策略)

方向采样若按 BRDF(f_s)分布进行,会使:

  • 高光区(亮点)采样概率更高
  • 方差降低
  • 收敛速度提升

路径的 Monte Carlo 权重就变为:

TTfscosθps(ω) T \leftarrow T \cdot \frac{f_s \cos\theta}{p_s(\omega)}

其中 p_s 是 BRDF 的 PDF。


🌞 9. 面光源的讨论

直接在路径追踪过程中击中光源的情况需处理:

  • 只有当路径实际“看见”光源
  • 才能把光源亮度纳入贡献
  • 若光源面积小,随机路径几乎不可能正好击中
  • 导致噪声严重,甚至几乎看不到光源

因此,路径追踪必须配合下一节(Direct/Next Event Estimation)。


⚠️ 10. 没有 Direct Light Sampling 时的重大问题

如果路径追踪只通过“随机反射路径是否碰到光源”来获取光源亮度:

  • 短跳路径几乎永远找不到光源
  • 高光表面、镜面反射情况尤其难以找到
  • 图像亮度极低
  • 噪声严重
  • 需要极高采样数才能看到光源正确贡献

这导致了数十年前早期路径追踪难以实际使用。


🎯 11. Light Transport 的两部分:Direct + Indirect

路径追踪的光照可拆分为:

  • 🔆 Direct Lighting(直接光) 来自光源的单次反射
  • 🌫️ Indirect Lighting(间接光) 来自多个反弹的全局光照

基本渲染中 Direct 光占主导; 复杂光照、漫反射间接颜色由 Indirect 决定。


💡 12. Direct Light 的重要性(需要重点采样)

如果不专门采样光源,Direct Light 贡献几乎无法收集到。

原因:

  • 光源在路径空间中占比极小
  • 随机路径几乎不击中光源
  • 图像无亮度来源
  • 整体非常暗、噪声大
  • 需要几百万采样才能看到稳定结果

因此下一部分(Path Tracing II)将引入:

  • Next Event Estimation(NEE)
  • Multiple Importance Sampling(MIS)

它们对 Path Tracing 的可用性至关重要。


📌 13. 小结

这节的主要内容:

  • 路径追踪使用路径空间积分表达像素亮度
  • 通过从相机出发构造随机路径
  • 每条路径的贡献由 BRDF × 几何项 × 光源 × 通量累积
  • 采样概率 p(X̄) 决定了 Monte Carlo 权重
  • BRDF sampling 用于降低方向采样噪声
  • 若不对 Direct Light 进行额外采样,效果极差(几乎看不到光源)
  • 下一节将引入 Direct Light Sampling 和 MIS,使路径追踪实用化