中EN
概念页

蒙特卡洛积分与重要性采样

Monte Carlo Integration & Importance Sampling

渲染方程里的半球积分没有闭式解,只能数值积分。蒙特卡洛积分在定义域里随机取样、按概率密度加权求平均,期望值正好等于积分真值,误差随样本数 NN 按 1/N1/\sqrt{N} 下降,而且与积分维数无关,所以成了光线追踪类渲染的数学基础。降低误差的主要手段是让采样分布接近被积函数的形状,也就是重要性采样(GEA4 卷 II 12.6.2、12.6.4)。

两类数值积分

GEA 把求解渲染方程的数值积分方法分成两类(卷 II 12.6 节引言):

  • 有限元方法:把问题切成足够小的有限单元,假设被积函数在单元内近似常数,把积分化成可解的求和。用在辐射度量学里就是辐射度方法 (Radiosity),见 渲染方程。
  • 随机方法(统计方法):在定义域内随机取样点求被积函数,靠概率论保证样本平均随样本数增加收敛到真值。渲染中最常用的是蒙特卡洛估计器;用到几何光学上,就是在场景里随机发射光线来估计相机传感器收到的辐射亮度(或亮度)。

Kajiya 除了提出渲染方程,另一大贡献就是证明可以用随机方法近似半球积分(卷 II 12.6.2)。

直观例子与基本估计器

  • 估计圆面积:在边长 2r2r 的正方形内随机撒点,落入圆内的比例近似 πr2/4r2\pi r^2/4r^2(卷 II 12.6.2.1)。
  • 一维积分:要求 Y=∫aby(x) dxY=\int_a^b y(x)\,dx,在 [a,b)[a,b) 内均匀随机取 XX,(b−a) y(X)(b-a)\,y(X) 就是一个很粗的矩形近似;取 NN 个样本求平均得到蒙特卡洛估计器(书中例子 y=−x3+5x2−4x+20y=-x^3+5x^2-4x+20,a=0.5a=0.5,b=4b=4,真值约 80.974):

⟨YN⟩=(b−a)1N∑i=1Ny(Xi)\langle Y^N\rangle=(b-a)\frac{1}{N}\sum_{i=1}^{N}y(X_i)

尖括号表示估计器,上标 NN 只是样本数的记号,不是指数(卷 II 12.6.2.2)。

概率论回顾

  • 随机变量把随机过程的结果映射成数值;累积分布函数 FX(x)=Pr⁡{X≤x}F_X(x)=\Pr\{X\le x\} 从 0 单调增到 1;概率密度函数 (PDF) 是它的导数 pX=dFX/dxp_X=dF_X/dx。
  • 期望 E[X]=∑piXiE[X]=\sum p_iX_i;连续情形 E[Y]=∫Ωy(x) pX(x) dxE[Y]=\int_\Omega y(x)\,p_X(x)\,dx;方差 σ2[Y]=E[Y2]−E[Y]2\sigma^2[Y]=E[Y^2]-E[Y]^2(卷 II 12.6.2.3)。

一般形式与无偏性

(b−a)(b-a) 其实是均匀分布 PDF 的倒数,换成任意采样分布的 PDF 就得到一般形式(卷 II 12.6.2.4):

⟨YN⟩=1N∑i=1Ny(Xi)pX(Xi)\langle Y^N\rangle=\frac{1}{N}\sum_{i=1}^{N}\frac{y(X_i)}{p_X(X_i)}

利用 E[aY]=aE[Y]E[aY]=aE[Y] 和"和的期望等于期望的和",可以推出估计器的期望正好是积分真值(卷 II 12.6.2.5)。同样的估计器可以直接用于 nn 维积分;渲染方程里的积分对立体角或面积是二维的,但由于光会多次反弹,整个光传输问题的维数理论上是无穷的,实践中靠限制反弹次数让问题可解(卷 II 12.6.2.6)。

误差与收敛速度

估计器的标准差与 1/N1/\sqrt{N} 成正比,并且等于样本本身的标准差除以 N\sqrt{N}:

σ[⟨FN⟩]=σsamplesN\sigma[\langle F^N\rangle]=\frac{\sigma_{\text{samples}}}{\sqrt{N}}

因此误差减半需要样本数翻四倍。这个收敛速度不算快,但多数其他数值积分方法的收敛速度依赖维数,高维问题上蒙特卡洛因此占优(卷 II 12.6.2.7、12.6.4)。在光线追踪器里,误差表现为图像噪点。

降低误差有两条路:增加样本数,或降低样本本身的方差,也就是更聪明地选随机光线方向(选一个让样本方差更小的 PDF)。

在半球上均匀采样

直接把两个球坐标角各自均匀随机,点不会均匀分布在半球上,因为立体角微元 dω=sin⁡θ dθ dϕd\omega=\sin\theta\,d\theta\,d\phi 里有 sin⁡θ\sin\theta。正确做法是取两个 [0,1)[0,1) 均匀随机数 u,vu,v,令方位角 =2πu=2\pi u、极角 =arccos⁡v=\arccos v;反余弦正好"抵消"了 sin⁡θ\sin\theta 因子。均匀分布时 PDF 为常数,在半球上积分为 1,得 p=1/2πp=1/2\pi(卷 II 12.6.3.6)。

