PBR的基础知识,学起来也是相当枯燥的一章。
基于物理的渲染理念
关于基于物理的渲染理念,其实跟图形学中对几何体的建模尺度有一定关联。图形学中,对几何体外观的建模,总会假设一定的建模尺度和观察尺度:
- 宏观尺度(Macroscale),几何体通过三角形网格进行建模, 由顶点法线(Vertex Normal)提供每顶点法线信息
- 中尺度(Mesoscale),几何体通过纹理进行建模,由法线贴图(Normal Map)提供每像素法线信息
- 微观尺度(Microscale),几何体通过BRDF进行建模,由粗糙度贴图(Roughness Map)配合法线分布函数,提供每亚像素(subpixel)法线信息

传统光照模型中,一般只将几何体建模到中尺度的法线贴图(Normal Map)层面。虽说Blinn-Phong等分布也是基于微平面理论推导而来,但并没有配套粗糙度贴图(Roughness Map)为其提供亚像素级精度的细节,而且传统的NDF一般都没有经过归一化,不满足能量守恒,容易出现失真。
而在基于物理的渲染工作流中,通过将粗糙度贴图(Roughness Map)与微平面归一化的法线分布函数结合使用,将需渲染的几何体的建模尺度细化到了微观尺度(Microscale)的亚像素层面,对材质的微观表现更加定量,所以能够带来更加接近真实的渲染质量和更全面的材质外观质感把控。如下图:

微观几何
光与表面之间的交互

我们从图中可以看出如下这个在这里发生如下操作:
- 反射(Reflection):在物体表面直接反射,我们一般称之为镜面反射。
- 折射(Refraction):从表面折射入介质的光,会发生吸收(absorption)和散射(scattering)等,而介质的整体外观由其散射和吸收特性的组合决定。
- 散射(Scattered):折射率的快速变化引起散射,在介质内部发生会造成光的方向会改变到各个方向。散射最终被视作的类型与观察尺度有关。散射距离:入射点到出射点的距离。观察像素: 屏幕上 1 个像素,对应物体表面真实世界的物理宽度
- 次表面散射(Subsurface Scattering,SSS):观察像素小于散射距离。光子在内部微小颗粒之间来回反弹,不同波长光被吸收程度不同,会产生颜色偏移(比如皮肤红光穿透更深,背光泛红); 散射后的光子从表面另一个位置穿出,形成柔和漫反射光,这部分就是次表面散射光。 关键特征:入射点≠出射点。普通 BRDF 只能描述「同一点入射、同一点出射」的表面反射,完全无法模拟这种跨位置透光效果,因此次表面散射需要用 BSSRDF(双向次表面反射分布函数) 描述,是 BRDF 的扩展。
- 漫反射(Diffuse):观察像素大于散射距离,散射被视作漫反射。局部着色模型处理即可。
- 透射(Transmission):入射光经过折射穿过物体后的出射现象。一般在透明物体出现,需要引入BTDF来单独处理。
- 吸收(Absorption):具有复折射率的物质区域会引起吸收,具体原理是光波频率与该材质原子中的电子振动的频率相匹配。复折射率(complex number)的虚部(imaginary part)确定了光在传播时是否被吸收(转换成其他形式的能量)。发生吸收的介质的光量会随传播的距离而减小(如果吸收优先发生于某些波长,则可能也会改变光的颜色),而光的方向不会因为吸收而改变。任何颜色色调通常都是由吸收的波长相关性引起的。
光与不同物质之间的交互
一半分为两种情况,与金属物体的交互和与非金属物体的交互。
与金属物体表面交互时,折射光会立刻被吸收,能量被自由电子吸收,不会散射出来;
与非金属物体表面交互时,折射光就表现为常规的介质交互,有吸收也有散射,折射光会在经过部分吸收后,从表面重新射出。

次表面散射
在渲染中一般将表面反射认作为specular,而diffuse实际上与次表面散射是同一种现象,本质都是次表面散射的结果。唯一的区别是相对于观察尺度的散射距离。散射距离相较于像素来说微不足道,可以近似于入射点=出射点,次表面散射便可以近似为漫反射。也就是说,光的折射现象,建模为漫反射还是次表面散射,取决于观察的尺度。

看左上角的,绿色的大圈就认为是一个像素映射到平面后的大小,这个时候所有进入表面内部都是在这个圈内出射的,这部分由于距离入射点很近所以就直接认为是从入射点出去的,也就是右上角的图,这部分就是可以近似为常见的漫反射,用局部着色模型处理。
下方的图这个内部光线出去时的出射点距离入射点就比较远了,就超出了绿色圈的范围,如果为了更加真实的着色效果。这部分就需要单独作为次表面散射来处理。
BXDF
双向散射分布函数(Bidirectional Scatter Distribution Function,BSDF)。它由两部分构成:双向反射分布函数(Bidirectional Reflectance Distribution Function,BRDF)和双向透射分布函数(Bidirectional Transmission Distribution Function,BTDF)。BSSRDF(bidirectional subsurface scattering reflection distribution function,双向次表面散射反射分布函数) 在上述这些BxDF中,BRDF最为简单,也最为常用。因为游戏和电影中的大多数物体都是不透明的,用BRDF就完全足够。而BSDF、BTDF、BSSRDF往往更多用于半透明材质和次表面散射材质。如下图所示。

