渲染器(Renderer)就是把场景数据转成图像的程序或系统。
更准确地说,它接收 场景描述(几何模型、材质、光源、相机参数等),通过光照计算和成像模拟,生成一张或多张逼真的图像。
1. 基本流程
典型渲染器内部会做以下事:
-
解析场景
- 读取 3D 模型、材质、纹理、光源等信息。
-
构建加速结构
- 如 BVH(Bounding Volume Hierarchy)或 KD-Tree,用于快速判断光线与物体的相交。
-
光线追踪 / 光栅化
-
光线追踪:模拟光的传播路径(相机 → 场景 → 光源),计算每个像素的颜色。
-
光栅化:按三角形投影到屏幕并着色,常用于实时渲染(游戏引擎)。
-
-
着色(Shading)
- 根据材质(BRDF/BSDF)、光源和阴影信息,计算像素的最终颜色。
-
后处理(Post-processing)
- 色调映射、降噪、景深、运动模糊等。
2. 类型
渲染器可以按用途和实现方式分类:
-
实时渲染器(如 Unity、Unreal Engine)
- 用 GPU 光栅化,追求高帧率。
-
离线渲染器(如 Mitsuba, Arnold, PBRT)
- 用物理精确的光线追踪/路径追踪,追求真实感。
-
可微渲染器(如 Mitsuba 2, NVDiffRec)
- 支持计算梯度,方便优化和逆渲染。
-
渲染器 = 一个完整的程序/系统
-
渲染管线(Rendering Pipeline) = 渲染器内部执行渲染任务的流程/步骤