Rendering:Monte Carlo Integration II

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

🎨 Rendering:Monte Carlo Integration II


🏛 1. 积分估计的两个核心问题

Monte Carlo 可以估计任意积分,但效率高度依赖两个因素:

  1. 采样点位于积分快速变化区域的多少
  2. 被积函数本身有多“凶险”(尖锐、高振荡、大范围变化)

如果采样位置与函数形状不匹配,会导致巨大方差与噪声。


🎯 2. 采样策略对误差的影响

假设我们要估计:

I=f(x)dx I = \int f(x)\,dx

若采样分布 不适合 f(x) 的形状:

  • 会浪费大量样本
  • 噪声大
  • 趋势出现很慢

若采样分布 匹配 f(x):

  • 渐进速度显著提升
  • 方差陡降
  • 需要的样本大幅减少

这引出了“适应函数形状的采样策略”。


💡 3. 重要性采样(Importance Sampling)的概念

目标是让采样分布 p(x) 与函数 f(x) 的重要部分接近。

Monte Carlo 积分可以写成带权形式:

I=f(x)p(x)p(x)dx I = \int \frac{f(x)}{p(x)}\,p(x)\,dx

采样时:

  1. 按 p(x) 随机采样 x
  2. 计算 f(x) / p(x)
  3. 对所有样本求平均

这样的采样方式可以极大降低方差。


🧪 4. 期望形式的 Monte Carlo 积分

若 X 是按分布 p(x) 采样的随机变量,则:

E ⁣[f(X)p(X)]=f(x)dx E\!\left[\frac{f(X)}{p(X)}\right] = \int f(x)\,dx

样本估计:

I1Nif(xi)p(xi) I \approx \frac{1}{N} \sum_i \frac{f(x_i)}{p(x_i)}

这是所有重要性采样算法的基础。


📉 5. 函数越“尖锐”,越需要重要性采样

当 f(x) 在某个小区域非常尖锐或陡增时:

  • 均匀采样难以命中高贡献区域
  • 噪声极高
  • 估值可能漂移很久才接近真实值

解决方法:

  • 将 p(x) 设计为在尖锐区域的取样概率更高
  • 让取样“跟随” f(x) 的结构

这样:

  • f(x) / p(x) 会接近常数
  • 方差接近 0
  • 最快收敛

📦 6. 最优采样分布

理论最优分布是:

popt(x)=f(x)f(x)dx p_{\text{opt}}(x) = \frac{|f(x)|}{\int |f(x)|\,dx}

性质:

  • 完全匹配函数的形状
  • 代入后 f(x) / p(x) 变为常数
  • 方差 = 0(完美估计)

但实际渲染中无法直接获得 f(x) 的积分,因此需要可构造的近似分布。


🎲 7. 两类常见分布的示例

文件中使用两个例子:


  • 在整个区间平均取样
  • 对平滑函数效果尚可
  • 对尖锐或窄区域贡献很大的函数非常低效
  • 容易产生噪声高、收敛慢的估值

  • 分布在某些区域有更高概率
  • 适合具有局部高贡献区的函数
  • 对某些特定函数可显著减少方差
  • 提供更快速、更稳定的估计

🔍 8. 采样分布不匹配时的典型问题

若使用了与 f(x) 分布完全不相符的 p(x):

  • 样本权重 f(x)/p(x) 变得巨大
  • 数值震荡剧烈
  • Monte Carlo 收敛速度显著变差
  • 噪声比均匀采样还大

这解释了渲染中:

  • 亮光源导致的“萤火虫”(Fireflies)
  • BRDF 反射峰导致的噪点
  • 对高光部分采样不足

📊 9. 匹配分布后的方差下降

通过选择与 f(x) 结构接近的 p(x),可观察到:

  • 波动幅度明显降低
  • 样本平均趋向稳定
  • 少量采样即可得到较好的估计
  • 对不规则函数依然有强大效果

在渲染中,这种策略会被用于:

  • 光源采样
  • BRDF 方向采样
  • 路径追踪中的 PDF 选择
  • 多重重要性采样(MIS)

⚙️ 10. 重要性采样的计算流程

流程如下:

  1. 设计分布 p(x)
  2. 根据 p(x) 采样 xᵢ
  3. 求 f(xᵢ) / p(xᵢ)
  4. 对所有样本求平均
  5. 估计值即为积分近似

关键是: p(x) 必须可采样且可计算。


🧠 11. 重要性采样的效果总结

  • 让采样更集中于“重要的区域”
  • 显著减少方差
  • 降低噪声并改善收敛速度
  • 对处理尖锐、集中型函数尤为有效
  • 是光线追踪可用性和速度的核心优化技术

⭐ 12. 渲染中的典型应用场景

重要性采样直接作用于渲染中的多个关键问题:

  • 面光源采样(减少软阴影噪声)
  • 材质 BRDF 采样(尤其是高光、镜面项)
  • 参与介质中的相函数采样
  • 次表面散射中的方向采样
  • 全局光照路径中关键方向的选取

如果没有重要性采样,高质量光线追踪将几乎不可行。


🧩 13. 为什么采样分布越接近函数形状越好?

原因如下:

  • f/p 越接近常数 → 方差越低
  • 在贡献高的区域多采样 → 避免遗漏
  • 在无关区域少采样 → 避免浪费
  • 理想情况下 f/p 是常数 → 方差 = 0(理论最佳)

这也是构建高效采样策略、BRDF 采样、光源采样技术的数学基础。


⚡ 14. 内容要点总结

  • Monte Carlo 的误差依赖采样分布

  • 均匀采样经常效率低,特别是当函数有尖锐结构

  • 重要性采样通过引入 p(x) 降低方差

  • 使用公式:

    I=E[f(X)p(X)] I = E\left[\frac{f(X)}{p(X)}\right]
  • 最优分布是 p ∝ |f|

  • 实际渲染使用可构造的近似分布来实现

  • 正确的分布能大幅提升收敛速度、减少噪声

  • 是现代路径追踪中最重要的数学技巧之一