一、开场:为何 2π sr 是个工程难题
渲染方程最简洁的形式是:
L_o(p, ω_o) = L_e(p, ω_o) + ∫_Ω f_r(p, ω_i, ω_o) · L_i(p, ω_i) · (n · ω_i) dω_i那个看似无害的∫_Ω符号,描述的是着色点 p 上方整个半球(立体角 2π sr)上的连续积分。这个积分在数学上无法解析求解(除了 trivial 情况),工程上必须用数值方法。
为什么难?
- 维度:2π sr 的连续方向空间 → 无限多积分点;
- BRDF 复杂度:f_r 是非线性的,难以用统一公式覆盖;
- L_i 的递归:L_i 取决于场景其他表面的反射,进一步增加复杂度;
- 物理约束:积分结果必须 ≤ 1(能量守恒)。
工程上有四大策略:
| 策略 | 时间复杂度 | 内存开销 | 适用场景 |
|---|---|---|---|
| 解析 BRDF(直接光) | O(1) | 极小 | 单光源直接光照 |
| 蒙特卡洛 + 重要性采样 | <