Cocos Creator 3.0 的出现,使 Cocos Creator 升级成为全新的 2D/3D 游戏引擎,让 2D 和 3D 游戏的开发更加便捷。目前已更新到 v3.0.1,戳链接了解更新详情。
通常 3D 游戏对画面效果和渲染管线的定制有很高的需求,PBR 美术工作流作为次世代主流的解决方案,今天我们来详细地分析一下基于 Cocos Creator 的 PBR 物理渲染。
01
计算机是如何显示颜色的
在讨论这个问题之前,我们先来分析一下人眼是如何看到世界的。人眼看到物体的颜色,就是看到物体的自发光与反射周围环境光的叠加。
物体自发光,是指物体自己发出来的光线,一般自然界的物体很少会自己发光,都是反射光源(太阳光)的光。
比如黑暗的房间中有一本书(没有光源),我们无法看到这本书,把灯打开后,我们能看到书了,这是因为书本反射灯光到我们的眼睛,成像到视网膜上人眼看到的物体都是反射光源的光,为什么有些物体看上去是红色,有些物体是蓝色呢?
那是因为不同物体表面的材质可以吸收一些光谱,比如某个物体,如果它吸收掉蓝色与绿色,就会反射出红色光。如果它可以吸掉收红色与蓝色,则反射出绿色的光。这些我们称为物体的“本色”(baseColor/Diffuse/albedo)。物体反射光源的光叫做直接反射,反射其他物体表面反射过来的光叫做间接反射,如图:
自然界之所以真实, 是因为由非常复杂的反射叠加而成。
3D 游戏引擎是如何处理颜色成像到摄像机的呢?其实就是模拟真实世界,并做一些取舍:
- 物体自发光的模拟,一般给一个自发光颜色或一个自发光贴图。
- 对物体本色的模拟,就是一个物体本来颜色的贴图(BaseColor 或 Diffuse 或 Albedo)
- 对物体反射的模拟, 只模拟反射光源的光(直接反射),不考虑间接反射。
- 模拟挡住光的反射(瓶子底部反射光,被挡住), 使用环境遮挡贴图 (oclussion)。
计算机显示的颜色就是经过这个过程计算以后得到的颜色值。
02
基于经验模型与 PBR 物理渲染
上述 4 个过程中,只有第 3 条涉及的反