渲染器(Renderer)就是把场景数据转成图像的程序或系统

更准确地说,它接收 场景描述(几何模型、材质、光源、相机参数等),通过光照计算和成像模拟,生成一张或多张逼真的图像。


1. 基本流程

典型渲染器内部会做以下事:

  1. 解析场景

    • 读取 3D 模型、材质、纹理、光源等信息。
  2. 构建加速结构

    • 如 BVH(Bounding Volume Hierarchy)或 KD-Tree,用于快速判断光线与物体的相交。
  3. 光线追踪 / 光栅化

    • 光线追踪:模拟光的传播路径(相机 → 场景 → 光源),计算每个像素的颜色。

    • 光栅化:按三角形投影到屏幕并着色,常用于实时渲染(游戏引擎)。

  4. 着色(Shading)

    • 根据材质(BRDF/BSDF)、光源和阴影信息,计算像素的最终颜色。
  5. 后处理(Post-processing)

    • 色调映射、降噪、景深、运动模糊等。

2. 类型

渲染器可以按用途和实现方式分类:

  • 实时渲染器(如 Unity、Unreal Engine)

    • 用 GPU 光栅化,追求高帧率。
  • 离线渲染器(如 Mitsuba, Arnold, PBRT)

    • 用物理精确的光线追踪/路径追踪,追求真实感。
  • 可微渲染器(如 Mitsuba 2, NVDiffRec)

    • 支持计算梯度,方便优化和逆渲染。
  • 渲染器 = 一个完整的程序/系统

  • 渲染管线(Rendering Pipeline) = 渲染器内部执行渲染任务的流程/步骤