本篇参考B站视频【技术美术百人计划】美术 2.7 Metallic与Speculer流程_哔哩哔哩_bilibili
参考知乎链接:https://zhuanlan.zhihu.com/p/53086060【基于物理的渲染(PBR)白皮书】(一) 开篇:PBR核心知识体系总结与概览:https://zhuanlan.zhihu.com/p/53086060
参考知乎链接Artist's PBR Guide/淘宝美工PBR白皮书2——PBR之Albedo:Artist's PBR Guide/淘宝美工PBR白皮书2——PBR之Albedo - 知乎
一.什么是次时代
次世代这个名字源自日语,即下一个时代,未来的时代。常说的次世代科技,即指还未广泛应用的先进技术
“次世代”指代和同类游戏相比下更加先进的游戏,即“下一代游戏”。次世代”是由日语原字“次世代”进入中国而来。看字面上意思就是“下一代”游戏。和传统游戏相比,次世代游戏是把次世代游戏开发技术融入到现代游戏之中,通过增加模型的面和贴图的数据量并使用次世代游戏引擎改善游戏的画面效果,从技术上来说,次世代游戏主要有以下3个关键技术的突破:
1、模型变为高模;
2、PBR流程的采用,真实法线+高光贴图来表现物体在光线照射条件下体现出的质感,增加贴图的大小;
3、新的游戏引擎技术的发展。
简单来说,从玩家的角度讲的话,次世代游戏就是画质更高、特效品质更高、动作和场景更逼真的新一代游戏。
二.什么是PBR模型
基于物理的渲染(Physically Based Rendering , PBR)技术,自迪士尼在SIGGRAPH 2012上提出了著名的“迪士尼原则的BRDF(Disney Principled BRDF)”之后,由于其高度的易用性以及方便的工作流,已经被电影和游戏业界广泛使用。
三.常见工作流程
1.金属Metal/粗糙度Roughness工作流程:比较符合直觉,容易调参,但不易调节F0值(0度菲涅尔反射值)
2.镜面反射Specular/光泽度Glossiness工作流程:错误的贴图会打破能量守恒
3.通用的贴图:Normal、AO、Height
1.Base Color(在软件中标注为sRGB)
储存数据:非导体(电介质)的漫反射色/反照率颜色(Diffuse Reflected Color/Albedo)和金属导体的镜面反射的FO值。
非导体使用4%(0.04)的FO反射值。
混合材质(即非导体和金属导体混合材质)则可以认为同时储存了这两种数据。
Base color存储的信息不应该带有光影信息。
因为PBR的光影信息是通过方程式算出来的,所以我们存储的颜色范围应该有一定的约束。因为现实中几乎无法见到纯白或纯黑(比如1.0和0.0),所以我们最好不要采取这些极端数值。
非导体(即电解质,非金属)︰暗色值,尽量不要低于30-50sRGB,严格控制下应不低于50sRGB。对于亮色值,贴图中不应高于240 sRGB。
导体(金属)的反射值:金属一般会有70-100%的镜面反射,映射到sRGB大概为180-255,如下图所示。不能把漆面当程金属来看。
在Substance Designer软件中,你可以通过PBR BaseColor/Metallic Validate节点来验证是否在合适的范围内。
传统工作流会带有一些光影信息,而PBR工作流中的BaseColor或者Diffuse不带有光影信息。
有一种光影信息是可以存储在PBR工作流的Diffuse当中——就是那些过于微小,在AO图中存储不合适的信息,我们一般称之为micro-occlusion,可以叠加在Base Color中增加细节,或者把它另外存储在capityMap中,但与AO贴图不同的是它不仅会影响到漫反射,也会影响到高光反射。
Base Color的几个要点:
1.贴图中的颜色对于非金属材质来说是它的漫反射颜色,对于金属材质来说则是它的镜面反射的F0值(Reflectance value,所带色相与其反射的波长有关)。
2.Base Color除了微观遮蔽信息(Micro-occlusion)以外,不应该含有任何光照信息。
3.暗色值在宽松条件下不应该低于30sRGB,严格来说不应该低于50sRGB。
4.亮色值不应该高于240sRGB。
5.原始金属的反射值一般都非常高,大概能达到70-100%的镜面反射,映射到sRGB范围大概是180-255。
补充:光学渲染原理方程
2.Metallic金属度贴图:灰度值——Linear
储存数据:对应区域的金属度。作用类似于图层遮罩,告诉着色器应该如何去解读Base Color贴图中的RGB数据。0.0纯黑代表非金属,1.0纯白代表纯金属。
当F0值趋近于1时,就会转换为base color中的漫反射颜色,同时F0值就会固定为4%;当趋近于0时,base color中的颜色就会代表着反射值F0;
当数值位于0和1之间时,就代表这两种状态的混合——比如生锈的金属,锈迹部分可以适当压暗,来表示锈迹的反射颜色,压暗没有数据标准,但记住不要超过之前规定过的合理范围。
Metallic贴图的几个要点:
1.金属被氧化、腐蚀、上漆、覆尘后,这些区域需要被当做非导体(电介质)材质来看待。
2.在Metallic贴图中,纯黑(0.0)代表了非金属,纯白(1.0)代表了金属,我们可以用过渡的灰阶来表示不同程度氧化和污垢。
3.如果Metallic贴图中有值低于235 sRGB,那么在Base Color中对应区域的反射值也应该降低。
3.Roughness粗糙度贴图:灰度贴图-Linear
在粗糙度贴图中,纯黑(0.0)代表了平滑表面,而纯白(1.0)代表了粗糙表面。
PBR概念:粗糙度贴图用于描述造成一个表面不规则度,这种不规则度会造成光的漫反射,光会对随机方向进行反射,在这个现象中光的方向会被改变,但光的总强度却是恒定的。越粗糙的表面拥有越大越暗的高光,反之则拥有越小越亮的高光。粗糙度贴图可以说是一个具有创造力的贴图,因为它允许艺术工作者从视觉上定义一个表面的特性。
Diffuse贴图RGB贴图-sRGB
存储数据:漫反射颜色(Albedo)
由于金属把反射光线都给吸收,它漫反射就会消失,所以纯金属的漫反射为纯黑。和金属度贴图类似,处于金属和非金属非导体中间的区域,可以改变Diffuse贴图中的颜色,让该区域的漫反射带上一些色彩。
回顾一下Diffuse贴图中的要点:(该贴图不储存F0值)
1.Diffuse贴图中的颜色表示的是漫反射颜色,原始金属由于没有漫反射,颜色应该为纯黑(0.0)。
2.Diffuse贴图除了微观遮蔽(Micro-occlusion)外不应该带有其他光照信息。
3.除了表示金属的纯黑(0.0)外,暗色值最多不应该低于30sRGB,严格上说,不应该低于50 sRGB。
4.亮色值不应该亮过240 sRGB。
2.Specular贴图RGB贴图-sRGB
储存数据:FO(0度菲涅尔反射值)
FO值都是基于真实世界测量的,没有需要,尽量不要使用反常规的数值。严谨一些的话,可以查表。别忘了线性空间和sRGB的转换(伽马矫正)。
到目前为止已经出现两个sRGB贴图了(金属度是一个)。另外,可以通过Specular贴图改变所有材质的F0值,但是注意不要使用错误的F0值,比如一个纯白的漫反射,和一个纯白的镜面反射的F0值,加起来算的话,它表示的反射光线就比它原来接受的光线还要多,就打破了我们说的能量守恒。
Specular贴图的几个要点:
1.镜面反射贴图包含F0值。
⒉.普遍非导体的反射值为2-5%,在sRGB中,这个值大概在40-75之间。3.普通宝石的反射值范围在0.05-0.17(线性空间)。
4.普通液体的反射值范围在0.02-0.04(线性空间)。
5.而原始金属的反射值则可以高达70-100%的镜面反射,sRGB约为180-255%
6.如果你无法找到某个材质的折射率(IOR),可以先假设F0为4%,也就是塑料的F0。
3.Glossiness光泽度贴图:灰度贴图-Linear
光泽度贴图适用于描述表面不平整度的贴图,表面不平整会造成光的散射。在这个贴图中,纯黑(0.0)代表的是粗糙表面,而纯白(1.0)代表了平滑表面。这和M/R工作流里的粗糙度贴图是完全相反的,但是在设计侧却有着类似的制图原则。
当贴图分辨率和纹素密度过小时,2种工作流程会在金属和非金属的交界处产生白边/黑边(需要一张良好大小和布局的UV来避免)。
下面我们说说这两种流程的转换,本质上来说,贴图储存的是数据,两种流程储存的数据是部分一致的,我们要做的就是改变这些数据的位置和储存方式。这里我们参考八猴的教程和SD中的转换节点进行讲解。下面我们说说这两种流程的转换,本质上来说,贴图储存的是数据,两种流程储存的数据是部分一致的,我们要做的就是改变这些数据的位置和储存方式。这里我们参考八猴的教程和SD中的转换节点进行讲解。
如果你安装了substance designer,可以查看它内部节点的实现方法(右键,open reference)。这里为了讲解我们选用PS完成,将下图的贴图数据进行转换。
在Specular流程到Metallic流程出现了问题,于是我去SD检查了一下发现basecolor值没有被校准到合理范围
最后附上贴图规范:
来自武功高强的盲僧的笔记:https://blog.csdn.net/qq_36005498/article/details/120356976