PBR(Physicallly-Based-Rendering), 基于物理的渲染,Unity自带的Standard就是一个完整的PBR,实际中需要对官方的性能调优。
为什么叫基于物理的,因为目标是基于与现实世界的物理原理基本相符的理论构成渲染技术。
这样美术就可以直接以物理参数为依据来编写材质,不论光照如何材质看上去都是正确的。它通过考虑材质的物理特性(例如反射率、粗糙度和透明度)来创建更真实、更可信的图形。
PBR光照模型的三个条件:
- 基于微平面的表面模型;
- 能量守恒;
- 应用基于物理的BRDF。
PBR基于微平面理论,即达到微观尺度后任何平面都可以用被称为微平面的细小镜面来描绘。平面越粗糙,微平面的排列越混乱,镜面反射时就会向完全不同的方向发散开来。
我们可以用统计学的方法估算粗糙程度,而粗糙程度表示微平面上平均取向和半程向量(下段介绍半程向量)的方向一致的概率。
Blinn-Phong模型不依赖于反射向量,而是采用了所谓的半程向量,即光线与视线夹角一半方向上的一个单位向量。当半程向量与法线向量越接近时,镜面光分量就越大。当视线正好与(现在不需要的)反射向量对齐时,半程向量就会与法线完美契合。
所以当观察者视线越接近于原本反射光线的方向时,镜面高光就会越强。
半程向量:H =(L + V) / || L + V ||
所以,粗糙度越大,微平面上平均取向和半程向量(下段介绍半程向量)的方向一致的概率越小,那反射的轮廓就会越大。
PBR有两个工作流程:金属(Metallic)/粗糙度(Roughness)和镜面(Specular)/光泽度(Glossiness)。目前用的比较多的工作流程是Metallic/Roughness。
自从Unity 5.X完全转战PBR体系后,它在PC/主机上渲染效果得到了飞跃式提升。因此,已经一些3A级游戏工作室,开始尝试用Unity做PC/主机游戏,这在以前是根本不可能的。
实际上,Unity、Unreal都使用了完全相同的物理渲染原理,如今拥有非常接近的渲染效果。
不同在于:
Unreal 4的灯光需要bake。所谓bake,就是用一个影视级渲染器,把光照效果,保存到贴图和数据结构里,游戏里就不用重新计算了。代价就是,要反复等待bake,场景大一点,bake会很花时间。
Unreal 5开始,提供了2个新功能:
实时全局光技术。
模型和材质自动压缩系统。这个系统自动压缩你提供的原生模型和材质,这样,可以把影视级别的模型、8K材质,直接拖入引擎,而不用关心压缩的事情。一个10亿面数的场景,大约会被压缩成2千万面,压缩率98%。然后,它只绘制会在屏幕范围内显示的面,所以庞大的高清场景,也能实时游玩。这个功能,Nvidia 早在1.5年之前,就已经演示过,Nvidia称之为“Mesh Shading”。
需要注意的是,Unreal 5的2个新功能,改善的是开发效率,并不能改善常规物体的渲染质量。比如人物,渲染质量将和Unreal 4一致。
Unity 2019年起采用混合模式,直接光是实时的,不采用bake,间接光采用bake。Unreal 4的全bake模式,会导致开发者反复等待bake;而Unreal 5的全实时模式,则对配置要求较高,发热居高不下。
本文转自:字符无限科技Bot,转载此文目的在于传递更多信息,版权归原作者所有。如不支持转载,请联系小编demi@eetrend.com删除。