BRDF 双向反射分布模型
Bidirectional Reflectance Distribution Function
描述表面如何将入射光反射到各个观察方向的函数,已知法线,输入入射方向、出射方向,输出反射能量比例。
BRDF
漫反射项
Lambertian BRDF
最基础的漫反射是使用Lambert漫反射模型或者是半Lambert漫反射模型。但正常的Lambert漫反射无法满足PBR的能量守恒原则。于是引入了Lambertian漫反射模型。
Lambertian假设:假设光线进入内部后,在无限小 的距离内就被完全均匀地打散并从同一个点射出来。因为散射极其充分,所以出射光的方向与入射方向彻底无关,只跟有多少总能量(反照率颜色ρ)有关。
公式如下:
公式极其简单,
信息
反照率(Albedo):专门指漫反射 部分的基础颜色。它代表光线进入物体内部,被吸收和散射后,最终漫射出来的颜色。属于反射率 的一种
- 如果
,代表纯白,即所有颜色都“100% 反射”(不吸收)。 - 如果
,代表灰色,即所有颜色都“50% 反射”(吸收了一半能量)。 - 如果
,代表红色,即红光反射 90%,绿蓝光只反射 20%。
推导:
首先漫反射是一个均匀向各个方向反射的一个现象。因此漫反射的BRDF一定是一个常数,假设入射光是均匀且遍布整个半球方向,即也是一个常数,可以得到:
这里
由于假设入射光是均匀且遍布整个上半球方向,所以
因为
这里因为积分的对象改变了,所以相应的积分区域也会发生了改变。
根据正弦二倍角公式:
因为
所以,最后化简为:
即:
由于之前我们视为纯白色表面,没有考虑能量被吸收,将反照率考虑进来之后,得到最终的漫反射BRDF:
Lambertian BRDF不仅性能好,而且和复杂模型的效果也非常接近。我们这里的漫反射项的计算没有考虑材质表面粗糙度以及材质表面的镜面反射对漫反射的影响。迪士尼和 Oren-Nayar 的 BRDF 模型考虑了上述影响,他们的模型会在掠射角产生逆向反射。我们这里不这样做首先是因为这样做会产生额外的计算代价,但效果提升却不太明显。其次是复杂的漫反射模型也让 IBL 和球谐光照的实现变得更加困难。
局限性:
- 太“平”:因为亮度不随视角变化,纯Lambertian材质的立体感很强,但缺乏真实感(真实物体表面多少有些微粗糙变化)。
- 无法表现边缘透光:当强光从背后照射时,Lambertian只能算出背面是黑的,但像耳朵、手指 这类SSS材质,边缘会透出红光——这就必须用我们之前说的次表面半径 参数来计算,而不是用简单的
了。
Disney 漫反射 BRDF
上面我们说过了,传统的 Lambertian BRDF就是简单的
于是迪士尼根据真实数据发现粗糙的材质(如布料、未抛光木材)在掠射角(视线贴着表面) 看时,反射率并不是恒定的,而是明显变亮了(称为“回射效应”,Retro-reflection)。
于是借助了Schlick 近似(Schlick 1994年提出的菲涅耳近似),提出了 Disney Diffuse(漫反射部分的 Schlick 菲涅耳近似):
其中
光照角度因子
- 当光线垂直 照射
时, ,这个因子变成 ,不影响基础色。 - 当光线倾斜 照射
时, ,这个因子变成 ,漫反射强度会变成 倍。
视线角度因子
- 当视线垂直 观察
时, ,这个因子变成 ,不影响基础色。 - 当视线倾斜 观察
时, ,这个因子变成 ,漫反射强度会变成 倍。
其中
其中
这是一个经验公式,故不需要什么推导。
镜面反射项 DFG项
Cook-Torrance Specular DFG的应用
Torrance-Sparrow基于微表面理论,用后文将要讲述的三个函数建立了镜面反射BRDF模型。这个模型后来由Cook-Torrance引入计算机图形学,也被称为Cook-Torrance模型。Cook-Torrance BRDF 具体公式:
其中
但这种表达方式在物理学上不太严谨,因为我们这里的入射光和反射光准确来说都说立体角方向,所以应该使用
其中,
推导:
假设一束光照射到一个微表面上,入射光方向为
根据辐射率与辐射通量之间的公式
其中

把
微表面是光学平坦表面,所以反射光线遵循菲涅耳定理,则反射光的辐射通量为:
根据辐射率与辐射通量之间的公式
由BRDF定义和
信息
因为
所以
我们知道在渲染方程

如上图所示,入射光与微表面相交于
由立体角的定义
连接
在这个图中,我们还需要理解一件事情,半角(法线)立体角
所以,图中
因为单元球的半径为1,所以连线
结合之前的结果可得:
由于
所以:
我们代回到之前求得到
最后加上几何函数项G,得到完整的Cook-Torrance BRDF:
D:法线分布函数**(Normal Distribution Function)**
当一个入射光
也就是说一个入射光
信息
法线分布函数写作
- 单位宏观面积,
针对宏观着色微元 ,代表单位宏观面积内,法线为 的所有微平面总面积。 - 单位立体角
, 微平面法线是连续分布,不存在法线严格等于某固定向量的微平面,必须引入范围区间。 所以我们求在单位立体角 范围里面的法线。
这时我们就得到了
每单位宏观面积、每单位立体角内,法线为
可以得到以下公式:
由于实际上不可能去模拟所有微表面的法线方向,而有的是该点处的表面法线方向,整体来说微表面的法线方向都是对宏观法线方向的一个扰动后的结果,也就是说微观的法线都是在宏观法线上稍微摆动了一下,如下图

NDF不是概率密度函数,也不是正态分布函数,而是一个面积的密度函数,这需要纠正的一点。 因为微平面的法线存在无数个,因此法线分布函数不能使用一个具体的向量值,而需要使用微分立体角限定一个范围。这样才可以宏观统计分布。
信息
归一化约束:
宏观表面中的所有微观表面的投影面积应当等于宏观表面的面积。
在上文中,我们有对
然后我们再对其求一个投影,其结果应该等于宏观表面的面积,也就是
由于
即将
换句话说,
归一化意味着着色模型根据其角度大小按比例缩放镜面高光的强度,这样总反射能量在不同的表面平滑度下保持不变。总的来说也是为了保持PBR的能量守恒原则的。即 “入射多少能量,只要不考虑吸收,反射总能量在宏观上就是守恒的”。

更一般的,微表面与宏观表面在投影到垂直于任何视角观察方向
方程左边指的是微表面在垂直于视角方向的平面上的投影,右边指的是宏观表面在垂直于视角方向的平面上的投影。

需要注意的是在这里点乘
也就是说我们只需要计算可见微表面即可。我们可以通过定义遮蔽函数(masking function)
注意这里是加上了+号的限制,也就是现在必须是大于零的,也就是说背面的微表面不予考虑。乘积

