可微分渲染(Differentiable Rendering)就是让渲染过程可以求导,这样渲染结果的变化可以用梯度直接反传回去优化场景参数(几何、材质、光照等)。


1. 为什么需要可微分渲染

逆渲染NeRF三维重建等任务中,我们经常要解“已知图像,反推场景属性”的反问题。
普通渲染器(OpenGL、PBRT)只能做前向渲染

如果要反推,就需要计算:

传统渲染器不可微,只能用黑箱搜索,效率极低。可微分渲染器能直接用梯度下降等方法高效优化。


2. 原理

核心是对渲染方程几何变换、光照计算等过程求偏导。
可微渲染通常分为两大类:

  1. 显式可微(Analytic Gradients)
    • 对几何投影、光照、着色等公式手动推导梯度
    • 精度高,但实现复杂
  2. 近似可微(Approximate Gradients)
    • 用蒙特卡洛积分 + 路径重参数化、软光栅化等技巧近似求导
    • 比如 Soft Rasterizer、nvdiffrast

3. 常见方法类型

类型特点代表方法
基于光栅化的可微渲染适合显式几何(Mesh、Point Cloud)OpenDR、nvdiffrast、PyTorch3D
基于光线追踪的可微渲染支持全局光照、复杂材质Mitsuba 2、Redner
基于Volume Rendering的可微渲染常用于 NeRF、体素、SDFNeRF、IDR、VolSDF、NeuS

4. 在逆渲染中的作用

逆渲染是已知图像 → 恢复几何、材质、光照的反问题,它的优化过程一般是这样:

  1. 假设一组几何、材质、光照参数

  2. 用渲染器生成一张合成图像

  3. 和输入的真实图像比较(计算 Loss)

  4. 调整参数,让渲染结果越来越接近真实图像

也就是说,渲染器是逆渲染里构造误差和反馈梯度的核心工具。


5. 常用可微渲染工具

  • Mitsuba 2:物理精确、支持路径追踪、可微分
  • nvdiffrast(NVIDIA):GPU 加速软光栅化
  • PyTorch3D:Facebook AI 出品,方便与 PyTorch 集成
  • Redner:支持多种渲染算法和可微分特性