PBR 光照模型
PBR 光照模型 (Physically Based Rendering) - 现代渲染的光照基石
核心问题
为什么现代游戏画面看起来越来越"真实"?为什么不同光照环境下,同一把枪看起来都像是用同一种金属做的?答案就是 PBR——基于物理的渲染。
引言:为什么要"基于物理"
传统经验光照模型(如 Phong/Blinn-Phong)靠美术调参凑效果,换个光照环境就穿帮。PBR 的目标是:
用物理规律(能量守恒、菲涅尔效应、微表面理论)描述光与材质的交互,让材质在任何光照下都表现一致、可信,参数也符合物理直觉(金属度、粗糙度)。
这带来两个好处:美术用统一的物理参数创作、资产在不同场景/引擎间可复用。
一、辐射度量基础(够用即可)
PBR 计算的是出射辐射亮度(Radiance) 。渲染方程的核心是对半球入射光的积分:
下图直观展示渲染方程的几何:在表面点 处,对法线 上半球 内的所有入射方向 积分,得到朝观察方向 的出射光:

其中 是法线上半球, 遍历所有入射方向:
- :BRDF,描述从入射方向 到观察方向 的反射比例。
- :入射方向的光亮度。
- :兰伯特余弦项(入射角衰减)。
实时渲染无法真积分,用若干直接光 + IBL(环境光) 近似。核心就落在 BRDF 上。
二、BRDF 与能量守恒
BRDF(双向反射分布函数)把反射拆成两部分(漫反射 + 镜面反射):
- 能量守恒:反射出去的能量不能超过入射能量 → 。
- 金属/非金属(金属度 metallic):
- 金属:几乎无漫反射,镜面反射带有色(反照率作为镜面色 F0)。
- 非金属(电介质):有漫反射,镜面反射近乎白色(F0 ≈ 0.04)。
- 这正是 G-Buffer 存 Albedo / Metallic / Roughness / Normal 的原因。
三、微表面理论
镜面反射用微表面模型描述:宏观一个点,微观是无数朝向各异的小镜面。
- 粗糙度(roughness) 决定微表面朝向的分散程度:
- 光滑 → 微法线集中 → 锐利高光。
- 粗糙 → 微法线发散 → 模糊、铺开的高光。
- 只有微法线正好等于半程向量
h的微表面,才把光从l反射到v。
下图直观展示粗糙度对高光(NDF 分布)的影响:

四、Cook-Torrance 镜面 BRDF
实时 PBR 的标准镜面项是 Cook-Torrance:
三个函数各司其职:
| 项 | 名称 | 作用 |
|---|---|---|
| D | 法线分布函数(NDF,如 GGX/Trowbridge-Reitz) | 有多少微表面朝向 h → 决定高光形状,受粗糙度控制 |
| F | 菲涅尔(Fresnel,常用 Schlick 近似) | 掠射角反射增强 → 决定反射强度随视角变化 |
| G | 几何遮蔽(Geometry,如 Smith) | 微表面互相遮挡/阴影造成的能量损失 |
D 项:GGX/Trowbridge-Reitz
现代主流用 GGX,它有更长的"拖尾",高光更真实():
粗糙度越大,分布越铺开(上图)。
F 项:Schlick 近似
- 是正视反射率:非金属 ≈ 0.04,金属 = 其反照率颜色。
- 掠射角(视角越平)反射越强 —— 这就是"边缘发亮"的菲涅尔效应:

