「PBR 系列」第一篇 · 理论基石:从渲染方程到 Cook-Torrance 框架
核心结论:PBR 不是某一个公式,而是一个由「渲染方程 + 微表面理论 + 能量守恒 + 互易性」构成的框架。Cook-Torrance 把镜面 BRDF 拆成 D / G / F 三项,于是后续四十年的工作都可以归类到对这三项的精修——以及对 Lambert 漫反射的扩展。
一、为什么需要 PBR
在 PBR 出现之前,实时渲染由 Phong(1975)与 Blinn-Phong(1977)统治了将近三十年。但当游戏走向开放世界、资产规模上万、跨光照场景一致性变成硬需求时,经验模型的几个根本缺陷无可回避:
- 无能量守恒:Specular 项可以任意拉到超过入射能量,shininess 与高光强度耦合到无法独立调整;
- 无菲涅尔:所有视角下反射率恒定,金属和塑料只能靠美术经验”硬调”;
- 高光形状失真:粗糙度变化时,高光既不会拉长也不会出现长尾,与实测 BRDF 数据库(MERL 100 等)拟合误差极大;
- 金属/电介质未分离:缺乏 metallic 工作流的概念,资产在不同 HDRI 下表现不一致。
PBR 的目标,是建立一套物理保真度可验证、参数跨光照一致、跨引擎跨美术可移植的着色框架。

注意:基于物理的渲染只是基于现实物理特性的渲染,并不能完全与现实物理一致。
严格区分的话,PBS(Physically Based Shading) 仅指基于物理的着色,而 PBR(Physically Based Rendering) 包括 PBS、基于物理的光照(PBL)、基于物理的摄像等更完整的流水线。日常语境下两者常被混用。
二、渲染方程:所有 PBR 的元规则
1986 年 Kajiya 在 SIGGRAPH 提出的渲染方程是全局光照的”宪法条文”:
它说的是:从表面点
2.1 PBR 的两条核心公理
能量守恒:表面反射的总能量不超过入射能量
这条公理决定了「白炉测试」能成为 BRDF 的终极裁判。
亥姆霍兹互易性(Helmholtz Reciprocity):交换入射出射方向,BRDF 值不变
这条公理是路径追踪、双向路径追踪、重要性采样能正确工作的前提。
三、BxDF 术语家族
PBR 论文里频繁出现的 BRDF / BTDF / BSDF / BSSRDF 容易混淆。它们的关系本质上是按光线”去往何处”做的分类:
| 术语 | 全称 | 物理意义 |
|---|---|---|
| BRDF | Bidirectional Reflectance Distribution Function | 不透明表面反射的方向与能量分布,PBR 最核心 |
| BTDF | Bidirectional Transmittance Distribution Function | 光线穿过半透明介质(玻璃、水)时的折射与透射 |
| BSDF | Bidirectional Scattering Distribution Function | BRDF 与 BTDF 的统称,覆盖反射与透射 |
| BSSRDF | Bidirectional Surface Scattering Reflectance Distribution Function | 光线射入材质内部,多次散射后从不同点射出(皮肤、玉石、大理石) |
工程上的关键区别在于积分维度:BRDF / BTDF / BSDF 都是 4 维函数(入射 + 出射方向),而 BSSRDF 是 8 维(入射 + 出射方向 × 入射 + 出射位置)。这也是为什么次表面散射在实时渲染中始终需要近似简化(详见第五篇)。
四、光与物质交互:建立宏观能量直觉
在一头扎进 D、G、F 三项的繁杂数学之前,我们必须先弄懂一个根本问题:光打到物体上之后,到底经历了什么?
如果直接从 Cook-Torrance 公式起手,里面每一项都会像是凭空捏造的工程符号。但只要我们顺着「宏观的两种光学现象
4.1 光学现象:反射与折射
把视角放到一个最简单的物理实验:一束光打到一个不透明物体的表面上。在宏观尺度(先不谈微表面),光只有两条命运:
一:在表面被直接弹开(Specular Reflection)
这部分光根本没进入物体内部——它撞到表面就立即被反射出去。反射方向遵循”入射角 = 反射角”的镜面规律。这就是我们看到的高光(Specular)。
二:折射进入物体内部(Refraction → Subsurface Scattering)
剩下没被弹开的光,折射进入了物体内部。在原子/分子之间它会反复碰撞、被部分吸收(产生颜色)、被多次散射。其中一部分能量在散射途中被消耗,另一部分能量经过若干次散射后从表面(通常在入射点附近)随机方向射出。这就是我们看到的漫反射(Diffuse)。