重要性采样

估计器的每一项是 y/py/p。如果 pp 与 yy 形状完全一样(成正比),每个样本取值相同,方差为零。yy 本身未知,但可以利用场景、BRDF 和光源位置的知识,让 pp 尽量接近 yy 的形状,这就是重要性采样(卷 II 12.6.4.1):

  • 余弦采样:朗伯反射在掠射角附近贡献接近零、法线附近最亮,所以把光线集中在法线附近,p(ℓ)=(n⋅ℓ)/πp(\ell)=(\mathbf{n}\cdot\ell)/\pi。被省掉的方向本来贡献就接近零。
  • 向"有意思"的方向发射光线,例如沿每个光源的理想镜面反射方向、沿理想折射方向各发一条。
  • 多重重要性采样 (MIS):组合几种各自都不错的采样策略,保留各自的长处(卷 II 12.6.4.2)。

俄罗斯轮盘赌

递归光线追踪需要终止条件。固定最大深度会引入偏差,因为最重要的光路不一定最短。俄罗斯轮盘赌给每条光线引入一个"吸收"概率:掷骰子,结果小于阈值 PP 才继续递归,否则当作光被吸收;为了不改变期望,继续的那部分要除以 PP 补偿(卷 II 12.6.3.7)。

GEA 原书中的问题(原书问题)

以下按原文与常规定义并列,未直接改写原书结论。概率论定义的依据:Pharr, Jakob, Humphreys《Physically Based Rendering》第 4 版 2.1 节(PDF 定义、估计器方差 ∝1/N\propto 1/N、标准差 ∝1/N\propto 1/\sqrt N,在线版 pbr-book.org);Wikipedia "Probability density function"、"Monte Carlo integration"。

位置原书说法常规定义 / 书中别处说法
12.6.2.7估计器的"方差"正比于 1/N1/\sqrt{N};同节又称方差 σ 是标准差的平方书中公式实际写的是 σ\sigma(标准差)∝1/N\propto 1/\sqrt{N};按 12.6.2.3 的定义,方差是 σ2∝1/N\sigma^2\propto 1/N。"误差减半需四倍样本"对应的是标准差
12.6.2.3PDF 的值就是取到该值的概率,pX(x)=Pr⁡{X=x}p_X(x)=\Pr\{X=x\}对连续随机变量,单点概率为 0,PDF 是概率密度;书中随后用 FX=∫pXF_X=\int p_X 的关系本身是对的
12.6.3.6写成 θ=2πu\theta=2\pi u、ϕ=cos⁡−1v\phi=\cos^{-1}v,并称反余弦让"方位角 φ"均匀与本书 12.2.3.1 自己的约定(θ 为极角、φ 为方位角)正好相反;按该约定应为 ϕ=2πu\phi=2\pi u、θ=arccos⁡v\theta=\arccos v,本页按后者写
12.6.3.6"推导式 (12.23) 时见过,这个二重积分等于 2π"式 (12.23) 推导的是 ∫cos⁡θsin⁡θ\int\cos\theta\sin\theta,值为 π;这里的 ∫sin⁡θ\int\sin\theta 才是 2π,结论 p=1/2πp=1/2\pi 本身正确
12.6.4.1若 pp 与 yy 完全一致,求和里的每个样本都等于 1PDF 必须归一化,所以零方差的 PDF 是 p=y/∫yp=y/\int y(要求 y≥0y\ge0),此时每个样本 y/py/p 都等于积分值 YY 本身,而不是 1;只有在 Y=1Y=1 时两者才一致。这也说明零方差 PDF 需要先知道答案(pbrt 4e 2.2.2 "Importance Sampling")
12.6.4.1"蒙特卡洛积分的全部意义就是近似 yy"近似的是积分 Y=∫yY=\int y;yy 在每个样本点都可以求值,未知的是它的积分(即 pp 的归一化常数)
12.6.2.4(b−a)(b-a) 是"XiX_i 取到某个特定值的概率"的倒数应为均匀分布概率密度 1/(b−a)1/(b-a) 的倒数;连续变量取任一特定值的概率为 0(同 12.6.2.3 一行)
12.6.2.5推导中把估计器写成 E[⟨FN⟩]E[\langle F^N\rangle]与 12.6.2.2 定义的 ⟨YN⟩\langle Y^N\rangle 记号不一致,指的是同一个估计器;推导也只针对均匀 PDF 的式 (12.32),一般式 (12.35) 的无偏性同理成立(要求 y≠0y\neq0 处 p>0p>0,pbrt 4e 2.1.3)
12.6.2.6x\mathbf{x}、dxd\mathbf{x}、yy、YY 都是 nn 维向量积分变量 x\mathbf{x} 在 nn 维定义域里,dxd\mathbf{x} 是 nn 维体积微元(标量),被积函数与积分值一般是标量(渲染里是每个颜色通道的辐射亮度);见 Wikipedia "Monte Carlo integration"
12.6.3.7俄罗斯轮盘赌要"把被积函数乘 1/P,并且最终结果也乘 1/P"常规做法是只对存活路径除以一次存活概率;乘两次会改变期望。原书指向 Dutré 等《Advanced Global Illumination》5.3.2 节的推导

