可微分渲染(Differentiable Rendering)就是让渲染过程可以求导,这样渲染结果的变化可以用梯度直接反传回去优化场景参数(几何、材质、光照等)。
1. 为什么需要可微分渲染
在逆渲染、NeRF、三维重建等任务中,我们经常要解“已知图像,反推场景属性”的反问题。
普通渲染器(OpenGL、PBRT)只能做前向渲染:
如果要反推,就需要计算:
传统渲染器不可微,只能用黑箱搜索,效率极低。可微分渲染器能直接用梯度下降等方法高效优化。
2. 原理
核心是对渲染方程或几何变换、光照计算等过程求偏导。
可微渲染通常分为两大类:
- 显式可微(Analytic Gradients)
- 对几何投影、光照、着色等公式手动推导梯度
- 精度高,但实现复杂
- 近似可微(Approximate Gradients)
- 用蒙特卡洛积分 + 路径重参数化、软光栅化等技巧近似求导
- 比如 Soft Rasterizer、nvdiffrast
3. 常见方法类型
类型 | 特点 | 代表方法 |
---|---|---|
基于光栅化的可微渲染 | 适合显式几何(Mesh、Point Cloud) | OpenDR、nvdiffrast、PyTorch3D |
基于光线追踪的可微渲染 | 支持全局光照、复杂材质 | Mitsuba 2、Redner |
基于Volume Rendering的可微渲染 | 常用于 NeRF、体素、SDF | NeRF、IDR、VolSDF、NeuS |
4. 在逆渲染中的作用
逆渲染是已知图像 → 恢复几何、材质、光照的反问题,它的优化过程一般是这样:
-
假设一组几何、材质、光照参数
-
用渲染器生成一张合成图像
-
和输入的真实图像比较(计算 Loss)
-
调整参数,让渲染结果越来越接近真实图像
也就是说,渲染器是逆渲染里构造误差和反馈梯度的核心工具。
5. 常用可微渲染工具
- Mitsuba 2:物理精确、支持路径追踪、可微分
- nvdiffrast(NVIDIA):GPU 加速软光栅化
- PyTorch3D:Facebook AI 出品,方便与 PyTorch 集成
- Redner:支持多种渲染算法和可微分特性