关键结论:能量必须耦合
由于能量守恒,漫反射的能量 = 总入射能量 − 被高光直接反射掉的能量。这是一个简单到近乎乏味的物理事实,但它是后面所有 PBR 公式的基石:
没被高光带走的光,才有资格变成漫反射。
如果一个着色模型违反了这一点(比如经典 Blinn-Phong 直接 Diffuse + Specular 相加),它一定会在某些视角下”凭空产生能量”——反射出的总能量超过入射能量。这就是 9.2 节要讨论的”能量危机”的物理根源。
4.2 金属与电介质:两种光学现象的不同分配
不同材质对反射、折射的能量分配规则截然不同。这里我们正式定义那个在 PBR 中无所不在的参数:
基础反射率
金属(Conductor)
金属内部充满了自由电子,光一进入就被这些电子瞬间吸收并以电磁波形式重新辐射出去。结果是:
- 没有漫反射(光根本没机会在内部多次散射就被吸收殆尽);
极高(60%~100%),意味着大部分光直接以高光形式弹回; 是有色的——金属对不同波长光的吸收/反射比例不同。
| 金属 | |
|---|---|
| 金 (Au) | (1.000, 0.766, 0.336) |
| 银 (Ag) | (0.972, 0.960, 0.915) |
| 铜 (Cu) | (0.955, 0.638, 0.538) |
| 铁 (Fe) | (0.562, 0.565, 0.578) |
| 铝 (Al) | (0.913, 0.921, 0.925) |
金属看起来的”颜色”,本质就是它的
。 金子之所以是金色,不是因为它的”漫反射颜色”——金子根本没有漫反射——而是因为它的 在红绿波段高、在蓝色波段低。
电介质(Dielectric)
非金属(塑料、木头、皮肤、玻璃、瓷器、混凝土……)允许光线进入内部,因此既有漫反射也有高光。但电介质的
极低(通常 2% 5%,对应 IOR ≈ 1.41.6);是无色的——对所有波长一视同仁; - **物体的”颜色”**主要来自漫反射部分(即光在物体内部多次散射后剩下的颜色)。
| 电介质 | |
|---|---|
| 水 | 0.020 |
| 塑料 / 玻璃 | 0.040(默认) |
| 皮肤 | 0.028 |
| 宝石(钻石) | 0.171 |
工业 PBR 中绝大多数电介质都用
Metallic 工作流的物理本质
理解了上面两点,Unity URP 中那行神秘的代码就豁然开朗:
1 | |
这两行代码的物理含义:
- ①:metallic = 1 时,diffuse 完全消失——因为金属没有”光进入内部再散射”的过程;
- ②:metallic = 0 时,
(电介质默认);metallic = 1 时, 直接取 albedo——这反映了”金属的颜色就是它的 ”这一事实。
metallic 参数本质上是”两种光学现象的能量分配开关”,而
学术补遗:物理学严格意义上,电介质(Dielectric) 是能够被电极化的绝缘体——电荷只能在微观范围内移动产生极化,包括气态、液态、固态甚至真空。固态电介质里玻璃、树脂、高分子聚合物都属于此类。它们的反义词就是导体(金属)。
4.3 微表面理论:宏观平坦,微观崎岖
到这里我们已经搞清楚了总能量怎么分配——但还没讨论高光和漫反射各自的形状(如何分布到不同方向)。这就是微表面理论要回答的问题。
核心假设
微表面理论(Microfacet Theory)——由 Torrance & Sparrow 在 1967 年提出——的核心假设是:
宏观上看似平坦的表面,在极微观尺度下其实由无数个完美的微小镜面(microfacets)构成。
每个微表面都是绝对镜面——它对光做严格的镜面反射。但因为这些微表面朝向各异,从宏观角度看反射光被打散到多个方向,于是宏观上的”高光”才有了模糊、有了大小、有了形状。