PBRT 的视角

pbrt 第 4 版(下称 PBRT)第 2 章把蒙特卡洛当作全书的数学底座来讲,比 GEA 更形式化,并且直接给出 pbrt 里用到的方差缩减手段。下面按节归纳;采样分布的构造(逆变换法、雅可比变换、边缘/条件密度)放在 随机变量变换与逆变换采样。

估计器、无偏与收敛(2.1 节)

  • 随机算法分两类:拉斯维加斯 (Las Vegas) 算法结果总是一样(如随机选主元的快排),蒙特卡洛算法结果随随机数变化、但平均意义上正确(第 2 章引言)。
  • 一般估计器 Fn=1n∑i=1nf(Xi)/p(Xi)F_n=\frac1n\sum_{i=1}^n f(X_i)/p(X_i)(式 2.7),唯一要求是 ∣f(x)∣>0|f(x)|>0 处 p(x)>0p(x)>0。pbrt 里 RandomWalkIntegrator 的 1/(4π)1/(4\pi) 因子就是球面均匀采样的 PDF(2.1.3)。
  • 方差 V[F]=E[F2]−E[F]2V[F]=E[F^2]-E[F]^2(式 2.9);独立样本的方差可加(式 2.10),所以方差按 1/n1/n、误差(标准差)按 O(n−1/2)O(n^{-1/2}) 下降,且与维数无关(2.1.4)。
  • 效率 ϵ[F]=1/(V[F] T[F])\epsilon[F]=1/(V[F]\,T[F]):方差减半但耗时三倍的估计器反而更差,因为同样时间里前者可以取三倍样本、得到 3 倍方差缩减(2.1.4)。
  • 偏差 β=E[F]−∫f\beta=E[F]-\int f;有偏但误差随 n→∞n\to\infty 趋零的估计器叫一致 (consistent)。Kalos & Whitlock 的例子:估计 U[0,1]U[0,1] 的均值,1n∑Xi\frac1n\sum X_i 无偏、方差 O(n−1)O(n^{-1});12max⁡(X1,…,Xn)\frac12\max(X_1,\dots,X_n) 的期望为 0.5 n/(n+1)0.5\,n/(n+1)(n=10n=10 时 ≈0.4545\approx0.4545),有偏但方差 O(n−2)O(n^{-2})。pbrt 的估计器基本都无偏,例外是 SPPMIntegrator(随机渐进光子映射)。
  • 均方误差 MSE=E[(F−∫f)2]\mathrm{MSE}=E[(F-\int f)^2] = 方差 + 偏差²;样本方差用 1n−1∑(Xi−Xˉ)2\frac1{n-1}\sum(X_i-\bar X)^2(Bessel 修正,式 2.11),数值稳定算法见附录 B.2.11。样本方差本身也有方差:一个 99.99% 取 1、0.01% 取 10610^6 的变量,十个样本全是 1 时样本方差为 0。pbrt 自带的 imgtool diff 可以对参考图算 MSE。

分层采样(2.2.1)

把定义域 Λ\Lambda 切成互不重叠、覆盖全域的层 Λi\Lambda_i(体积占比 viv_i),每层取 nin_i 个样本。取 ni=vinn_i=v_in 时分层估计器方差为 1n∑viσi2\frac1n\sum v_i\sigma_i^2,而不分层的方差是

V[F]=1n[∑viσi2+∑vi(μi−Q)2](式 2.12)V[F]=\frac1n\Big[\sum v_i\sigma_i^2+\sum v_i(\mu_i-Q)^2\Big]\quad(\text{式 2.12})

(μi\mu_i 为层内均值,QQ 为全域均值)。右边第二项非负,所以分层永远不会增大方差,只有各层均值完全相同时才没有收益;层越紧凑、各层均值差得越多越好。缺点是维数灾难:DD 维每维 SS 层需要 SDS^D 个样本,实际做法是各维分别分层再随机配对(第 8 章 8.5),并优先分层对被积函数影响相关性最强的维度(Owen 1998)。

重要性采样的数值例子(2.2.2)

p∝fp\propto f 时 p=f/∫fp=f/\int f,每个样本 f/pf/p 都等于积分本身,方差为零,但需要先知道答案;实际只求 pp 与 ff 形状相近。书中例子:f(x)=e−1000(x−1/2)2f(x)=e^{-1000(x-1/2)^2} 在 [0,1][0,1] 上积分(真值 π/1000≈0.05605\sqrt{\pi/1000}\approx0.05605)。

  • 均匀采样:方差约 0.0365(本页复算 0.03649,一致)。
  • 好的分段常数 PDF([0.45,0.55)[0.45,0.55) 上 9.1,其余 0.1,积分为 1):书中说方差降约 6.7 倍。
  • 差的 PDF([0.4,0.6)[0.4,0.6) 上 0.2,其余 1.2):书中说比均匀采样高约 5.4 倍(复算 5.34,一致),比好的 PDF 高"近 36 倍"。
  • 复算出入见下文"原书问题"。