那么在这里可以对法线分布函数做一个性质的总结,如下所示:
- 微表面法线密度始终为非负值:
- 微表面的总面积始终不小于宏观表面总面积:
- 任何方向微表面的投影面积和宏观表面一致:
- 若观察方向为法线方向,则其积分可以归一化。即
时,
历史上主流的法线分布函数,按提出时间进行排序,可以总结为:
- Berry [1923]
- Beckmann [1963]
- Phong [1973]
- Blinn-Phong [1977]
- ABC [1989]
- GGX [2007] / Trowbridge-Reitz [1975]
- Shifted Gamma Distribution,SGD [2012]
- Trowbridge-Reitz(GTR)[2012]
- Student’s T-Distribution , STD [2017]
- Exponential Power Distribution , EPD [2017]
各向同性(Isotropic)NDF
信息
这里略微补充一下各向同性和各向异性的区别
简单来说就是,各向同性的BRDF在输入和输出方向围绕表面法线变化(都与法线的夹角保持不变)时保持不变;
而各项异性的话会跟着和表面法线夹角会有所改变,通常各项异性应用在头发、丝绸、磁盘的材质会比较多。
也就是说各向同性会在入射光线和出射光线的方向变化的时候,保持与法线的夹角不变,并且对应的BRDF的值也是不变的,而各向异性则会有不同的BRDF的值。
说人话就是,如下图,各向同性中BRDF不会随着

Blinn-Phong 分布
了解了NDF所需要的性质之后,问题是需要NDF满足什么?期望对于较光滑宏观表面当
首先构造一个函数出来,首先想到的是

从上图可知,对于同一个
但是还是不满足之前关于NDF的性质,首先需要一定满足
于是我们引入了一种假设——高度场模型,所谓高度场的微表面模型就是微表面法线分布在宏观表面法线所在的半球上,即
还记得我们上面的归一化约束吗,
因此我们需要一个归一化因子(normalization factor)
接下来就开始推导
将一些常量提取出来并简化得到:
只需要推导
我们直接代回原式:
最后的法线分布函数为:
这就是 Blinn-Phong 分布,从一开始
如下图是不同

在 UE 中,存在着不一样的映射,将
这里对
我们看一下它在不同

可以从图中看出,这样
还有一个重要的点,Blinn-Phong是不满足形状不变性(Shape Invariance) 的,关乎到后续的几何函数(这个很重要,后面会解释)
Beckmann 分布 + 斜率空间
Beckmann NDF是光学界(optics community)在第一个微表面模型中使用的法线分布函数。当Cook-Torrance BRDF初步提出的时候也是选用 Beckmann,现在同样还在使用。Beckmann 归一化之后的法线分布方程如下:
由于
如下图是不同

Beckmann分布在某些方面与Blinn-Phong分布非常相似。 两种法线分布的参数可以同样使用

但是Beckmann分布是满足形状不变性的 NDF。
信息
在做证明之前,我们还需要补充一点知识
斜率空间
就是通过使用斜率来表示一个向量(微表面方向)
二维斜率空间表示
如下图所示,微表面的斜率为

三维斜率空间表示
在三维空间中,如果法线

还是和之前一样的推导公式,
设微表面和
又因为
可以求得其斜率为
同理,可以求得,
三维空间中的法线可以通过它所在的微表面与
由于斜率和法线之间的关系,斜率可以作为法线的另一种参数化,在
将斜率空间可视化的一个好方法是将其与平面