G 项:几何遮蔽
粗糙表面的微凸起会互相遮挡入射光与出射光, 描述这部分损失,常用 Smith 法把入射与出射方向的遮蔽相乘:
其中 常用 Schlick-GGX 近似(含随粗糙度变化的 参数)。
五、金属-粗糙度工作流
实时 PBR 最常见的参数集(Metallic-Roughness 工作流):
| 贴图 | 含义 |
|---|---|
| Albedo / Base Color | 非金属的漫反射色 / 金属的镜面色 |
| Metallic | 金属度(0 电介质 ~ 1 金属) |
| Roughness | 粗糙度(0 镜面 ~ 1 全漫射) |
| Normal | 法线细节 |
| AO | 环境光遮蔽 |
另有 Specular-Glossiness 工作流(存镜面色 + 光泽度),思路类似,Metallic-Roughness 因贴图更省、更少出错而更主流。
六、IBL:环境光的 PBR
直接光只是一部分,环境光(Image-Based Lighting, IBL) 让 PBR 在真实场景中可信 —— 用一张环境贴图(Cubemap)作为来自四面八方的入射光。核心矛盾是:对每个像素积分整个环境太贵,所以把积分预计算好。IBL 也分漫反射与镜面两部分。
6.1 漫反射 IBL:辐照度图
漫反射在环境光下的出射:
这条式子怎么从渲染方程得来(点开)
把 Lambertian BRDF(常数 )代入渲染方程即可:
的由来(能量守恒归一化):反照率 应等于常数 BRDF 对半球的积分,而
故 。少了这个 ,白色表面()会反射出比入射更多的能量。
因 是常数可提出积分,且结果不含视角 (Lambertian 各向同亮)→ 写成只依赖 的 。
定义辐照度 。
关键洞察:该积分只依赖法线方向 (与视角无关),环境又静态 → 可对每个 预计算并存成按 索引的贴图。两种做法:
① 半球卷积成小 Cubemap:辐照度图的每个纹素对应一个法线 ,对以 为轴的半球采样、按余弦加权求和:
本质是用余弦核对环境图做卷积。辐照度极低频(很糊),输出分辨率很小(如每面 32×32)就够。
② 球谐(SH)投影(引擎更常用)
球谐(Spherical Harmonics) 是定义在球面上的一组正交基函数,作用类似"球面上的傅里叶基" —— 按频率(band,用 标记) 从低到高排列: 是常数项、 是三个线性项、 是五个二次项……低 band 表示低频(平缓)成分。任意球面函数都可投影为一组 SH 系数。
整个过程分三步:
a. 投影(编码,离线一次):把环境入射光 投影到 SH 基,得到系数:
b. 余弦卷积(band 缩放):辐照度是"入射光与余弦叶片的卷积"。而在 SH 域,与旋转对称核的卷积 = 每个 band 的系数乘一个常数 (余弦叶片的 SH 系数):
c. 求值(重建,运行时):对给定法线 重建辐照度:
为什么 9 个系数就够:余弦叶片是极其平滑的核,它的 SH 系数从 起就 并迅速衰减 —— 即高频成分被卷积几乎抹平。所以只保留到 (即 个系数)就能达到约 99% 精度(Ramamoorthi & Hanrahan, 2001)。每通道 9 个、RGB 共 27 个 float。
实用技巧:写成二次型。上式可整理成一个 矩阵 (每个颜色通道一个,由 9 个系数构造),法线取齐次坐标 :
于是运行时求辐照度 = 3 次矩阵-向量乘(RGB),无纹理采样、无分支,极廉价。
SH vs Cubemap 辐照度图:
| SH(9 系数) | 辐照度 Cubemap | |
|---|---|---|
| 存储 | 极小(27 float) | 一张小 Cubemap |
| 运行时 | 一次 SH 求值 / 二次型,无采样 | 一次纹理采样(硬件) |
| 适用 | 漫反射/低频(Light Probe 首选) | 漫反射 |
| 局限 | 只能表低频,无法表镜面高频 | 同样只做漫反射 |
正因存储极小、求值极廉价,SH 是 Light Probe 存储环境光的标准做法(成千上万个探针,每个仅 27 float)。但它只能表低频,镜面反射的高频细节得靠下节的预过滤环境图。
6.2 镜面 IBL:预过滤环境图 + BRDF LUT
镜面反射还依赖视角与粗糙度,比漫反射复杂。UE 提出的 split-sum(分割求和) 近似把它拆成两个可预计算的部分:
- 预过滤环境图(Prefiltered Env Map):按粗糙度对环境图做不同程度的模糊,存进 Cubemap 的各级 mip(粗糙度越大取越高 mip)。运行时用反射方向 + 粗糙度采样。
- BRDF LUT:把 BRDF 的积分(含 F/G 项)关于 预计算成一张 2D 查找表,运行时查表得到 scale/bias。
6.3 运行时
即:漫反射查辐照度图(或 SH)、镜面查预过滤图 + BRDF LUT —— 全是廉价采样,把昂贵积分挪到了离线。
本质:IBL 的积分只依赖有限变量(漫反射依赖 ;镜面依赖 、粗糙度、)且环境静态,因此能预计算成贴图/LUT,运行时查表即可实时。
七、与渲染管线/优化的关系
- PBR 的着色发生在片元着色器 / 光照 Pass,直接决定 Shader 复杂度。
- 延迟渲染的 G-Buffer 布局就是为存 PBR 参数设计的。
- 移动端会用简化 BRDF / 近似降低开销。
八、总结
PBR 并不是某一个具体算法,而是一套基于物理规律的光照方法论。它的核心组件环环相扣:
- BRDF:把反射拆成漫反射 + 镜面反射,能量守恒是底线
- 微表面模型:Cook-Torrance 三件套(D·F·G)描述真实表面的微观光学行为
- 金属-粗糙度工作流:用 4~5 张贴图就能统一描述几乎所有材质
- IBL:通过预计算将环境光积分降到运行时几次廉价采样
理解 PBR 不仅是学会调几个参数,更是理解"光与材质如何交互"的物理本质。它是现代渲染管线着色的地基,也是通往更高级话题(全局光照、实时光线追踪)的必经之路。
核心概念速查
| 概念 | 说明 |
|---|---|
| BRDF | 双向反射分布函数,描述反射比例 |
| 能量守恒 | 反射能量 ≤ 入射能量, |
| 微表面理论 | 宏观点 = 无数微小镜面,粗糙度控制其分散 |
| Cook-Torrance | 镜面 BRDF |
| D / NDF(GGX) | 法线分布,决定高光形状,受粗糙度控制 |
| F(Schlick) | 菲涅尔,掠射角反射增强 |
| G(Smith) | 几何遮蔽损失 |
| Metallic-Roughness | 主流参数工作流 |
| IBL | 基于图像的环境光,含辐照度图 + 预过滤 + BRDF LUT |
