路径追踪:全局光照的概率解法与真实感渲染的基础
简介
路径追踪(yol izleme)全局光照(global illumination)渲染方程
传统的基于的方法由于直接以光源可见性为基础,会跳过间接相互作用;而路径追踪则弥补了这一缺陷。本文将探讨该方法的数学基础、采样机制以及其在实时应用中的现状。
数学基础:渲染方程
渲染方程(Rendering Equation)由 James Kajiya 于 1983 年在其博士论文《渲染的渲染》(The Rendering of Radiance)中提出,是现代计算机图形学中用于描述光线在场景中如何传播和交互的数学框架。它本质上是一个积分方程,描述了从某个方向观察时,场景中某一点发出的总辐射亮度(Radiance)。

## 渲染方程的数学表达
渲染方程可以表示为:
L_o(p, ω_o) = L_e(p, ω_o) + ∫_Ω f_r(p, ω_i, ω_o) L_i(p, ω_i) (ω_i · n) dω_i
其中:
– L_o(p, ω_o):点 p 沿观察方向 ω_o 发出的总辐射亮度
– L_e(p, ω_o):点 p 自身发射的辐射亮度(发射项)
– f_r(p, ω_i, ω_o):双向反射分布函数(BRDF),描述光线如何从入射方向 ω_i 反射到出射方向 ω_o
– L_i(p, ω_i):点 p 从入射方向 ω_i 接收到的入射辐射亮度
– n:点 p 处的法向量
– ω_i:入射光线方向
– ω_o:出射(观察)光线方向
– Ω:半球空间(以法向量 n 为轴)
– (ω_i · n):入射光线与法向量夹角的余弦值,表示投影效应
– dω_i:立体角微元
## 核心概念解析
### 辐射亮度(Radiance)
辐射亮度是描述光线在特定方向上能量密度的物理量,单位是 W/(m²·sr)(瓦特每平方米每立体角)。它是渲染方程中的核心变量,表示从某个方向观察时表面的亮度。
### 发射项(Emission Term)
L_e 表示表面自身发出的光,例如光源、发光材质等。这一项不依赖于场景中的其他光线,是场景中光的源头。
### 反射项(Reflection Term)
反射项描述了表面如何接收并重新分布来自周围环境的入射光。这一项通过积分计算所有可能入射方向对目标方向的贡献。
#### 双向反射分布函数(BRDF)
BRDF(f_r)是渲染方程中最关键的部分,它定义了表面在给定入射方向和出射方向下的反射特性。BRDF 完全决定了材质的外观表现,包括:
– 漫反射(Diffuse):光线在表面各个方向均匀散射
– 镜面反射(Specular):光线在特定方向集中反射
– 各向异性(Anisotropic):反射特性随方向变化
#### 入射辐射亮度(Incident Radiance)
L_i 表示从各个方向到达点 p 的光线亮度。这个值本身又依赖于场景中其他点的光线传播,因此渲染方程是一个递归方程。
## 递归特性与求解
渲染方程的递归性体现在:入射辐射亮度 L_i 本身又是通过渲染方程计算得出的。也就是说,场景中一点接收到的光,来自于其他点发出的光,而其他点的光又来自于更多的点……这种无限递归的关系正是真实感渲染的核心挑战。
由于这种递归特性,渲染方程通常没有解析解,需要通过数值方法求解。主要的求解技术包括:
### 辐射度方法(Radiosity)
适用于漫反射表面主导的场景,将连续积分离散化为线性方程组求解。
### 光线追踪(Ray Tracing)
通过从相机发射光线,递归地追踪光线在场景中的反弹来计算光照。
### 路径追踪(Path Tracing)
基于蒙特卡洛积分的方法,通过随机采样光线方向来近似求解积分。
### 双向路径追踪(Bidirectional Path Tracing)
同时从相机和光源发射光线,提高采样效率。
## 渲染方程的意义
渲染方程的伟大之处在于它用一个统一的数学框架概括了所有的光照现象。无论是简单的漫反射物体,还是复杂的透明、金属、发光材质,都可以通过定义合适的 BRDF 和发射项来描述。
它奠定了现代真实感渲染的理论基础,使得计算机能够模拟出与真实世界高度相似的光照效果。理解渲染方程是掌握光线追踪、全局光照等高级渲染技术的前提。
## 扩展:更一般的渲染方程
原始的渲染方程主要考虑了表面间的反射交互,后来的研究者将其扩展以包含更多物理现象:
– 传输方程(Transport Equation):考虑介质内部的光吸收、散射等现象,用于渲染烟雾、牛奶、皮肤等半透明介质。
– 体积渲染(Volume Rendering):将渲染方程扩展到三维体积,描述光线在介质中的传播。
渲染方程作为计算机图形学的基石,持续影响着渲染技术的发展,从电影特效到实时游戏渲染,其核心思想贯穿始终。
路径追踪的核心在于Kajiya 方程,该方程以如下方式定义表面某一点处的辐射亮度:
$$L_o(x, omega_o) = L_e(x, omega_o) + int_{Omega} L_i(x, omega_i), f_r(x, omega_i, omega_o)(omega_n cdot omega_i), domega_i$$
其中,$L_o(x, omega_o)$ 表示从表面点 $x$ 沿观察方向 $omega_o$ 离开的辐射亮度(出射辐射亮度),$L_e(x, omega_o)$ 表示该点自身发出的辐射亮度(发射辐射亮度),$int_{Omega}$ 表示对上半球空间角 $Omega$ 的积分,$L_i(x, omega_i)$ 表示从入射方向 $omega_i$ 到达表面点 $x$ 的入射辐射亮度,$f_r(x, omega_i, omega_o)$ 为双向反射分布函数(BRDF),描述光线从入射方向 $omega_i$ 反射到出射方向 $omega_o$ 的比例,$omega_n$ 为表面点 $x$ 处的法向量,$(omega_n cdot omega_i)$ 表示法向量与入射方向单位向量之间的点积(即余弦因子),用于衡量入射光在表面上的投影强度。
该方程中的基本包括:
- 辐射亮度(L):
- 辐照度:
- BRDF(fᵣ):
该方程的积分构成了一个通用照明方程,其解析解无法求得;因此,路径追踪依赖于随机采样。
# 机制:概率采样与蒙特卡洛方法
概率采样是理解复杂系统的核心工具,而蒙特卡洛方法则是实现这些采样的强大数值技术。
## 概率采样的基本原理
### 为什么需要采样
在许多实际问题中,我们面对的是高维空间或复杂的概率分布,直接计算往往不可行。采样技术通过从分布中抽取样本来估计我们关心的量,从而绕过复杂的解析计算。
### 采样的核心挑战
分布匹配:采样得到的样本应当准确反映目标分布的特征。
效率问题:在高维空间中,均匀采样的效率会急剧下降,需要更智能的采样策略。
方差控制:采样估计的精度取决于估计量的方差,降低方差是提高精度的关键。
## 蒙特卡洛方法
### 基本思想
蒙特卡洛方法利用随机采样来获得数值结果,其核心思想可以通过简单的积分估计来说明。
对于积分:
$$I = int_a^b f(x) , dx$$
我们可以将其改写为期望值形式:
$$I = (b-a) int_a^b f(x) frac{1}{b-a} , dx = (b-a) , mathbb{E}[f(X)]$$
其中 $X$ 在 $[a,b]$ 上均匀分布。通过抽取 $N$ 个样本 $x_1, x_2, ldots, x_N$,我们可以估计:
$$I approx frac{b-a}{N} sum_{i=1}^N f(x_i)$$
### 收敛性分析
蒙特卡洛估计的误差遵循:
$$text{误差} sim frac{sigma}{sqrt{N}}$$
其中 $sigma$ 是被积函数的标准差。这意味着要将精度提高一倍,需要将样本量增加四倍。
## 重要性采样
### 基本动机
当被积函数在某些区域取值很大,而在其他区域取值很小时,均匀采样的效率很低。重要性采样通过从一个不同的建议分布 $q(x)$ 中采样来提高效率。
### 方法推导
我们将积分改写为:
$$I = int f(x) , dx = int frac{f(x)}{q(x)} q(x) , dx = mathbb{E}_qleft[frac{f(X)}{q(X)}right]$$
因此估计量为:
$$I approx frac{1}{N} sum_{i=1}^N frac{f(x_i)}{q(x_i)}, quad x_i sim q(x)$$
### 建议分布的选择
理想的情况下,建议分布应当与被积函数的形状相似:
$$q^*(x) propto |f(x)|$$
此时估计的方差为零。
## 马尔可夫链蒙特卡洛(MCMC)
### 核心思想
当目标分布过于复杂,无法直接采样时,MCMC 方法通过构造一条马尔可夫链,使其平稳分布恰好是我们想要采样的分布。
### Metropolis-Hastings 算法
步骤 1:从当前状态 $x^{(t)}$ 出发,从建议分布 $g(x’|x^{(t)})$ 中提出新的候选点 $x’$。
步骤 2:计算接受概率:
$$alpha = minleft(1, frac{p(x’) g(x|x’)}{p(x^{(t)}) g(x^{(t)}|x)}right)$$
步骤 3:生成均匀分布随机数 $u sim text{Uniform}(0,1)$:
– 如果 $u < alpha$,接受新点,令 $x^{(t+1)} = x’$
– 否则,拒绝新点,令 $x^{(t+1)} = x^{(t)}$
### 收敛诊断
马尔可夫链需要运行足够长的时间才能达到平稳分布。常用的诊断工具包括:
– 自相关时间:衡量样本之间的相关性
– 有效样本量:考虑自相关后的等效独立样本数
– Gelman-Rubin 统计量:通过多条链的收敛情况判断
## 方差减少技术
### 分层采样
将积分区间划分为若干子区间,在每个子区间内独立采样,从而保证样本的均匀分布。
### 配对采样
通过引入负相关性来减少估计量的方差。
### 控制变量法
利用一个与目标函数高度相关、且期望已知随机变量来修正估计。
## 实际应用示例
### 估算圆周率 π
通过向单位正方形内随机撒点,统计落在内切圆内的点的比例,可以估算 π 的值:
$$pi approx 4 times frac{text{圆内的点数}}{text{总点数}}$$
### 贝叶斯推断
在复杂的贝叶斯模型中,后验分布往往没有解析形式。通过 MCMC 采样,我们可以获得后验分布的样本,进而估计后验均值、 credible intervals 等统计量。
## 总结
概率采样和蒙特卡洛方法为处理复杂系统提供了强大的工具集。从简单的蒙特卡洛积分到复杂的 MCMC 方法,这些技术使我们能够应对直接计算无法解决的问题。理解各种方法的适用场景和局限性,是正确应用这些技术的关键。
随机路径生成
对于每个像素,会从相机生成一条。当这条光线与场景发生碰撞时,路径追踪会随机选择新的方向,将其分解为多条子光线,这一过程会持续进行,直到光线到达光源为止。每一条路径段都会通过计算其对应的,为图像值做出贡献。
蒙特卡洛积分
面积分通过期望值估计进行近似:
$$hat{I} = frac{1}{N}sum_{k=1}^{N}frac{text{(yol katkısı)}}{p(omega)}$$
此处 为样本密度函数。随着样本数量(N)的增加,根据 ,估计值会收敛于正确值;但与此同时,这也意味着误差()随 N 的平方根而减小。
重要性采样(Importance Sampling)
重要性采样是一种蒙特卡罗方法,用于通过从一个不同于目标分布的候选分布中采样,来估计某个期望值或积分。其核心思想是:当直接从一个复杂的目标分布中采样困难时,可以换一个更容易采样的分布,然后通过加权修正来获得无偏估计。
假设我们想要估计期望值:
$$
mathbb{E}_{x sim p}(f(x)) = int f(x) , p(x) , dx
$$
其中 $p(x)$ 是目标分布。我们引入一个更容易采样的建议分布(proposal distribution)$q(x)$,满足当 $p(x) > 0$ 时 $q(x) > 0$。那么可以将期望改写为:
$$
mathbb{E}_{x sim p}(f(x)) = int f(x) , frac{p(x)}{q(x)} , q(x) , dx = mathbb{E}_{x sim q}left[ f(x) , frac{p(x)}{q(x)} right]
$$
因此,我们可以通过从 $q(x)$ 中抽取 $N$ 个样本 ${x^{(1)}, dots, x^{(N)}}$,并用样本均值来估计该期望:
$$
hat{I} = frac{1}{N} sum_{i=1}^{N} f(x^{(i)}) , frac{p(x^{(i)})}{q(x^{(i)})}
$$
其中权重 $frac{p(x)}{q(x)}$ 称为重要性权重(importance weight)。
重要性采样的优点在于,通过合理选择建议分布 $q(x)$,可以显著降低估计的方差,从而提高估计效率。理想情况下,最优的建议分布应与 $f(x) p(x)$ 成正比,此时估计方差为零。然而,这种理想分布通常难以直接采样,因此在实际中需要在采样难度与方差降低之间进行权衡。
重要性采样广泛应用于贝叶斯推断、强化学习、物理模拟以及机器学习的各种近似计算场景中。
弱点在于对所有方向进行等比例采样。加权采样通过根据BRDF的形状生成定向的随机点来降低方差,这在金属和粗糙表面上起着至关重要的作用。
方差、噪声及改进技术
路径追踪的根本限制在于;在样本数量较少时,图像会呈现出颗粒感(grain)。为缓解这一问题而发展的主要方法包括:
增加样本数量
在静态场景中,每个像素可以采样数千条光线,这虽然增加了时间成本,但能够有效平均噪声。
大都会交通系统(MLT)
这是一种受先前示例启发的基于马尔可夫链的方法,在发现罕见但重要的光路方面非常有效。
双向路径追踪(Bidirectional Path Tracing)
通过同时从光源和相机路径,特别是在间接照明困难的场景中,加速收敛。则将这两种方法结合起来。
推进式追踪(Progressive Tracing)
推进式追踪是 NVIDIA Broadcast 中使用的一种技术,它通过逐帧处理音频流来实现更精确的语音分离和噪声抑制。与传统的批量处理方式不同,推进式追踪采用流式处理方法,能够实时地分析和处理音频数据。
工作原理:
推进式追踪的核心思想是将音频处理分为多个连续的阶段,每个阶段都会利用前一个阶段的信息来改进当前的处理结果。在处理每一帧音频时,系统会参考之前帧的处理结果,从而实现对声音特征的持续跟踪和优化。
主要特点:
推进式追踪具有低延迟的特性,因为它不需要等待整个音频块处理完成,而是可以逐帧输出处理结果。这种特性使得它特别适合实时通信场景,如视频会议、语音通话和游戏直播等。
技术优势:
通过持续追踪声音特征,推进式追踪能够更好地处理声音的动态变化,例如说话人移动、音量变化或环境噪声的波动。它能够更准确地识别和分离目标声音,同时有效地抑制背景噪声和其他干扰声音。
应用场景:
推进式追踪技术广泛应用于 NVIDIA Broadcast 的各种功能中,包括语音清除、噪音消除和虚拟背景等。它为用户提供清晰、专业的音频体验,特别适用于远程办公、在线教学、直播和录音等专业场景。
通过随时间累积示例来逐步改善图像质量,在交互式应用中具有优势。
行业维度:电影与实时游戏之间的差异
离线渲染引擎
_cycles(Blender)RenderManArnold
实时应用
在游戏引擎(例如技术)中,硬件支持的光线追踪与路径追踪相结合;但由于时间预算有限,通常采用较低的采样数量,从而导致噪声问题。这时便引入了以下技术:
- 基于 AI 的去噪(Denoise):
- 时空采样:
学术成果与评估
路径追踪是通过对光照进行物理正确的计算来实现渲染的基础,它是对的一种实用解法。该方法的强大之处在于其对全局交互的建模能力,而其局限则在于统计噪声和高昂的计算成本。通过采样策略(重要性采样、MLT、双向追踪)与现代技术的结合,使得该方法在电影级渲染和实时渲染领域都变得不可或缺。未来的研究主要聚焦于提升采样效率的混合方法,以及基于学习的光照建模技术。
学术评估与引用
路径追踪被认为是文献中全局光照最稳健的概率解法之一;由于解析解的不可能性,其基于蒙特卡洛的近似方法构成了该方法的理论基础。以下来源为该论文的概念依据提供了支持:
- Kajiya,J. T.(1986)。《渲染方程》。SIGGRAPH ’86 论文集。
- Veach,E.,&Guibas,L.J.(1995).。图形工具期刊。
- Veach, E.(1997)。《用于光照传输模拟的鲁棒蒙特卡洛方法》。斯坦福大学博士论文。
- Pharr,M., Jakob,W., & Humphreys,G.(2016).(第3版)。Morgan Kaufmann。
- 杜特里,P.,巴拉,K.,埃克利,P.,& 巴沃伊,P.(2014)。。AK 出版社 / CRC 出版社。
注意:
%PDF-1.5stream ... endstream
来源说明:本研究依据 https://intro-to-restir.cwyman.org/presentations/2023ReSTIR_Course_Notes.pdf 中存档的文档,以学术技术评审的形式整理并更新而成。
Have thoughts, questions, or benchmarks on this topic? Join the discussion on our forums.
Join Discussion ➔
参与讨论