多重重要性采样(2.2.3)

被积函数常是乘积 fafbf_af_b(BSDF × 入射辐亮度 × 余弦)。只按 pap_a 采样,方差正比于 fbf_b 的方差,反之亦然;两种估计器简单平均也没用,因为方差可加,加进来的方差去不掉。MIS 估计器:

Fn=∑i1ni∑j=1niwi(Xi,j)f(Xi,j)pi(Xi,j)F_n=\sum_{i}\frac1{n_i}\sum_{j=1}^{n_i}w_i(X_{i,j})\frac{f(X_{i,j})}{p_i(X_{i,j})}

无偏条件:f≠0f\ne0 处 ∑iwi=1\sum_iw_i=1,且 pi=0p_i=0 处 wi=0w_i=0。

  • 平衡启发式 (Balance Heuristic) wi=nipi/∑jnjpjw_i=n_ip_i/\sum_jn_jp_j(式 2.14):每个样本除以"所有策略在该点的 PDF 之和",某策略低概率撞到的高值样本被自动压低。
  • 幂启发式 (Power Heuristic) wi=(nipi)β/∑j(njpj)βw_i=(n_ip_i)^\beta/\sum_j(n_jp_j)^\beta(式 2.15),pbrt 固定 β=2\beta=2,通常方差更低。pbrt 只实现两分布版本(BalanceHeuristic()、PowerHeuristic())。
  • 单样本模型 (Single-Sample Model):以概率 qiq_i 选一种策略取一个样本,估计 wi(X)qif(X)pi(X)\frac{w_i(X)}{q_i}\frac{f(X)}{p_i(X)}(式 2.16);此时平衡启发式可证明最优。
  • 如果某一策略本身已与被积函数完美匹配,MIS 会略增方差;渲染中几乎总是值得用。
  • MIS 补偿 (MIS Compensation):只要求至少一个 PDF 在 f≠0f\neq0 处非零,所以可以把其中一个分布"削尖":p′(x)=max⁡(0,p(x)−δ)/∫max⁡(0,p−δ)p'(x)=\max(0,p(x)-\delta)/\int\max(0,p-\delta),把低值区域交给其他策略。对表格化分布特别容易,pbrt 用于环境贴图光源采样(12.5 节)。

俄罗斯轮盘赌与分裂(2.2.4–2.2.5)

  • 俄罗斯轮盘赌:以概率 qq 不求估计器、用常数 cc(常取 0)代替;否则求值并按 F′=(F−qc)/(1−q)F'=(F-qc)/(1-q) 加权。E[F′]=(1−q)E[F]−qc1−q+qc=E[F]E[F']=(1-q)\frac{E[F]-qc}{1-q}+qc=E[F]。它从不降低方差(除非 c=Fc=F),只是通过跳过贡献小的昂贵样本(如可见性光线)提升效率。
  • 分裂 (Splitting):对 ∫A∫Bf\int_A\int_Bf,每个外层样本 XiX_i 配 mm 个内层样本 Yi,jY_{i,j},估计 1n∑i1m∑jf(Xi,Yi,j)px(Xi)py(Yi,j)\frac1n\sum_i\frac1m\sum_j\frac{f(X_i,Y_{i,j})}{p_x(X_i)p_y(Y_{i,j})}。渲染中的例子:每条相机光线(像素面积积分)配多条光照积分样本,摊薄相机光线的成本。

与 GEA 的对照

话题GEA4PBRT 4e
俄罗斯轮盘赌补偿被积函数乘 1/P1/P,"最终结果也乘 1/P1/P"只对存活样本乘一次 1/(1−q)1/(1-q)(qq 是终止概率),期望不变;并强调它增方差、提效率
误差与样本数写成"方差 ∝ 1/N1/\sqrt N"方差 ∝ 1/n1/n,误差(标准差)∝ n−1/2n^{-1/2}
PDF 的值当作取到该值的概率PDF 是相对概率密度,单点值可以大于 1
方差缩减手段余弦采样、MIS、俄罗斯轮盘赌另有分层、MIS 补偿、分裂、效率指标、有偏/一致估计器的讨论

原书问题(PBRT 第 2 章)

