概念页
可微渲染与神经渲染
Differentiable & Neural Rendering
逆向渲染 (inverse rendering) 要从图像反推场景参数 (形状、材质、光照……),通常写成优化问题 ,其中 是渲染器, 是损失函数。参数维度可达数百万,只能用梯度下降,因此需要可微渲染 (differentiable rendering):不构造巨大的雅可比矩阵,直接计算"图像空间梯度 × 雅可比"这一向量-矩阵乘积。难点是可见性造成的不连续、反向模式的内存开销和导数积分的采样。机器学习与渲染的结合可分三类:用学习得到的数据结构替换传统数据结构、用神经网络改进传统渲染结果(以降噪为代表)、用网络直接合成图像。PBRT 4e 认为这两个领域变化太快,没有在 pbrt 中实现,只在第 16 章做了综述。
为什么需要可微渲染(16.3.1)
- 正向渲染是函数 。逆问题出现在自动驾驶、机器人、生物医学成像、显微镜、建筑设计等领域。它本身是歧义的:表面上的一个亮斑可以用纹理、形状、光源、别处的聚焦反射来解释,甚至可以解释为其他地方都在阴影中。消除歧义需要多次观测和考虑光传输相互耦合的重建方法,所以基于物理的方法是前提,而不只是加分项。
- 直接求逆只在强简化假设下可行:X 射线 CT 假设介质只吸收,一遍处理就能得到三维密度;但骨骼或金属碎片反射 X 射线时就会出现伪影。
- 因此改为松弛的最小化问题(16.1),常加只依赖参数的正则项 ,或者优化 ,其中网络 生成场景。这类方法称为分析-综合 (analysis-by-synthesis)。迭代法需要初值、可能不收敛到最优;参数化方式影响凸性(直接优化三角网格很脆弱,隐式曲面表现更好,见 隐式曲面与有符号距离函数)。
- 维度举例:一张 的 RGB 纹理就有约 170 万维(笔者核算 )。
- 一次迭代按链式法则拆成四步(16.3):渲染 ;对损失求导得图像空间梯度 ;转换为参数空间梯度 ;沿梯度走一步。第 4 步实际多用 Adam(Kingma–Ba 2014)等带动量的变体,Nicolet 等 2021 用预条件加速网格优化。第 3 步是核心难点: 中 (像素数)和 (参数数)都可达数百万,无法存储,只能直接计算乘积。
发展脉络
| 阶段 | 代表工作 | 要点 |
|---|---|---|
| 视觉领域的近似可微光栅化 | OpenDR(Loper–Black 2014)、Kato 等 2018、Liu 等 2019a、Laine 等 2020(延迟着色 + 可微抗锯齿) | 能处理直接光照,难以处理阴影、相互反射等多物体耦合 |
| 少量参数的物理可微渲染 | Gkioulekas 等 2013b(均匀介质)、Khungurn 等 2015(织物)、Hašan–Ramamoorthi 2013、Zhao 等 2016 | 多限于体积表示,参数多时不实用 |
| 反向模式(反向传播) | Li 等 2018 与 redner | 一次反传到任意多参数;指出可见性不连续问题 |
| 微分输运理论 | Zhang 等 2019(基于 Reynolds 输运定理,含介质)、Zhang 等 2020/2021b(微分路径空间) | 从任意三角形边出发追光线找轮廓 |
| 重参数化 | Loubet 等 2019;Bangaru 等 2020(散度定理把边界积分变为内部积分,并指出 Loubet 方法有偏) | 让积分区域随不连续一起移动 |
| AD + JIT | Mitsuba 2(Nimier-David 等 2019)及 Enoki | 生成波前式 GPU 内核,后来也能生成省内存的超级内核(对照 波前路径追踪) |
| 辐射反向传播 | Nimier-David 等 2020、Stam 2020;Vicini 等 2021 | 把求导看作"导数辐射"从相机发出的模拟,报告比朴素 AD 快至多 1000 倍;Vicini 等把路径长度的二次复杂度降为线性 |
- 为什么不连续是问题:交换微分与积分(16.4)只在被积函数关于积分变量连续时成立。轮廓处 关于 跳变,参数扰动会让跳变位置移动,需要额外的边界项。Li 等用像素重建滤波器积掉主可见性的不连续,并用层次结构在轮廓边上额外采样处理次级可见性。
- 偏差与方差:正向和导数计算若用相同随机数会相关,梯度有偏,需用不同种子去相关(Gkioulekas 等 2016、Azinović 等 2019)。导数被积函数有正有负,逆变换等标准采样不再是方差最优;"先求导再重要性采样"与"先采样再求导"并不相同(Zeltner 等 2021);Zhang 等 2021a 用对偶采样降低光泽相互反射下的几何梯度方差。
- 机器学习与渲染负载的差异:机器学习是少量高算术强度的运算(矩阵乘、卷积),渲染是海量简单运算,并且处处是光线追踪和多态调用,所以需要专门的 AD/JIT 框架。
- 反向模式需要按逆序访问前向的中间值,要么存储、要么反复重算,内存容易耗尽,这正是辐射反向传播要解决的。
机器学习与渲染(16.3.2)
- 学习的数据结构:Nowrouzezahrai 等 2009(球谐系数)、Dachsbacher 2011(可见性)、Ren 等 2013(辐射分布);书中各章提到的神经材质(Rainer 等 2019/2020、Kuznetsov 等 2021,见 测量 BRDF 与数据驱动反射模型)、神经光源(Zhu 等 2021)、用于引导采样的辐射分布(Müller 等 2019–2021)。广义上 Vorba 等 2014 的高斯混合乃至辐照度缓存也可视为学习的数据结构。难点:蒙特卡洛不仅要能求值,还要能按匹配分布采样并给出密度(见 蒙特卡洛积分与重要性采样);常需在线学习。NeRF(Mildenhall 等 2020)是体积表示,给出某点某方向的辐亮度和不透明度,因为基于体渲染(见 参与介质与体积散射),还避开了上面的不连续问题。
- 改进传统渲染结果:神经降噪。书中图 16.2:32 spp 噪声图加反照率、法线两张特征图,OptiX 7.3 降噪器几十毫秒得到无噪图像;而蒙特卡洛误差只以 下降,靠加样本代价太大。由此引出的问题:渲染器的输出交给网络时,它的任务不再是生成最准确或最好看的图,而是生成最容易被网络转换的输出(Cho 等 2021 把路径信息直接输入降噪器)。更激进的有 GANcraft(Hao 等 2021)、deep shading(Nalbach 等 2017,从 G-buffer 合成昂贵效果)、Granskog 等 2020、神经风格迁移(Gatys 等 2016),艺术控制仍是开放问题。
- 直接合成:Hermosilla 等 2019、Chen 等 2021 让网络学习整个渲染算法;StyleGAN(Karras 等 2018/2020)、基于分割图的合成(Chen–Koltun 2017、Park 等 2019)完全不用传统渲染;综述见 Tewari 等 2020。
与其他来源的对照
- 随机光线追踪与路径追踪 中 GEA 把降噪当作交互帧率下不得不加的后处理步骤;PBRT 第 16 章更进一步,认为"多数基于物理的渲染器现在都配合降噪器使用",并提出渲染器设计目标本身可能因此改变。两者不矛盾,但侧重点不同:前者关注实时预算,后者关注渲染器与网络的分工。
原书问题
- 式 (16.3) 第 4 步写作 (已解码网页 SVG 确认是加号),而第 2 步 是损失的梯度,于是 ,加号变成梯度上升,与式 (16.2) 的减号矛盾。紧随其后的括注" 的正分量表示增大该像素会降低损失"也只在 时成立。自洽的改法是二选一:第 2 步取 (括注与加号都对),或保持 、把第 4 步改为减号并改写括注。
- 16.3.1 括注说 X 射线波长"在 0.1–10 nm 范围"。按 Wikipedia「X-ray」条目,X 射线约为 10 pm–10 nm(0.01–10 nm,光子能量约 100 eV–100 keV),下限差了 10 倍。按 换算,诊断 CT 常用的数十 keV 光子(如 50 keV 对应约 0.025 nm)恰好落在书中给出的范围之外,而书中正是用 CT 举例。
- 参考文献:Mitsuba 2(Nimier-David 等 2019)标为 "Proceedings of SIGGRAPH 2019",但 TOG 38(6)(2019 年 11 月,DOI 10.1145/3355089.3356498)是 SIGGRAPH Asia 2019 论文集。
- 正文 "Adam (Kigma and Ba 2014)" 中作者名应为 Kingma(参考文献列表中拼写正确)。
出处
- PBRT 4e source excerpt: chapter 16 (Retrospective and the Future)
- Pharr, Jakob, Humphreys《Physically Based Rendering: From Theory to Implementation》第 4 版(MIT Press, 2023)第 16 章 16.3 节,pbr-book.org/4ed/Retrospective_and_the_Future
相关页面
图形学随机光线追踪与路径追踪Stochastic Ray Tracing & Path Tracing光线追踪用投射光线同时解决可见性问题和光照问题。GEA 从最简单的"眼睛光线 + 着色方程"讲起,逐步加入阴影光线、透射光线、用蒙特卡洛估计渲染方程的随机光线追踪、递归间接光照,再到每次只走一条路径的路径追踪、双向路径追踪和 Metropolis 光传输,最后讨论降噪与光线投射效率(GEA4 卷 II 12.6.3–12.6.5)。图形学波前路径追踪Wavefront Path Tracing波前 (wavefront) 架构把路径追踪拆成一串独立的 GPU 内核(生成相机光线、采样、求交、介质采样、逃逸光线、命中发光体、按材质分开的着色、阴影光线、写胶片),内核之间用工作队列传递数据;每个内核开始时线程都在做同一件事,执行是收敛的。代价是每个内核都要从显存读入、再写回全部状态,因此更受带宽限制。pbrt 4e 的 GPU 渲染路径 WavefrontPathIntegrator 就是这种结构,算法与 CPU 上的 VolPathIntegrator 完全相同(见 参与介质与体积散射),只改变计算的组织方式和数据布局。注意术语:这里的"波前"指整批光线按深度推进的处理方式,与 AM图形学蒙特卡洛积分与重要性采样Monte Carlo Integration & Importance Sampling渲染方程里的半球积分没有闭式解,只能数值积分。蒙特卡洛积分在定义域里随机取样、按概率密度加权求平均,期望值正好等于积分真值,误差随样本数 N 按 1/\sqrt{N} 下降,而且与积分维数无关,所以成了光线追踪类渲染的数学基础。降低误差的主要手段是让采样分布接近被积函数的形状,也就是重要性采样(GEA4 卷 II 12.6.2、12.6.4)。图形学测量 BRDF 与数据驱动反射模型Measured BRDFs & Data-Driven Reflectance测量 BRDF 用实验室测得的真实材质数据代替解析模型,适合虹彩漆、织物、珠光膜等解析模型拟合不好的材质。难点是四维 BRDF 的维数灾难;PBRT 4e 的 MeasuredBxDF(Dupuy 与 Jakob 2018)把可见法线采样当作参数化,只需较稀疏的测量就能插值。本页对应 PBRT 4e 9.8 节及其延伸阅读。图形学参与介质与体积散射Participating Media & Volumetric Scattering参与介质是充满粒子、通过吸收和散射参与光传输的体积,如空气、水、雾、烟、云;皮肤、蜡等致密材质也有强烈散射——"一切都是散射"。实时渲染主要考虑单次散射:沿视线积分透射率衰减后的内散射光,内散射由相位函数和对光源的可见性(不透明阴影 × 体积阴影)决定。通用实时方案把介质材质和散射结果体素化到相机视锥体素 (froxel) 中逐片累积(RTR4 14.1、14.3、14.8 节)。图形学图像处理与后处理Image Processing & Post-Processing后处理是在渲染出图像后再用 GPU 对其做图像处理:把离屏缓冲当纹理,用全屏 pass 让像素着色器(或计算着色器)对每个像素采样邻域并加权求和。核心技巧包括可分离滤波、利用双线性插值减少采样、降采样、以及借助深度/法线保持边缘的(联合)双边滤波(RTR4 12.1 节)。图形学隐式曲面与有符号距离函数Implicit Surfaces & Signed Distance Functions隐式曲面用 f(\mathbf{p})=0 定义:代入点结果为零即在曲面上。返回到最近表面有符号距离的 f 称为有符号距离函数 (SDF)。它们便于做光线求交、构造实体几何 (CSG)、混合与变形,通常用光线步进可视化,也可用移动立方体等方法转为三角形。