对Physically Based Rendering PBR原理的理解

PBR全称(Physicallly-Based Rendering)。简单的就字面含义可以看出,这是一种基于物理规律模拟的一种渲染技术。

最早用于电影的照片级真实的渲染。近几年由于硬件性能的不断提高,已经大量运用于PC游戏与主机游戏的实时渲染。几款著名的3D引擎均有了各自的实现(UnrealEngine 4, CryEngine 3, Unity 3D 5)。

在PBR理论出现之前,限于软硬件的发展程度和发展水平,所有的3D渲染引擎,更多的着重在于实现3D效果。当时这种3D效果,模拟出来的虚拟模型,有了空间感和立体感,但是往往给人不真实的感觉,就是会觉得特别的假。为了增强模型的真实感,PBR理论就是一套用来让模拟出来的模型,更真实的渲染技术。这种渲染技术,是基于真实的物理世界的,考虑了真实物理世界的成像规律在内。

在理解PBR之前,首先看一下视觉成像的理论是什么

平时所谓的人眼看到了物体,并不是说,该物体发了光,照射到人眼睛内成像。除了光源物体,比如各式各样的灯,萤火虫,太阳这种本身可以发光的物体,物体本身是不发光的,都是反射或者折射真实空间中的光线,这些反射或折射后的光线,射入人的眼睛内,经过眼睛的结构处理后,在视网膜上成像,这个时候,这个物体就被人眼看到了。

第二点,我们了解一下一些简单的光学理论。

反射


对Physically Based Rendering PBR原理的理解_第1张图片
图-01 光的反射

一束光在经过光滑的镜面的时候,会发生反射,这个时候,

反射角的大小等于入射角;

光滑镜面90度方向为镜面法线;

入射光线与反射光线分布在法线两侧;

这是一种完美情况下的反射,是一个纯理论模型。

在我们真实的现实生活中,光线是怎么样的规律呢?


对Physically Based Rendering PBR原理的理解_第2张图片
图-02 镜面反射和漫反射


对Physically Based Rendering PBR原理的理解_第3张图片
图-03 微观平面

1.真实生活中不存在完美的镜面。

将某件物体的表面放大到一定的倍数去观察,物体表现总是不光滑的,如03所示。物体表面在这个时候会变成由很多更微小的平面组成的不规则面

2.真实生活中,物体本身的原子会与光线内的光子发生作用,会吸收一部分光子

对Physically Based Rendering PBR原理的理解_第4张图片
对Physically Based Rendering PBR原理的理解_第5张图片

如图02所示。一束入射光线,照射到物体表现,物体的反射不会严格按照反射定律执行。我们先弱化物体表面(surface)不平整对光的影响:

一部分光会在照射到物体表面时直接被反射出去,这种反射叫镜面反射(specular),因为表面的不光滑,出射光线会呈一个角度范围内反射出来;

一部分光线经过物体表面时,有一部分光线进入物体内部,经过多次反射后再从物体表面反射出来,这个过程叫漫反射(diffuse)。

还有一部分光线,照射到物体表现后,进入物体内部,经过多次反射以后,没有从表面反射出来,而是被物体本身的原子,吸收掉了。

下面我们来将上述的理论结合pbr来理解:

一束入射光线,反射时,一部分发生镜面反射specular,一部分发生漫反射diffuse,一部分被吸收。

根据能量守恒定律,一般来讲吸收的部分往往被转化成热能。这点导致反射光线的强度用于是略小于入射光线的强度的。


对Physically Based Rendering PBR原理的理解_第6张图片
surface(虚线)上面黄色的是镜面反射,反射后出现一个分散的夹角;虚线下侧绿色的是漫反射,光线方向不固定

反射时,发生镜面反射和漫反射的光线的占比,对应金属度Metallic参数。

Metallic度越大,发生镜面反射的占比越大,漫反射diffuse占比越小,一般金属物体的金属度比较大;70%-100%之间;

Metallic越小,发生镜面反射的占比越小,漫反射diffuse占比越大,一般非金属物质金属度比较小;2%-5%之间,宝石的大概8%;


对Physically Based Rendering PBR原理的理解_第7张图片
微观上物体粗糙度对镜面反射光线的影响


对Physically Based Rendering PBR原理的理解_第8张图片
宏观上物体粗糙度对镜面反射的影响

反射时,发生镜面反射的光线,在反射后,光线的夹角大小,取决于物体表面的不规则程度,对应粗糙度roughness(或者光滑度smoothness)参数;

粗糙度roughness越大,镜面反射的出射光线,分散的角度就越大;

粗糙度roughness越小,镜面反射的出射光线分散的角度就越小;

对Physically Based Rendering PBR原理的理解_第9张图片
自然光照射到物体表面,经过吸收后,漫反射出来的光进入人眼,决定了人看到物体是什么颜色

自然光照射到物体上,一部分被物体吸收掉,一部分发生漫反射,漫反射的光进入到人眼之后,人看到物体具有某一种颜色,这个颜色对应baseColor;

所以在pbr中,决定一个平面的光影效果的最核心的属性就是Metallic、roughness、baseColor;


对Physically Based Rendering PBR原理的理解_第10张图片
metallic对表面的影响
对Physically Based Rendering PBR原理的理解_第11张图片
roughness对物体表面的影响
对Physically Based Rendering PBR原理的理解_第12张图片
roughness对物体表面的影响

PBR的两种工作流程


PBR两种工作流程

在PBR内,规范了设计流程 ,使得贴图的设计不再仅仅依靠经验依靠直觉,可以按照固定的工作流程实现真实的贴图效果。

Metal-Roughness流程/Specular-Glossiness流程

通过上面的介绍,我们可以只知道,在真实的生活中,视觉效果的呈现,主要取决于

1.自然光照下,物体呈现的颜色;

2.物体表面对光线的镜面反射角度;

3.物体表面对光线镜面反射和漫反射的比例;

在Metal-Rougnness流程中,分别对应BaseColor,Roughness,Metallic这三个参数;

在Metal-Roughness流程中,只要按照流程,分别设置好BaseColor,Roughness,Metallic,就可以基本确定物体材质的视觉效果;

在Specular-Glossiness流程中,参数发生了变化,分别为Diffuse,Glossiness,Specular三个参数;

在Specular-Glossiness流程中,Diffuse和Specular共同决定了物体的basecolor,和表面镜面反射和漫反射的比例,与第一种流程的区别在于,此流程直接指定确定的占比值,第一种是根据Metallic属性,自动匹配相应的占比值;

最右侧三张贴图 AO,normal,height都是为了增加材质贴图的细节,使得其看起来更真实。

AO贴图会根据模型某一部分相对于其他组成部分或者其他模型之间的几何距离,模拟模型的光影效果,比如一些夹角会更暗或者更亮,某一些面因为其他模型部分的影响,可能光照更少。

normal贴图会根据光照环境,优化模型表面的光影效果,比如一些凸起凹陷等细节;

height贴图会给模型本身根据实际需要增加凸起或者凹陷的几何效果。比如木质模型,某处被敲打而导致的凹陷效果。

在PBR流程中,环境光线效果需要使用linear模式,原来的gamma模式不再适用。因为gamma模式本身是为了使其他技术渲染出来的模型具有更真实而效果,对环境光进行了修正。但是在pbr中,贴图在设计的时候,完全是按照真实的环境中的光照去计算的,所以此处不再需要修正。

你可能感兴趣的:(对Physically Based Rendering PBR原理的理解)