位置原书说法核对结果 / 来源
2.2.2对 f=e−1000(x−1/2)2f=e^{-1000(x-1/2)^2},"X<0.2X<0.2 或 X>0.3X>0.3 的样本没什么用,因为峰在 1/41/4 附近"按书中自己的公式,峰在 x=1/2x=1/2;书给的"好 PDF"把高密度放在 [0.45,0.55)[0.45,0.55),也对应峰在 1/21/2。0.2/0.3/1/40.2/0.3/1/4 与公式不符(像是旧版峰在 1/4 的残留;本页另算:峰换成 1/4 时均匀采样方差同为 0.0365,无法区分)。图 2.2 的问题见 pbr-book-website issue #16(已关闭)
2.2.2好 PDF 使方差降"约 6.7 倍";差 PDF 比好 PDF 高"近 36 倍"本页用数值积分复算 V=∫f2/p−(∫f)2V=\int f^2/p-(\int f)^2:均匀 0.03649,好 PDF 0.001827(降 约 20.0 倍),差 PDF 0.1950(比均匀高 5.34 倍,与书一致;比好 PDF 高 约 107 倍)。另用 400 万样本蒙特卡洛模拟验证好 PDF 方差为 0.001827。书中"36 倍"正是 6.7×5.46.7\times5.4,所以问题出在 6.7 这个数
2.2.2差 PDF 在峰附近"p(x)=0.4p(x)=0.4"书中给出的该 PDF 在 [0.4,0.6)[0.4,0.6) 上是 0.2(这样积分才为 1:1.2×0.4+0.2×0.2+1.2×0.4=11.2\times0.4+0.2\times0.2+1.2\times0.4=1)
2.2.1分层估计器整体方差写成 V[Fn]V[F_n]下标 nn 与上文"整体估计器 FF"记号不一致,见 pbr-book-website issue #20(未关闭)
第 2 章习题 2要求"用数值实验证明方差以 O(n)O(n) 的速率下降"应为 O(1/n)O(1/n)(即 O(n−1)O(n^{-1})),与 2.1.4 节"方差随样本数线性下降"一致;SVG 字形解码为 O ( n ),没有负指数。来源:https://pbr-book.org/4ed/Monte_Carlo_Integration/Exercises (2026-10-13 抓取)
2.5 参考文献Kondapaneni et al. 2019, ACM TOG (SIGGRAPH) 37 (4), 37:1–14应为卷 38 (4),Article 37(2019 年 7 月)。来源:https://doi.org/10.1145/3306346.3323009
2.5 参考文献Subr and Arvo 2007a 写成发表于 "Pacific Graphics '97"年份是 2007,应为 Pacific Graphics 2007(第 9 章参考文献有同样问题,见 双向反射分布函数 的原书问题)

PBRT 的视角(第 8 章):频域方差分析与拟蒙特卡洛

方差的傅里叶分析(8.2.1)

假设:样本均匀、等权(不做重要性采样),估计器无偏,样本性质在环面平移下均匀。用傅里叶级数(而非傅里叶变换,避免定义域边界的不连续带来 Gibbs 误差)表示 [0,1)[0,1) 上的函数,把估计器写成 ∫f(x)s(x)dx\int f(x)s(x)dx,其中 s(x)=1n∑iδ(x−xi)s(x)=\frac1n\sum_i\delta(x-x_i)。由于 s0=1s_0=1,误差为 ∣∑j≠0fj‾sj∣\big|\sum_{j\ne0}\overline{f_j}s_j\big|,方差为 V[1n∑if(xi)]=∑j≠0Pf(j) Ps(j).V\Big[\frac1n\sum_i f(x_i)\Big]=\sum_{j\ne0}\mathcal P_f(j)\,\mathcal P_s(j). 推论:

  • 采样模式的功率谱应在函数功率谱大的地方小。函数能量通常集中在低频,所以采样模式应在低频能量小,也就是蓝噪声,与抗锯齿的要求相同(见 抗锯齿)。
  • 白噪声采样 Ps=1/n\mathcal P_s=1/n,方差 O(1/n)O(1/n),与第 2 章结论一致。二维抖动对光滑被积函数可达 O(n−2)O(n^{-2})。
  • 带限函数只要采样率超过最高频率就能零方差积分,约为完美重建所需采样率的一半(Durand 2011)。书中说"至少等于",差一个边界情形,见下文原书问题。
  • 泊松圆盘采样多年被认为优于抖动,但其 PSD 在低频一直残留少量能量,渐近方差不会好于 O(n−1)O(n^{-1}),比抖动差(小 nn 时可能更好)。

差异度、QMC 与 RQMC(8.2.2)

  • 星差异度 Dn∗D_n^*:对所有以原点为一角的盒子,取"盒内点数占比"与"盒子体积"之差的上确界。例:一维 xi=i/nx_i=i/n 的 Dn∗=1/nD_n^*=1/n,改为 (i−12)/n(i-\tfrac12)/n 后为 1/(2n)1/(2n),这是一维最优。书中图 8.19:4 个点中 1 个落在 0.3×0.30.3\times0.3 的盒内,该盒的差异为 0.25−0.09=0.160.25-0.09=0.16。
  • 低差异:Dn∗=O((log⁡n)d/n)D_n^*=O((\log n)^d/n)。Koksma–Hlawka 不等式 ∣∫f−1n∑f(xi)∣≤Dn Vf|\int f-\frac1n\sum f(x_i)|\le D_n\,\mathcal V_f(Vf\mathcal V_f 为全变差)。所以 QMC 误差渐近接近 O(n−1)O(n^{-1}),优于 MC 的 O(n−1/2)O(n^{-1/2})。
  • 一维中均匀网格差异度最优,但傅里叶分析却偏好抖动,两种分析视角在这里不一致。高维低差异点远不如一维均匀,实践中效果好,但规则性仍可能带来走样。
  • QMC 是确定性的,不能用方差衡量;随机化 QMC (RQMC) 在不破坏差异度的前提下随机化,又可以谈方差,而且可能提高收敛率。RQMC 是 pbrt 大多数积分算法的基础。各种序列的构造见 低差异序列。
  • 隐患:采样器给出的拟随机点若被不适合 QMC 的算法使用,可能引入细微错误;书中的积分器都没有这种情况。