这里引入了一个符号
想象在三维空间的原点
现在,空间中任意一条朝上的法线向量
因此可以通过将每个点投影到远离原点直到它碰到平面来想象半球被放大并拉伸到平面上。这在单位向量之间建立了双射(一对一映射,
正式地说,任意向量的斜率空间参数化
这假设向量是向上的,因此必须满足
从斜率转换回单位法向量也很简单,把拉伸后的向量进行一个归一化即可,公式如下:
单位向量的另一个常见参数化是极坐标
极坐标和
极坐标空间和斜率空间的转换如下:
为什么需要斜率空间
现在已经了解了如何定义斜率空间并从中来回转换。但是为什么有用呢?为什么我们要以这种方式表示向量或函数?
在微表面BRDF理论中,为简单起见通常假设微表面是一个高度场(对于许多日常材料来说,这是一个非常合理的假设)。如果微表面是一个高度场,那么它的法线被限制在上半球。斜率空间非常适合精确参数化上半球。
从性能的角度来看,斜率空间的转换成本也比极坐标低得多,这使得它更适合在着色器中使用。它只需要一些除法或归一化,而不是一堆正三角函数或反三角函数。
与单位向量的其他表示相比,斜率空间也没有边界。斜面的原点(0, 0)表示平面法线,越远斜率越极端,但不能使平面倒置或产生无效法线。因此可以在斜率空间中自由地对向量进行各种操作,而不必担心超出任何界限。
关于斜率空间的另一个有用的事实是,表面的许多线性变换如缩放或剪切都可以简单地映射到斜率空间的变换。例如将一个表面沿其
例如:二维表面中,当表面在

斜率空间在NDF中的应用
微表面 BRDF 的关键要素之一是它的法线分布函数(NDF),而斜率空间的关键用途之一正是定义NDF。由于斜率空间是一个无界的二维平面,我们可以像在任意二维域中那样,引入现成的一维或二维分布函数,并以各种方式操作它们。只要我们最终在斜率平面上得到一个有效的、归一化的概率分布(有时称为斜率分布函数,或
通俗来说就是半球面(NDF定义域)是扭曲的、有边界的,而斜率空间是平坦的、无界的二维平面。在平面上定义分布、做采样、做滤波,都比在球面上容易得多。但问题来了:平面上的分布不能直接拿来就用,必须经过一个严密的数学转换,才能变成物理正确的NDF。
雅可比行列式(The Jacobian)
在将分布函数从一个空间映射到另一个空间时,重要的是要记住,这些函数的值并非无量纲的数字;它们是相对于底层空间的面积或体积测度的密度。因此,仅仅通过改变变量来用新坐标表达函数是不够的;你还必须校正映射对体积的拉伸或挤压,这种拉伸或挤压可能随位置变化而变化。
假设我们有域
这表示在无穷小体积
这个等式可以改写为:
这里的因子
什么是“逆雅可比”? 如果映射
因此,当将斜率空间分布转换为 NDF 时,我们必须乘以适当的雅可比行列式。 但是我们如何找出那是什么? 首先,我们必须记住,NDF 的定义不是半球立体角上的密度,而是平面上投影面积上的密度。 因此,仅仅找到从斜率空间到极坐标的雅可比行列式 是不够的; 我们还需要找到从极坐标到投影面积的雅可比行列式。
最简单的方法是使用微分形式的 Formalism (形式理论)
这里我们还需要引入一种新的运算——楔积(又称外积,符号:
总之记住楔积是用来求面积的,并且有三个重要性质:
结合律:
反交换:
反交换的延申:
第一步,计算极坐标下的法线方向
前面我们知道,极坐标转
我们先求全微分
然后再做楔积
第二步,计算极坐标下的法线方向
前面我们知道,极坐标转斜率空间的公式是:
我们先求全微分
然后再做楔积
第三步,求将密度从斜率空间转换到 NDF 形式的逆雅可比行列式
最后我们就可以用这个雅可比行列式去得到法线分布函数和斜率分布函数的关系:
如果同时考虑到粗糙度
Beckmann 分布的推导:
既然我们学习了斜率空间,就从斜率空间开始思考。前面我们学了,在斜率空间可以用一组二维向量
那么满足这样的函数,我们大概第一个想到的就是 “二维高斯分布” (二维正态分布)。没错,Beckmann 分布就是基于二维高斯分布 推导的。我们先来看看二维高斯分布的完整公式:
这个公式看起来很可怕吧,是的,这很可怕。不过我们稍微分析一下,就能化简成很简单的公式。
其中
而
最后一个
这里我们的
我们把这些值代入,可得:
我们进一步对方程做优化。我们把与可调节的系数,即粗糙度系数
现在我们的方程就与一开始的庞然巨物相比简单了很多。
前面我们学习到,在斜率空间中,
我们现在所求的是在斜率空间下的分布函数,我们需要将其转换到
这就是 Beckmann 分布函数的推导,不过推导到现在还不要着急结束,我们还需要证明其是否满足归一化约束。先回顾一下会用的结论,归一化约束
使用换元法进行求不定积分:
令
同时还要修改积分域,当
代回原积分得:
代回原式得:
结果为1,满足归一化约束,到此为止,Beckmann 分布函数的推导结束了。
GGX 分布
上述的 Blinn-Phong 分布以及 Beckmann 分布都可以发现一个问题,就是衰减的特别快,只要图像稍微向两侧走,就会快速降为0。反应到光和物体上就是会有一些锐利的高光,一旦
GGX即Trowbridge-Reitz分布,最初由Trowbridge和Reitz推导出,在Blinn 1977年的论文中也有推荐此分布函数,但一直没有受到图形学界的太多关注。30多年后,Trowbridge-Reitz分布被Walter等人独立重新发现,并将其命名为GGX分布。
GGX 归一化之后的法线分布方程如下:
我们可以对这个式子进一步变形:
分母的这个
推导:
这次我们需要找到一个比 Blinn-Phong 分布和 Beckmann 分布高光衰减更慢的函数,即在斜率空间找一个“中间隆起、两端缓慢衰减”的简单有理函数。
而有这么一个函数刚好满足这个条件,它就是
其中

在图中可以看出,两边的衰减没有那么剧烈了。既然找到了合适的函数,那么下一步就是要对它进行归一化约束。
设归一化系数为
由于归一化约束,所以需要满足:
因为
使用换元法进行求解:
令
同时还有更改积分域,当
继续换元化简,令
更改积分域,当
代回原式得:
求得归一化系数为
下图展示了GGX在不同

下图是一张 Beckmann 分布以及 Blinn-Phong 分布和 GGX 分布的对比,在这可以看出 GGX 的高光部位并没有一个快速衰减,而是呈现一个带有光晕的现象。这也就是 GGX 分布的拖尾效果。更加符合现实世界中的材质表现,这也是为什么 GGX 分布能够成为最流行模型之后的原因之一。



并且GGX分布还有形状不变性的特性,与后面介绍的GTR分布却没有这个特性,这也是导致GTR没有推广开来的原因之一。
信息
在迪士尼原理着色模型中,GGX 分布同样有一个类似上面 Blinn-Phong 分布以及 Beckmann 分布的映射关系以便用户来使用。Burley推荐将粗糙度
GGX 分布的移动端性能优化
我们可以通过使用半精度浮点数(half precision floats)来对此实现进行改进。这种优化需要改变原始方程,因为在半浮点数half(即mediump)中计算
问题一:当
问题二:
可以通过拉格朗日恒等式(Lagrange’s identity)解决此问题,格朗日恒等式即:
由于
于是,我们可以通过使用简单的叉积
总的来说,此优化方案会带来更好的性能,并保持所有计算都在half(mediump)内进行。
GTR 分布 + 形状不变性
那能不能有更好的拖尾效果的NDF呢?能够更好的去控制NDF的形状尤其是它的尾部,Burley 根据对 Berry,GGX 等分布的观察,提出了广义的 Trowbridge-Reitz(Generalized-Trowbridge-Reitz,GTR)法线分布函数,提供了更多的对于尾部的控制。公式如下:
其中,

不过从这个公式当中可以看出和GGX的主要差距就是在分母的指数上,总体上肯定希望让红线往绿线和蓝线方向偏移,因为长尾效果更好。注意上边当我们的变得很大的时候,其实是接近于之前的Beckman效果的,所以GTR在GGX和Beckmann实现了某种统一。因此通过修改分母的次数就可以得到相应的不同程度的拖尾效果。虽然GTR在拖尾效果上很好,但是为什么还是推广不开呢?虽然实现了可以随意修改参数得到不同的长尾效果,但是也同时丧失了形状不变性,导致其发布以来,无法被广泛使用。
信息
形状不变性
从之前得到过的斜率分布函数可以看出
其中
最后多出来的
根据法线分布函数与斜率分布函数的关系可以将拥有形状不变性的法线分布函数写作:
对于形状不变形的NDF可以通过粗糙度来控制表面的拉伸情况,下图所示:

对于形状不变的NDF,缩放粗糙度参数相当于通过倒数拉伸微观几何
形状不变性是一个法线分布函数NDF需要具备的重要性质。具有形状不变性的NDF,可以用于推导该函数的归一化的各向异性版本,并且可以很方便地推导出对应的遮蔽阴影项G。具备形状不变性的常用NDF为:GGX以及Beckmann,不具备形状不变性的NDF有Phong、Blinn-Phong、GTR,这也是为什么这些模型最终没有推广开来的原因。
各向异性(Anisotropy)NDF
现实世界中,大多数材质具有各向同性的表面外观,但有些特殊材质的微观结构具有显著的各向异性(Anisotropy),从而显著影响其外观。


创建各向异性NDF的常用方法是基于现有各向同性NDF进行推导。而推导所使用的方法是通用的,可以应用于任何形状不变的(shape-invariant)各向同性NDF,这便是GGX等形状不变的NDF能更加普及的另一个原因。
如上文所述,若一个各向同性(isotropic)的NDF具备形状不变性(shape-invariant),则其可以用以下形式写出:
其中,参数
下图就是一个各项同性的分布是怎么通过拉伸表面变成一个各向异性的分布的。相反的任何一个各向异性分布的结构可以变换回各项同性分布的结构。

Beckmann 分布 各向异性
Beckmann 分布函数是最符合这个形状不变性形式公式的,我们看各向同性的公式:
我们直接比着葫芦画瓢就能直接得出 Beckmann 的各向异性版本:
其中,
GGX 分布 各向异性
我们首先把各向同性的 GGX 分布函数转化为形状不变性形式的公式:
现在符合形状不变性形式,我们只需要比着葫芦画瓢将其转换为各向异性版本即可:
G:几何函数(Geometry Function)
实际上并不是所有微表面都能收到接受到光线,如下面左边的图有一部分入射光线被遮挡住,这种现象称为Shadowing。也不是所有反射光线都能到达眼睛,下面中间的图,一部分反射光线被遮挡住了,这种现象称为Masking。光线在微表面之间还会互相反射,如下面右边的图,一些被认为是shadowing部分的微表面会收到其他微表面反射的光,这可能也是一部分漫射光的来源,微表面理论忽略了这些相互反射。假如光线一直没出去反射,会造成一定的能量损失,后续会补充如何补齐这一块能量的方式(保持能量守恒)。

几何函数就是为了更好的模拟着色区域内微表面的凹凸不平而诞生的。
几何函数是保证 Microfacet BRDF 理论上能量守恒,逻辑上自洽的重要一环。其描述了微平面自阴影的属性,表示所有微表面中同时被入射方向和反射方向可见(没有被遮挡的)的比例,即未被遮挡的微表面占所有微表面的百分比。也就是说项计算出了真正能够有多少光到达观察方向。单纯的 NDF 数值不是有效的微表面的法线强度,需结合几何函数才能得到最终对 BRDF 能产生贡献的法线分布。
信息
遮蔽概率不变性(Masking Probability Invariance)
基于形状不变性。下图展示了给定出射方向下的拉伸一维表面对于微表面遮蔽情况的影响,拉伸一维表面就像拉伸图片一样即一个维度被乘以一个恒定的系数。这一操作并不改变该表面的拓扑结构,当观察向量同样被拉伸后被遮挡的光线仍然被遮挡,未被遮挡的光线仍然未被遮挡。这是一个关键性质,后续会方便几何函数的推导。当中涉及的所有斜率同时被缩放时,遮挡概率对拉伸是保持不变的。这包括微表面的斜率和与出射方向相关的斜率。它们都被拉伸系数相反缩放因此斜率宽度的分布也同样反向拉伸了。相应的

在之前的 NDF 介绍中,我们通过定义遮蔽函数(masking function)
基于物理的掩蔽函数
微表面轮廓
为了解决

在这里有很多微表面轮廓模型,但是符合物理并且满足上述公式约束的遮蔽函数有Smith 遮蔽函数和Torrance-Sparrow "V-cavity" function (V 型腔几何遮蔽函数)
Smith 遮蔽函数
在真实的微表面中,是连绵起伏的山丘,一个点的高度和旁边的法线是有关联的(山顶法线朝上,山坡朝外),计算这种“关联表面”的遮挡概率,数学上极其复杂。如下图左图。

为了能算,Smith模型做出了一个**“无自相关”的假设:把微表面想象成无数根随机竖立的“针”或“碎片”**,它们的高度和朝向完全是独立的,跟邻居没有任何关系。如上图右图,虽然这看起来不像是真实的连续表面,但实践证明,用它算出来的光照结果视觉效果很好。
这个假设带来了一个神秘好处:法线和遮蔽脱钩,即**法线/遮蔽独立性(Normal/Masking Independence)。**因为是随机独立的,所以出现了一个关键性质:对于一个朝向你(没有被背面剔除)的微表面,它被远处其他微平面挡住的概率,跟它自己的法线方向没有任何关系。
意思就是说,如果一个表面法线朝向你的微表面,它被遮挡的概率与它的法线朝向没有关系;如果是背对你的法线的微表面(背面),它天然被自己挡住了,属于本地遮挡,与法线方向有关。
于是我们可以得到一个公式:
左边
右边第一项
右边第二项
我们把这个公式代入到
其中
由于这个方程是面向非背面法线的,所以
所以:
远处遮挡的概率,等于‘宏观表面实际亮度’除以‘所有微平面朝观察方向的投影面积之和’。也就是说,分母越大(微平面越“崎岖”),分母算出来的值越小,说明远处遮挡越严重。
完整的
这是Ashikhmin等人在法线、掩蔽相互独立的假设下剔除的准确遮蔽函数的积分形式。它们使用积分表示来预计算遮蔽函数,并且将它存储在一个查阅表中用来渲染。Smith遮挡函数通过将积分与从法向转换成斜率空间,可以将上面的式子重新改写成:
其中
Smith遮蔽函数针对每个NDF会计算出不同的
优点:Smith遮挡函数唯一满足其能量守恒并且满足法线/遮蔽独立的几何函数,选择它,首先不是因为它像真实表面,而是因为它在“法线/遮蔽独立”这个数学假设下,数学上绝对精准且严格满足能量守恒(不会出现反射光能量大于入射光的“永动机”情况)。
缺点:光线垂直 照向粗糙表面时,光线能射入凹坑底部,完美体现粗糙度;但当光线几乎平行(掠射)照向表面时,凸起的微表面会投射出长长的阴影,把凹坑全部盖住。此时光线只打在凸起的“光滑山顶”上,粗糙度瞬间失效,表面看起来异常光滑。因为它假设法线和遮挡位置无关,它无法准确模拟这种“光照角度剧烈改变粗糙度感知”的复杂耦合效应,导致掠射角下渲染结果偏暗或偏亮。
限制:Smith 假设表面是完全随机 的(像一堆散沙)。但布料有规律的经纬线编织、鳞片有规律的排列,这些属于强自相关 结构。一个凹坑旁边必有一个凸起,法线和位置强相关。在重复结构面前,Smith 的“独立性”假设彻底崩塌,算出来的结果会严重失真,所以 PBR 渲染布料时,往往要专门定制 NDF(如 Charlie 模型)和独立的遮蔽函数。
那么接下来还有问题需要解决,除了入射光会被遮挡以外,微表面产生的镜面反射光同样有可能被其它的微表面所遮蔽,导致其无法到达观察方向。也就是说在前面的基础上,还需要再考虑这个微表面产生的镜面反射光是否会被遮挡的情况。由于光路是可逆的,反射向相机的光被遮挡,同样可以看作是从相机射向微表面的光被遮挡。因此这种情况我们同样可以使用遮蔽函数
Smith 联合遮蔽-阴影函数
分离的遮蔽阴影函数
当遮蔽函数
这种被称为分离形式 的遮蔽阴影函数。如果使用该形式会导致得到的结果过暗。最极端的一个例子即是,假设光照方向和观察方向相同,即
高度相关的遮蔽阴影函数
一个更精确的遮蔽阴影函数需要对遮蔽和阴影之间的相关性进行建模,由于微表面的高度。直观地讲一个面在微表面的高度越高,在出射方向(无遮挡)和入射方向(无遮挡)的概率就会同时增加。因此遮蔽和阴影是通过微表面的升高而相互关联的。直观理解:如果一个微平面凸起得够高,它在视线方向没被挡,那么在光线方向大概率也没被挡(两者正相关)。这种相关性可以在以下的联合遮蔽阴影函数中得到说明:
去除了分离形式中的分母中的
方向相关的遮蔽阴影函数
之前讲的“高度相关”只考虑了微平面凸起的高度(高的容易都看见,低的容易都挡掉)。但它忽略了一个水平方向的因素:如果视线方向(
在这种情况下,双重遮挡的概率不是相乘,而是取短板效应
为了描述这种从“完全相关(同侧)”到“独立(异侧)”的渐变,给出了混合公式(分离形式和方向形式):
其中
但是
高度方向相关的遮蔽阴影函数
将高度相关与方向相关的函数结合,即可得到高度方向相关的遮蔽阴影函数。其中Smith高度方向相关的遮蔽阴影函数如下所示:
极端情况 1:视线和光源完全重合(
分母变成
极端情况 2:视线和光源方向差异极大(
分母变成
中间情况(
分母在“只取最大值”和“两者相加”之间平滑插值。
不同 NDF 下的几何函数
Beckmann-Smith阴影遮蔽函数
我们之前求到过Beckmann的斜率分布函数
再通过
其中
后续可以计算出对应的
GGX-Smith阴影遮蔽函数
根据我们之前求得到的GGX NDF可以简单得到它的斜率分布函数:
再通过
其中
可以接下去继续推算
上诉式子即:GGX使用Smith高度相关的遮蔽阴影函数公式。此时的
分离形式(Schlick近似形式)的
GGX的各种近似
Smith-Schlick-GGX
对于分离形式的,Christophe Schlick在1994年提出了一种极快的公式替代
其中
我们会在计算直接光和间接光的时候使用不同的
直接光
Smith-Joint-Schlick-GGX
对于高度形式,Heitz在2014年基于Schlick近似提出了Joint(联合的概念),将游戏和电影业界对遮蔽阴影函数(The Smith Joint Masking-Shadowing Function)的理解上升到了一个新的层次。
UE和Unity都在后续更新中转向了Smith联合遮蔽阴影函数(The Smith Joint Masking-Shadowing Function)的高度相关遮蔽阴影形式(Height-Correlated Masking and Shadowing),并相应地都做了一些近似与优化。
其中UE和URP中使用的:
结合起来:
这里有点误导的是,这里求的
我们求得的这个
各向异性版本
V-Cavity(V 型腔几何遮蔽函数)
V-Cavity模型最初的想法是通过若干不同尺度的V型表面来近似渲染材质,这个模型不是用法线分布来模拟一个微表面上的散射而是计算不同微表面上的散射并平均它们的贡献。如下图所示:

但是现在V-Cavity遮蔽函数用来的很少,大多数还是用的上面讲的Smith模型,虽然V-Cavity的可见法线的分布在数学上有很好的定义。 但它在物理上是不可行的,它所模拟的是一个非现实的入射角下的表面轮廓。
有两种法线:一种是背向的法线会被去除;另一种是不背向的法线,产生一个由

对于单个微表面来说,高度可见的法线会比不太可见的法线占据更多的投影面积,因此有更高的贡献。然而这种情况不会发生在V-Cavity中,因为不同的法线是单独模拟的,并根据法线的分布进行加权。在加权中没有视图依赖性(除了背向法线被丢弃)。这就是为什么V-Cavity没有很好地纳入可见度的影响,而最终模拟的东西接近于法线图。
在掠射角(视线几乎贴着表面)下,真实的粗糙表面会因为凸起的遮挡,反射峰值会向视线方向偏移(即“偏移效应”)。但 V-Cavity 因为把每个微平面都当成“平等投影面积”来平均,导致 BRDF 的峰值强度过低,并且反射方向没有发生应有的偏移,看起来就像一张只会变颜色、但不会因为角度变化而产生立体凹凸感的“法线贴图”。
下图显示了由各向同性的Beckmann产生的BRDFs,其中有V-Cavity和Smith掩蔽阴影函数产生的BRDF,以及从一个程序化随机微表面模型散射的数值模拟中计算出来的结果。可以看到在Smith掩蔽阴影函数下,随着粗糙度的增加,分布向出射方向移动。对于非常高的粗糙度值BRDF甚至主要是反向散射。这种效应是可以预期的,因为面向出射方向的法线是最明显的。相比之下这种效应并没有出现在 从V-Cavity模型中没有出现。

F:菲涅耳反射(Fresnel Reflectance)
菲涅耳效应
菲涅耳效应(Fresnel effect) 作为基于物理的渲染理念中的核心理念之一,表示的是看到的光线的反射率与视角相关的现象,由法国物理学家奥古斯丁·让·菲涅耳(Augustin-Jean Fresnel)率先发现。其具体表现是在掠射角(与法线呈接近90度)下光的反射率会增加。而上述的反射率,便被称为菲涅耳反射率。如下图。


下图也是一个菲涅耳效应的经典范例,垂直看向水面和在远处斜视水面,水面反射的光强是不同的。垂直看水面能够看清水下的情况,但是近乎平行的看向水面,反而反射特别的强烈。

需要注意的是我们在宏观层面看到的菲涅尔效应实际上是微观层面微平面菲涅耳效应的平均值。
也就是说,影响菲涅耳效应的关键参数在于每个微表面的法线和入射光线的角度,而不是宏观平面的法线和入射光线的角度。即:
- 当从接近平行于表面的视线方向进行观察,所有光滑表面都会变得100%的反射性。
- 对于粗糙表面来说,在接近平行方向的高光反射也会增强,但不够达到100%的强度。
并且材质的种类会影响菲涅耳效应的强弱,金属的菲涅耳效应相对较弱,因为其正常情况下的反射率就很高,并且随角度变化很小,对于非金属则相反,非金属的反射率平时就较低,在表面法向量方向的反射率仅为4%(介电质反射率),但当视线与表面法向量夹角很大的时候,在菲涅耳效应的作用下反射率可以接近100%,这一现象也导致了金属与非金属外观上的不同。
菲涅耳方程(Fresnel Equations)
物体的表面是周围介质(通常是空气)和物体材质之间的交界面。光与两种物质之间的平面的相互作用遵循由奥古斯丁·让·菲涅耳提出的菲涅耳方程(Fresnel Equations)。
菲涅耳方程用来描述光在不同折射率的介质之间的行为的方程,菲涅耳方程能解释反射光的强度、折射光的强度、相位与入射光的强度的关系。
对于一个给定的物质,菲涅尔方程可以理解为一个反射率函数
- 当
,光线垂直于表面入射也就是光线方向等于法线方向 ,此时 的值 可以被认为是物质特有的镜面反射颜色。这种情况被称为法线入射(normal incidence), 被称为** 0 度角入射的菲涅尔反射值。** - 随着
的增加,光线射向表面的掠射角(glancing angles)逐渐增加, 的贡献就会越明显,在 的时候达到1(白色)。
信息
简单来讲菲涅耳方程:
描述了物体表面在不同入射光角度下反射光线所占的比率。
光线以不同角度入射会有不同的反射率。相同的入射角度,不同的物质也会有不同的反射率。
下图展示了几种物质的

在镜面反射中,出射角的大小和入射角一样。 这意味着入射光线以掠射角 到达表面——随着

Schlick 菲涅耳近似等式
完整的菲涅耳方程是十分复杂的,除了菲涅耳方程的复杂性,菲涅耳方程还有其他的特性,这使得在渲染中很难直接使用它们。Schlick给出了菲涅耳反射率的近似值如下所示:
其中
在PBR中,我们通常使用微表面法线,也就是半角向量
这个函数是在白色和

上图包含几种与Schlick曲线差距挺大的材质,在转为白色之前表现出明显的 "凹陷"。事实上最下面一行的物质被选中是因为它们与Schlick近似值的偏差特别大。即使对这些物质来说产生的误差也是相当微妙的。在少数情况下可以使用Gulbrandsen给出的另一种近似方法,该方法对精确捕捉此类材料的行为非常重要。这个近似值可以实现与金属的完整菲涅尔方程的较好匹配,尽管它比Schlick的方程在计算上更加昂贵。一个更简单的选择是修改Schlick的近似方法,允许将最后一项提高到5以上的指数。这将改变
当使用Schlick近似时,
这个方程甚至适用于复数折射率(如金属折射率)。折射率在可见光谱上有显著变化的时候,精确计算
在一些应用中, Schlick近似更一般的形式为:
这提供了对菲涅尔曲线在
PBR工作流
工作流中的核心内容便是贴图,不论是UE4还是Unity都支持将PBR的参数以贴图的形式传入引擎,我们可以根据一个物体同一mesh或不同mesh的不同区域的属性差异来控制贴图上的属性产生不同,而没有贴图的话,一个物体只能使用一种参数属性。
美术制作的albedo纹理一般都是sRGB空间的,因此我们要先转换到线性空间再进行后面的计算。根据美术资源的不同,AO纹理也许同样需要从sRGB转换到线性空间

Metallic/Roughness工作流-金属度/粗糙度
该工作流是PBR工作流中最为通用的。

该工作流被定义为一组贴图通道,通道作为纹理被送入着色器的采样器里。M-R工作流的特定贴图有基色(BaseColor)、金属度(Metallic)和粗糙度(Roughness)。

PBR着色器还将会利用到环境光遮蔽(AO)、法线(Normal)和高度(Height)贴图进行视差映射等。
Base Color基色贴图
RGB-sRGB:表示贴图为RGB三色贴图,在sRGB空间
基色贴图保存了金属的反射率和非金属的漫反射颜色,包含RGB三通道。如果某一区域在金属贴图中表示为金属,就取其作为反射率值,否则取其作为反射波长颜色。也就是金属部分的

- 贴图颜色代表非金属的反射颜色和金属的反射率值。
- 除了微遮挡外,基色不应该包含照明信息。
- 暗值不应低于30 sRGB(可容忍范围) - 50 sRGB(严格范围)。
- 亮值不应超过240 sRGB。
- 原始金属的反射率很高,在70-100%范围内,我们可以将其映射到180-255 sRGB。

Metallic金属度贴图
GrayScale - Linear 灰度图,在线性空间
金属度贴图就像一个Mask(遮罩),告诉着色器如何使用在Base Color中采样的数据(采用金属or非金属的计算)。在金属度贴图中,0.0(黑色0sRGB)表示非金属,1.0(白色255 sRGB)表示金属。 着色器采样到白色时就会将Base Color中的对应区域作为金属反射率值对待。

- 金属度图完全可以做成一张非零即一的黑白图,允许极少量两头极端范围内的过度值存在
- 金属值应在235-256 sRGB,它们的基色贴图值应该在180-255 sRGB范围内
- 生锈的、被灰尘覆盖的金属,金属度贴图可以表示非金属和金属之间的混合状态,但如果值低于235 sRGB,基色中的值也需要降低。
- 理论上不应出现大面积的位于中间范围的金属值,那样做是错误的,现实不存在这种材料,但是强行为了特殊效果亦可。
Roughness粗糙度贴图
GrayScale - Linear 灰度图,在线性空间
Roughness贴图描述了表面不规则性也就会影响Diffuse和Specular的占比。描述过反射方向将根据表面粗糙度随机变化。光向变了但总光强不变。粗糙的表面会有较大的、看起来较暗的高光。较光滑的表面会保持镜面反射集中,即使反射的光总量相同,也会显得更亮或更强烈。在Roughness贴图中,黑色(0.0)表示光滑表面,白色(1.0)表示粗糙表面。

M-R工作流的缺陷
M-R工作流的一个缺陷就是它会产生白色边缘的伪影,这个边缘是由于插值造成的,在材料之间的过渡区域是很明显的,在这里,电介质材料和非常明亮的金属之间存在着鲜明的对比。这个问题在S-G工作流也存在但是几乎不可见而且是黑色的伪影。这个现象在材料的过渡区域很明显,因为这一部分从非金属变成了非常亮的金属。S-G工作流中漫反射贴图金属为黑色因此产生了较黑的伪影。


贴图分辨率和纹素密度对边缘伪影的可见性有直接影响。 例如,如果用硬边刷来创建金属和非金属之间的过渡区域,则低分辨率会使边缘变软,从而加剧伪影。 这种低分辨率问题也是由未按比例缩放以提供足够的纹理像素密度的UV引起的。

贴图分辨率会影响M-R工作流中可能出现的白边。 确保UV提供足够的密度以匹配分辨率,以最大限度地减少伪影。
优点
- 更容易创作,不容易因为提供错误的F0而导致结果错误(specular过亮)。
- 纹理占用内存少,因为 Metallic 和 Roughnesss 贴图都是灰度图(单通道)。
- 更广泛被使用
缺点
- 不能控制非金属的
,大多数直接使用0.04代替。 - 边缘伪影更明显,特别是在低分辨率下。
渲染方程
理解完上面的 M-R 工作流的概念,可以得出实时渲染中 M-R 工作流的PBR方程是这样的:
其中,
在早期的经验模型中,需要用一个固定的
- 菲涅尔项
本身就是一个动态的“镜面反射比例”。它告诉你:当光线垂直照射时,反射率很低(约4%);当光线掠射时,反射率接近100%。 - 既然
已经精确计算出了“有多少光被镜面反射了”,那么人为再乘一个固定的 就是多余的。因此,把 直接设为 1(即去掉它),由 全权负责镜面反射的权重。
故
既然镜面反射走了
因此,
- 非金属(电介质)部分:扣除掉被镜面反射走的能量,剩下
可以用于漫反射。 - 金属部分:因为金属几乎不产生漫反射,所以我们要把金属度(metallic)考虑进去,彻底砍掉金属的漫反射贡献。
故
所以,最后的渲染方程可以统合成:
一般我们在游戏引擎中使用时, 往往会把漫反射中的
Specular/Glossiness工作流-高光度/光泽度
我习惯上把 Glossiness 光泽度称作为 Smoothness 光滑度
M-R 工作流通过“金属度”这个开关,将材质分为“金属”和“非金属”两大类,自动化处理了复杂的菲涅尔效应,优点是简单、物理正确。
而 S-G 工作流则将材质属性(如高光颜色和强度)的控制权完全交给了美术师。它提供了前所未有的灵活性,但也要求使用者对PBR原理有更深的理解,以避免创造出能量不守恒的“物理不正确”材质。

该工作流也被定义为一组贴图通道。S-G 工作流的特定贴图有漫反射(diffuse)、镜面反射(specular)、光泽度(glossiness)贴图。(这里的漫反射和镜面反射和传统渲染流程里的贴图不同)。PBR着色器也将会利用到环境光遮蔽(AO)、法线(Normal)和高度(Height)贴图进行视差映射等。
Diffuse 基色贴图
RGB-sRGB:表示贴图为RGB三色贴图,在sRGB空间
基色贴图保存非金属的反射颜色,包含RGB三通道。但它不包含任何反射值,因此金属区域将是黑色(0.0)。该贴图色调指南和 M-R 的 BaseColor 相同,但是金属值为0.0纯黑色,不需要受暗部范围的约束。
sRGB三色图,包含非金属的反射颜色,即漫反射项中的C。

- 颜色表示非金属材料的反射颜色和原始金属的黑色(0.0)。
- 除了微遮挡外,基色应该没有照明信息。
- 暗值不应低于30 sRGB(容差范围) - 50 sRGB(严格范围),原始金属的黑色除外。
- 亮值不应超过240 sRGB。
Specular 反射贴图
RGB-sRGB:表示贴图为RGB三色贴图,在sRGB空间
Specular贴图定义了金属和非金属的
金属表面的灰尘or生锈应该降低反射贴图的反射率值并且提高基色中的颜色值(不再是金属)。非金属一般

- 镜面反射贴图包含非金属的
和原始金属的反射率值。 - 非金属反射的光量比金属少。 普通非金属的
值约为0.02-0.05。sRGB值应介于40-75之间,其重叠范围为0.02-0.05(线性)。 - 常见的宝石在0.05-0.17(线性)范围内。
- 普通液体在0.02-0.04(线性)范围内。
- 原始金属的反射率值将在70-100%镜面反射率范围内,映射到180-255 sRGB。
- 如果找不到特定材料的IOR(折射率)值,则可以使用0.04(0.04 - 塑料)。
Glossiness 光泽度贴图
GrayScale - Linear 灰度图,在线性空间
和M-R工作流中粗糙度相反,0.0表示粗糙,1.0表示光滑表面。
优点:
- 边缘伪影不明显
- 可自己控制非金属
值
缺点:
+
- RGB 贴图多,占用内存多
渲染方程
在 S-G 工作流中由于没有了金属度的概念,所有细节的调节全依靠美术对贴图的把握,所以渲染方程去除了金属度:
工作流转换
S-G 到 M-R 的转换
- 依靠金属与非金属在diffuse和specular的差异获得一张Metallic贴图(金属在diffuse是黑的)
- 以 Metalic 图作为遮罩对 Specular 处理,得到金属的反射率
值 - 覆盖到原本的 diffuse(diffuse + 金属
= BaseColor)
M-R 到 S-G 的转换
- 使用 Metallic 图作为遮罩,对 BaseColor 处理,提取 BaseColor 中的金属部分,剩余的部分覆盖56度灰(0.04),得到 Specular 贴图
- 使用 Metallic 图作为遮罩,对 BaseColor 处理,将金属部分抠去,得到 Diffuse 贴图
工作流常用的其他通用贴图
环境光遮蔽 AO 贴图
AO贴图定义了表面点可访问到的周围的环境光量,它只影响漫反射结果,不遮挡镜面反射。

某些引擎可以用屏幕空间反射来模拟局部反射,即屏幕空间下的环境光遮蔽(SSAO)
高度贴图 Height
高度图在渲染中可用于视差映射,为凹凸/法线贴图额外提供了更明显的深度,增强真实性。

法线贴图 Normal
法线贴图用于模拟表面细节,在PBR和非PBR工作流中用法相同。
不再多说