哪些微表面对反射有贡献?
对于给定的入射方向
但”朝向正确”还不够——这些微面之间还会互相遮蔽(masking)和自阴影(shadowing):
- 从光源方向看,前面的微面挡住后面的微面 → shadowing;
- 从相机方向看,前面的微面挡住后面的微面 → masking;
只有”朝向正确 + 既不被遮蔽也不被阴影”的微面,才真正参与反射。
三个统计量
要把上面的物理直觉变成可计算的公式,需要三个统计量:
- 有多少微面朝向”正确”?(朝向半角向量
的概率密度) → 这就是后面要讲的 D 项(NDF); - 这些朝向正确的微面,有多少没被遮蔽? → 这就是 G 项(Geometry);
- 每个微面镜面反射的强度是多少?(菲涅尔效应) → 这就是 F 项(Fresnel)。
把这三个统计量乘起来,再除以一个归一化分母,就构成了下一节要讲的 Cook-Torrance 公式。
回到漫反射:对漫反射部分,微表面理论同样有效——光进入内部后的散射方向分布也受微表面统计影响,这就是 Oren-Nayar 模型的物理基础(详见 9.5 节)。
五、Cook-Torrance 框架
把 4.3 节的三个统计量整合,就得到了 Cook-Torrance 1982 年提出的镜面反射 BRDF 公式:
逐项解读:
- 分子
:朝向正确的微面比例 × 单微面的菲涅尔反射率 × 这些微面没被遮蔽的比例; - 分母
:来自微面投影到宏观表面与几何归一化的精确推导(不是凭空冒出的常数 4); - 整体:宏观尺度上单位入射光对应的反射辐亮度密度。
这就是著名的 Cook-Torrance 框架(1982)。后续所有 specular BRDF 的发展,都是对 D / G / F 三项的精细化——而漫反射部分则在第九节单独演化。
接下来分别梳理三项的演化。
六、法线分布函数(D 项)的演化
6.1 Beckmann(1963)
Beckmann 分布假设微表面法线分布服从高斯:
物理推导严格,但实时渲染中存在两个问题:
- 包含
exp()与高次方除法,运算开销大; - 高光衰减过快,无法表现真实金属在掠射角的”晕染”。
6.2 Phong(标准化版)
便宜,但本质是经验拟合,没有微表面理论支撑,且高光过于”硬”。
6.3 GGX / Trowbridge-Reitz(工业标准)
GGX 由 Walter 等人在 2007 年的论文 “Microfacet Models for Refraction through Rough Surfaces” 中重新引入实时渲染(其原始形式实为 1975 年 Trowbridge-Reitz 的发现):
其中
- 长尾特性(Long Tail / Heavy Tail):高光中心衰减后并不归零,而是缓慢拖出一条尾巴,与 MERL 数据库的实测拟合显著优于 Beckmann;
- 解析采样可行:GGX 的 CDF 可解析反演,便于重要性采样,路径追踪与 IBL 预积分都能受益;
- GPU 友好:仅含一次平方倒数运算,无
exp(),ALU 成本极低。
1 | |
注意这里巧妙利用了 (NoH * a2 - NoH) * NoH + 1.0 = NoH^2 * (a2 - 1) + 1,省一次乘法。
七、几何遮蔽函数(G 项)的演化
7.1 物理意义
G 项度量微表面之间的相互遮挡:从光源方向看不到的微表面(Shadowing)和从相机方向看不到的微表面(Masking),它们的交集才是对反射有效的微表面比例。
7.2 Cook-Torrance 隐式几何项
最早的 Cook-Torrance G 项基于 V 形凹槽假设:
物理基础薄弱,但当年 GPU 性能限制下仍被广泛采用。
7.3 Smith 模型
Smith(1967)提出更严格的统计模型:将 Shadowing 与 Masking 视为独立事件,分别用基于 NDF 的可见性函数
对 GGX,对应的
7.4 Heitz 高度相关 Smith Joint(现代标准)
“独立性假设”在 Shadowing 与 Masking 高度相关时(例如同方向掠射)会高估能量损失。Heitz 在 2014 年的论文 “Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs” 中提出高度相关的联合可见性函数(Height-Correlated Smith Joint):
或写为:
其中
7.5 工程优化:可见性项 V
由于 G 项在 BRDF 中总是与
代入 GGX 后可解析化简为:
1 | |
Hammon 还提出了一个免 sqrt 的近似:
UE4 移动端常用此版本进一步省 sqrt。
八、菲涅尔项(F 项)的演化
8.1 从 4.2 节到精确菲涅尔
第四节我们已经为
完整菲涅尔方程涉及 s 偏振与 p 偏振两个分量,在实时渲染中无法直接使用。
8.2 Schlick 近似
Schlick(1994)的近似公式将菲涅尔项压缩到一次五次方:
1 | |
直观理解:
(半角与入射光的夹角余弦); - 垂直入射时
, ,结果为 ; - 掠射角时
, ,结果为 。
8.3 与 的双控
通用 Schlick 近似在
决定”正面有多亮”, 决定”边缘有多亮”。
| 材质类型 | 说明 | ||
|---|---|---|---|
| 金属 | 基于固有颜色(如铜 0.95, 0.64, 0.54) | 1.0 | 掠射几乎全反射 |
| 非金属 | 0.02~0.08(IOR 1.5 ⇒ 0.04) | 1.0 | 塑料、皮肤、木头 |
| 布料(丝绸/天鹅绒) | 0.02~0.04 | 0.5~1.0(艺术调控) | 强化掠射反射,突出”包边亮” |
这就是为什么布料的 Sheen 效果能用 Schlick 近似的
在大多数电介质和金属上,Schlick 近似与精确菲涅尔的误差小于 1%,但在低折射率介质(IOR < 1.4)和导体的某些波段会出现可见偏差,因此 Disney BRDF 在精确路径追踪场景下仍会使用完整菲涅尔。
九、漫反射(Diffuse)模型的演化
第四节我们从两种光学现象出发,建立了”漫反射 = 总能量 − 高光”的物理直觉。漫反射模型四十年的演化,本质上是围绕两个问题的逐步修补:
- 能量问题:漫反射的能量怎么和镜面反射正确分配?
- 形状问题:粗糙表面的漫反射真的”对所有出射方向无差别”吗?
我们按这条主线串起 Lambert → 能量危机 → Shirley 耦合 → Oren-Nayar 四个阶段,自然过渡到第二篇 Disney Diffuse 的工业折中。
9.1 理想的起点:Lambert
最简单的假设:光折射进物体内部后,被绝对均匀地散射到所有方向。BRDF 与方向完全无关:
其中
1 | |
Lambert 的两个假设都是粗暴近似:
- 形状层面:现实粗糙表面(月球、混凝土、棉布)在掠射角并不”无差别”——它们边缘反而更亮(retro-reflection),Lambert 完全没体现;
- 能量层面:Lambert 自己不知道镜面反射存在——它只管自己那份能量,不管”被高光抢走多少”。
工程脚注:Unity URP 中出于美术习惯保留亮度,diffuse 项没有除以 PI,相应地 specular 项要乘 PI 维持能量平衡——这是一个偏离物理但被引擎广泛沿用的工程妥协。
Minnaert 与早期经验修正(1941)
Lambert 之后、Shirley 之前,曾有一段”纯经验拍脑袋”的过渡期。Minnaert(1941,最初用于天文观测月球反照率)提出了一个简单的修正形式:
参数
之所以在这里提到它,是为了说明:学界从 1940 年代起就意识到 Lambert 的局限,但缺乏理论框架——一头缺能量耦合的物理基础(Shirley 1997 才补上),另一头缺形状的微表面解释(Oren-Nayar 1994 才补上)。
接下来的演化,就是分别修补”能量”与”形状”这两条线索。先看更严重的”能量层面”。
9.2 灾难的发生:非耦合的能量危机
第四节我们已经知道:”被高光反射走的光,不能再变成漫反射”。但 Blinn-Phong 时代的引擎完全无视这一物理事实,直接把 Lambert 漫反射和 Phong 高光暴力相加:
这条公式本身没毛病——除了它严重违反能量守恒。后果是经典的”塑料感”:
边缘过曝灾难
考虑掠射角的情况:当视线接近表面切线方向时,菲涅尔效应让镜面反射
- 漫反射
仍然按 Lambert 计算——没有任何衰减; - 镜面反射
因菲涅尔变得很强; - 两者相加的总反射能量超过了入射能量。
视觉表现:物体边缘诡异地发亮、发白,整体呈现廉价塑料质感——美术只能靠手动降低
调参泥潭
更糟的是这种非耦合带来的资产不可移植性:
- 在白色摄影棚下调好的塑料球,到了黄昏 HDRI 下又变成了”金属塑料怪”;
- 同一套 albedo 在不同 specular 强度下能呈现完全不同的颜色感受;
- 美术只能针对每个场景单独调材质,资产无法复用。
PBR 革命的第一个动机,就是结束这场能量灾难。
9.3 能量的补救:Shirley 耦合模型(1997)
为终结上述灾难,Shirley 等人在 1997 年的 “A Practitioners’ Assessment of Light Reflection Models” 中首次将菲涅尔透射率引入漫反射项,把第四节那条两种光学现象的物理事实直接翻译成公式。
公式
直观理解:
- 入射时损失一次菲涅尔反射:
表示有多少能量真正穿过表面进入了内部; - 出射时再次损失菲涅尔反射:
表示从内部散射出来后,还有多少能在视线方向被观察到; - 两者剩下的乘积才是真正可被看到的漫反射能量。
掠射角时
1 | |
意义
Shirley 这一步的意义远超它本身——它第一次把高光和漫反射在物理层面锁死。从此以后任何号称 PBR 的着色模型,都必须显式或隐式地满足能量耦合约束。Disney 2012 BRDF、Frostbite Diffuse、UE4 / URP 的能量预分配(albedo * (1 - metallic)),全部源自这一思路。
历史小注:Phong 早在 Shirley 之前就尝试过类似想法,但缺乏菲涅尔的精确表达。Shirley 的贡献在于把”能量耦合”从经验拍脑袋升级为基于菲涅尔的严格数学表达。
9.4 形状的补救:Oren-Nayar 模型(1994)
Shirley 解决了能量分配问题,但还有一个独立的问题:形状失真。
Lambert 假设表面是绝对平坦的——光在内部”完美均匀地散射”。但如果表面是粗糙的呢?想象月球表面布满凹凸不平的环形山、砖墙的水泥粗砂、织物的纤维交错。这些表面在掠射角下并不会变暗,反而会变亮——这就是粗糙表面的特征:逆反射(Retro-reflection)。
物理直觉
Oren & Nayar 在 1994 年的 “Generalization of Lambert’s Reflectance Model” 中给出了解释:
- 把表面建模为一系列 V 形凹槽;
- 光在掠射方向打到 V 形凹槽时,能照亮槽内”朝向相机”的那一面;
- 同时这些朝向相机的面相互遮蔽,限制了光向其他方向散射;
- 净效果:掠射角看到的”亮区”比 Lambert 预测的更多。
这就是为什么月球望远镜里的圆盘边缘和中心一样亮(如果是 Lambert 球应当像水滴一样边缘暗)——月球表面的粗糙度产生了 retro-reflection。
公式
其中
痛点:能量未耦合 + 性能昂贵
Oren-Nayar 解决了形状问题,但留下了两个新麻烦:
- 没有能量耦合:Oren-Nayar 仍然是个”独立”的漫反射,不知道镜面反射的存在。在 PBR 工作流中需要额外手动加 Shirley 的
衰减; - ALU 开销:包含 sin、tan、多次条件判断,每像素几十个 ALU 指令,在性能敏感场景被认为”性价比不高”。
工程上常用一个 UE4 的简化版本:
1 | |
9.5 演化总结:呼唤工业界的大一统
回顾这条演化链,工业界面对的处境其实很尴尬:
| 模型 | 解决了能量? | 解决了形状? | 性能 |
|---|---|---|---|
| Lambert | ❌ | ❌ | 极快 |
| Minnaert | ❌ | 🟡 仅经验 | 快 |
| Shirley Coupled (1997) | ✅ | ❌ | 中等(多次菲涅尔) |
| Oren-Nayar (1994) | ❌ | ✅ | 慢(含 sin/tan) |
学术界搞出了能量精确的 Shirley,又搞出了形状精确的 Oren-Nayar,但没有任何一个模型同时解决了两个问题,更没有一个能跑满 60fps。
工业界急需一个”缝合怪”——既能体现能量耦合精神,又能表现 retro-reflection 形状,还能让 GPU 廉价求值。
这就是 Disney Diffuse(2012)的舞台。Burley 用一对 Schlick 的 pow5 项同时拟合这两种现象——它在严格能量守恒上做了妥协,但在视觉上”看起来很对”,并且只比 Lambert 多几个 ALU。
下一篇,我们就走进 Disney 的世界。
十、白炉测试(White Furnace Test)
把所有理论拼起来后,需要一个验证工具。白炉测试就是这个工具——将物体放入恒定 1.0 亮度的环境光(”白炉”)中,对纯白色金属(
1 | |
实测会发现:单次散射的 Cook-Torrance 在高粗糙度下能量明显损失(
十一、本篇总结
第一篇我们走完了一条完整的物理 → 数学 → 工程链条:
物理基础
- 光打到物体表面只有两种光学现象:表面反射(Specular)或折射进入内部后散射(Diffuse);
- 总能量守恒:被高光抢走的,不能再变成漫反射;
- 金属与电介质的差异本质上是
的差异,决定了两种光学现象的分配比例。
微表面统计
- 宏观平坦的表面在微观下由无数微小镜面构成;
- 三个统计量回答三个问题:D(多少朝向正确)、G(多少没被遮蔽)、F(每个微面反多少);
- Cook-Torrance 把它们组合成
。
D / F / G 三项与漫反射的演化
| 概念 | 关键演化路径 | 工程实现 |
|---|---|---|
| 渲染方程 | Kajiya 1986 | URP LightingPhysicallyBased() |
| NDF (D) | Beckmann → Phong → GGX | D_GGX() |
| 几何项 (G/V) | 隐式 → Smith → Smith Joint | V_SmithGGXCorrelated() |
| 菲涅尔 (F) | 精确 → Schlick (双控 |
F_Schlick() |
| 漫反射 | Lambert → 能量危机 → Shirley → Oren-Nayar | 见第二篇 Disney Diffuse |
留下两个待解问题
- 能量+形状的统一:学术界给出了 Shirley(能量精确)与 Oren-Nayar(形状精确),但没有任何模型同时解决两者,更没有能在 60fps 下跑动的统一方案;
- 参数化标准:每个 BRDF 项的参数(
、 、各向异性等)如何打包成一组美术友好、跨引擎可移植的统一接口?
这两个问题都将在 Disney Principled BRDF(第二篇)中得到工业界的统一答案。
十二、工程调试
Diffuse 项的能量溢出排查
如果你在自定义 PBR shader 中观察到”白色塑料球比白色金属球还亮”,几乎可以肯定是 diffuse 没做能量耦合。检查清单:
- 关闭直接光,只看 IBL:纯漫反射输出应当 ≤ albedo(理论上限);如果偏亮,说明 specular IBL 也被算进了 diffuse 通道;
- 抓帧看 G-Buffer:在 RenderDoc / Frame Debugger 里查
_GBuffer0(diffuse)通道,纯白塑料应当显示约 (0.96, 0.96, 0.96),剩 4% 给了 ; - 检查 metallic 边界:metallic = 1.0 时,diffuse 通道必须为 0;任何残留都是工作流 bug。
NoV 边界 NaN
F_Schlick(NoV, F0) 中如果 V_SmithGGXCorrelated 中分母
1 | |
abs 而非 saturate 是为了背面光照的合理性(双面材质如树叶、纸)。
视锥外 Hammersley 序列偏差
烘焙 BRDF LUT 时,如果 importance sampling 的方向 L 落在表面下方(NoL ≤ 0),必须 continue 跳过——不要简单地 saturate,否则积分误差会累积导致 LUT 噪声。
参考文献
- Kajiya, J. T. (1986). The Rendering Equation. SIGGRAPH ‘86.
- Cook, R. L., & Torrance, K. E. (1982). A Reflectance Model for Computer Graphics. ACM TOG.
- Walter, B., et al. (2007). Microfacet Models for Refraction through Rough Surfaces. EGSR.
- Heitz, E. (2014). Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs. JCGT.
- Schlick, C. (1994). An Inexpensive BRDF Model for Physically-based Rendering. EG.
- Oren, M., & Nayar, S. K. (1994). Generalization of Lambert’s Reflectance Model. SIGGRAPH ‘94.
- Shirley, P., et al. (1997). A Practitioners’ Assessment of Light Reflection Models. Pacific Graphics.
- Minnaert, M. (1941). The reciprocity principle in lunar photometry. Astrophysical Journal.
- Hammon, E. (2017). PBR Diffuse Lighting for GGX+Smith Microsurfaces. GDC.
- QianMo. PBR-White-Paper. GitHub.
- LearnOpenGL CN. PBR 理论.