原书问题(8.2 节;2026-10-13 按书中式 8.8 的 e−i2πjxe^{-i2\pi jx} 约定复核,均成立)

  • 8.2.2 写"随着被积函数维度 dd 增大,低差异积分误差趋近 O(n−1)O(n^{-1})"。由 (log⁡n)d/n(\log n)^d/n 可知 dd 越大界越差;趋近 O(n−1)O(n^{-1}) 的是固定 dd 时样本数 nn 增大的极限。
  • 式 (8.9) 傅里叶级数合成式写成 f(x)=∑jfje−i2πjxf(x)=\sum_j f_je^{-i2\pi jx},与分析式 (8.8) 的 e−i2πjxe^{-i2\pi jx} 同号,应为 e+i2πjxe^{+i2\pi jx}(SVG 解码确认负号)。
  • 8.2.1 零方差条件差一个边界(2026-10-13 审读新增):书中说带限函数(fj=0f_j=0,∣j∣>jmax⁡|j|>j_{\max})只要采样率"至少等于"最高频率,就有"sj=0s_j=0 对所有 0<j<jmax⁡0<j<j_{\max}"并得到零方差估计。均匀网格 nn 点的 sjs_j 在 n∣jn\mid j 时为 1、否则为 0;要消掉误差需要 sj=0s_j=0 对 0<∣j∣≤jmax⁡0<|j|\le j_{\max} 成立,即 n>jmax⁡n>j_{\max}。反例:f=cos⁡(2π⋅2x)f=\cos(2\pi\cdot2x)(jmax⁡=2j_{\max}=2,积分为 0),取 n=2n=2 个等距点 {0,12}\{0,\tfrac12\} 得估计值 1,取 {14,34}\{\tfrac14,\tfrac34\} 得 −1-1,都不是 0。所以条件应是采样率严格大于最高频率,范围也应包含 jmax⁡j_{\max}。延伸阅读对 Durand(2011)的转述("只需等于")也是同样的问题。
  • 8.2 延伸阅读文献表 "Singh et al. 2019a ... 38 (2), 473–71" 页码有误,应为 473–491(Crossref,https://doi.org/10.1111/cgf.13653)。
  • 式 (8.11) 最右端 ∑j∈Z∗fj‾sj\sum_{j\in\mathbb Z^*}\overline{f_j}s_j 少了绝对值。
  • 8.4 说独立均匀随机点的差异度"为 1,最坏",论据是所有点都取 0 或 1 这种极端情形,指的是最坏情况。随机点集差异度的典型量级其实约为 O(log⁡log⁡n/n)O(\sqrt{\log\log n/n})(重对数律),远小于 1。属于表述过强。

取舍

  • PBRT 的补充:俄罗斯轮盘赌与分裂是用方差换时间(或时间换方差)的效率工具,比较估计器时看 1/(V⋅T)1/(V\cdot T) 而不是只看方差。
  • 优点:只需对被积函数做点评估、实现简单、与维数无关、样本越多越准,可以渐进细化。
  • 缺点:收敛慢,交互帧率下每像素只有很少样本,必然有噪点,因此实时路径追踪离不开降噪(见 随机光线追踪与路径追踪)。
  • 采样策略要无偏:截断深度、只采部分方向等做法会让图像系统性偏暗或偏色,而不是仅仅更"噪"。

GPU Gems 的视角:实时 BRDF 重要性采样与 mip 过滤(GPU Gems 3 第 20 章)

来源:同 Colbert & Křivánek;摘录见 Chapter 20. GPU-Based Importance Sampling — Colbert, Křivánek。把经典 MC 估计量搬进单通道片元着色器。

Phong 光泽瓣归一化为 PDF 后,用边际/条件概率把二维均匀随机数映成球坐标方向(式 7–8),再转到世界系。低差异序列降低 discrepancy;样本数少时用环境图 mip 当滤波器抑制走样,等价于「每个样本代表一块立体角」。这是实时路径上「重要性采样 + 预过滤」的早期实用配方,与 PBRT 离线多技术 MIS 目标相同但约束在固定样本预算与 GPU 常量寄存器。

  1. Game_Engine_Architecture_4th_Edtion_Volume_2_-_Jason_Gregory.pdf
  2. Jason Gregory《Game Engine Architecture》第 4 版(2026)卷 II 第 12 章 12.6 节引言、12.6.2、12.6.3.6、12.6.3.7(终止条件)、12.6.4.1–12.6.4.2 节
  3. PBRT 4e source excerpt: chapter 02 (Monte Carlo Integration)
  4. Pharr, Jakob, Humphreys《Physically Based Rendering: From Theory to Implementation》第 4 版(MIT Press, 2023)第 2 章 2.1–2.4 节,pbr-book.org/4ed/Monte_Carlo_Integration
  5. PBRT 4e source excerpt: chapter 08 (Sampling and Reconstruction)
  6. Pharr, Jakob, Humphreys《Physically Based Rendering: From Theory to Implementation》第 4 版(MIT Press, 2023)第 8 章 8.2、8.4 节,pbr-book.org/4ed/Sampling_and_Reconstruction
  7. Chapter 20. GPU-Based Importance Sampling — Colbert, Křivánek
  8. developer.nvidia.com/gpugems/gpugems3/part-iii-rendering/chapter-20-gpu-based-importance-sampling

相关页面

图形学渲染方程Rendering Equation渲染方程 (Kajiya, 1986) 把"某点接收到的光就是其他点发出或反射的光"写成递归积分,概括了光从光源出发经任意次反弹到达眼睛的所有路径。反射方程是它的受限特例。离线用辐射度 (Radiosity) 或蒙特卡洛路径追踪求解;实时渲染则靠简化和预计算逼近它(RTR4 第 11 章)。图形学随机光线追踪与路径追踪Stochastic Ray Tracing & Path Tracing光线追踪用投射光线同时解决可见性问题和光照问题。GEA 从最简单的"眼睛光线 + 着色方程"讲起,逐步加入阴影光线、透射光线、用蒙特卡洛估计渲染方程的随机光线追踪、递归间接光照,再到每次只走一条路径的路径追踪、双向路径追踪和 Metropolis 光传输,最后讨论降噪与光线投射效率(GEA4 卷 II 12.6.3–12.6.5)。游戏数学伪随机数生成Pseudorandom Number Generation游戏引擎到处要用随机数,但随机数生成器 (RNG) 并不真正随机:它只是给出一个复杂但完全确定、预先定义的序列,因此严格说应叫伪随机数生成器 (PRNG)。好坏取决于周期(多久重复)和能否通过各种公认的随机性测试。GEA 介绍了线性同余、梅森旋转、Marsaglia 的 Mother-of-All / Xorshift / KISS99,以及 PCG。图形学辐射度量学与光度学Radiometry & Photometry辐射度量学精确度量电磁辐射,是基于物理渲染的第一步;光度学用人眼灵敏度对它加权。渲染中最重要的量是辐射亮度 L:眼睛和相机测的就是它,着色方程要算的也是沿视线的辐射亮度。图形学双向反射分布函数BRDFBRDF f(\mathbf{l},\mathbf{v}) 量化局部反射:只依赖入射方向 \mathbf{l} 和出射(观察)方向 \mathbf{v},涵盖表面反射与局部次表面散射。它通过反射方程把入射辐射亮度转换为出射辐射亮度,物理上需满足 Helmholtz 互易性与能量守恒,用方向反照率检验。方向光和精确光源可从小面光源的极限推导,使积分变为对光源的求和。本页对应 RTR4 9.3–9.4 节。游戏开发 · UE5硬件光线追踪与路径追踪器Hardware Ray Tracing & Path TracerUE5 的硬件光线追踪 (HWRT) 大部分功能都集成在 Lumen 里;也有光追阴影等独立功能。Lumen 在显卡、RHI 和操作系统支持时使用 HWRT,否则回退到软件光追;反射光线可以用表面缓存(快)或命中点光照(质量高)来着色;实例超过 10 万时,HWRT 的场景更新开销很大。路径追踪器 (Path Tracer) 是渐进式、硬件加速的无偏渲染模式,用作 ground truth 参考和影视级最终输出,与 Sequencer/Movie Render Queue 集成。游戏数学描述统计与显著性检验Descriptive Statistics & Significance Testing概率是"已知随机过程、预测结果",统计则反过来——"已知结果数据、反推随机过程的性质"。Schreiber 与 Romero 第 24 章(p.583–602)给出设计师分析试玩与运营数据最常用的工具:均值、中位数与标准差的对照解读,离群值的处理,统计显著性与 Z 检验,相关系数,以及安斯库姆四重奏、样本量、样本偏差、埋点 bug、相关≠因果等常见错误。本页还补充了原书对 p 值的解释与主流统计学观点的分歧。游戏数学随机变量变换与逆变换采样Random Variable Transforms & Inversion Sampling蒙特卡洛估计器要求能从指定的概率密度里抽样。最基本的工具是逆变换法 (Inversion Method):对 CDF 求逆,把 [0,1) 上的均匀随机数映射成目标分布;更一般地,随机变量经过一一映射后的密度由导数(多维时是雅可比行列式)决定;多维非独立分布则先采边缘密度、再采条件密度。本页按 PBRT 第 4 版 2.1.1、2.3、2.4 节整理,是 蒙特卡洛积分与重要性采样 的数学部分。图形学光谱渲染Spectral Rendering光谱渲染 (Spectral Rendering) 在光传输中直接处理波长,而不是 RGB 三元组。pbrt 第 4 版在每条相机光线上随机采样少数几个波长(默认 4 个),把光谱积分并入渲染本来就在做的蒙特卡洛积分;最后用颜色匹配函数估计像素的 XYZ/RGB。输入端的 RGB 颜色则通过"sigmoid 二次多项式"转换成平滑光谱。本页按 PBRT 4e 4.5、4.6.4–4.6.6 节整理。游戏数学形状采样Shape Sampling把形状当作面光源时,需要在形状上采样点。最简单的是按面积均匀采样再把 PDF 换算成立体角;更好的是只在参考点看得到的立体角内均匀采样,消掉 1/r^2 和背面带来的方差。本页按 PBRT 第 4 版第 6 章整理各种形状的采样公式及其推导要点。游戏数学信号与线性时不变系统Signals & LTI Systems信号与系统理论是几乎所有数字音频技术的数学基础,也用于图像处理、电子、流体等领域。核心结论是:线性时不变 (LTI) 系统完全由它的冲激响应 h 描述,任意输入的输出等于输入与 h 的卷积;借助傅里叶变换,时域卷积等于频域乘法,滤波器就是在频域里按频率响应 H(\omega) 衰减部分频率(GEA4 卷 II 15.2)。游戏数学低差异序列Low-Discrepancy Sequences低差异序列 (low-discrepancy sequences) 是一类确定性的点序列,在 [0,1)^d 中分布得比随机点更均匀(星差异度 O((\log n)^d/n)),用于拟蒙特卡洛 (QMC) 积分和渲染中的采样。常见构造是基于根反演 (radical inverse) 的 van der Corput、Halton、Hammersley,以及基于二进制生成矩阵的 Sobol'。实际渲染中会对它们做随机加扰 (scrambling)(随机数字置换、Owen 加扰),既能估计方差、去掉高维投影中的规则图案,又能提高收敛率。本页以 PBRT 4e 8.5–8.7 节为主。图形学抗锯齿Antialiasing渲染本质上是采样,采样频率不足就会混叠(锯齿、闪烁的"萤火虫"、车轮倒转)。屏幕空间抗锯齿在每个像素取多个样本并加权求和:超采样最直接但最贵,MSAA 每像素只着色一次,时间抗锯齿 (TAA) 把样本分散到多帧,形态学方法 (FXAA/SMAA) 作为后处理重建边缘。没有一种方法在所有方面最好。游戏数学零散射与透射率估计Null Scattering & Transmittance Estimation透射率 Tr=e^{-\tau} 在非均匀介质里没有解析解。直接估计光学厚度 \tau 再取指数会因 Jensen 不等式产生偏差;零散射 (null scattering) 用一个常数上界(majorant)\sigma{maj} 把介质"填满"成均匀介质,得到可无偏采样的积分方程,由此推出 next-flight、比率追踪 (ratio tracking) 和 delta 追踪 (delta tracking) 等估计器。本页对应 PBRT 4e 11.2 与 11.4.3。图形学多光源采样与光源 BVHMany-Light Sampling & Light BVH场景有成百上千个光源时,不可能在每个着色点对所有光源做直接光照。利用求和的蒙特卡洛估计 \sumi fi\approx fj/p(j),每次只随机选一个(或几个)光源并除以其概率即可无偏。选择概率可以均匀、按功率,或随着色点变化——后者需要一棵把光源聚合起来的层次结构(光源 BVH)。本页对应 PBRT 4e 12.6 节,并对照实时渲染的分簇/分块光源剔除。图形学可微渲染与神经渲染Differentiable & Neural Rendering逆向渲染 (inverse rendering) 要从图像反推场景参数 \mathbf x(形状、材质、光照……),通常写成优化问题 \mathbf x^=\arg\min{\mathbf x}g(f(\mathbf x)),其中 f 是渲染器,g 是损失函数。参数维度可达数百万,只能用梯度下降,因此需要可微渲染 (differentiable rendering):不构造巨大的雅可比矩阵,直接计算"图像空间梯度 × 雅可比"这一向量-矩阵乘积。难点是可见性造成的不连续、反向模式的内存开销和导数积分的采样。机器学习与渲染的结合可分三类:用学习得到的数据结构替换传统数据结构、用神经网络改进传统渲游戏数学别名法与水塘采样Alias Method & Reservoir Sampling从 n 个离散结果中按概率 pi 采样,线性扫描 CDF 每次 O(n),二分查找 O(\log n);别名法 (alias method) 预处理 O(n) 后每次采样 O(1):均匀选一个桶,再以桶内概率 qi 决定取桶本身的结果还是它唯一的"别名"。水塘采样 (reservoir sampling) 则不需要预先知道结果个数、也不需要把所有候选存在内存里:候选逐个流过,每个以"自身权重 / 已见权重和"的概率替换水塘中的样本,最终保留的样本恰好服从全部候选的分布;两个水塘还可以无偏地合并。前者用于按功率选光源、环境贴图采样等,后者是 ReSTIR 等方法的基础。图形学基于图像的光照Image-Based Lighting用纹理数据(通常是相机拍摄的 360° HDR 全景)照明场景称为基于图像的光照。实时引擎常用预滤波的高光立方体贴图(配合 split-sum 近似)处理高光,用辐照度环境贴图或球谐系数处理漫反射。它们只依赖少量光照图元而不需要知道场景其他表面,因此仍属局部光照。

输入关键词开始搜索

滚轮或双指缩放 · 拖动平移 · 双击放大 / 还原