本篇做为理论的归纳介绍,并不涉及公式的部分
基于物理渲染的优势
很容易就能够做出真实和照片级的效果。
同一配置能够适用于
在不一样HDR光照环境下。
接口简单而直观,都是基于世界真实的参数。(如粗糙度,金属度,等等)。
不须要美术去提供经验性的"奇怪"参数和配置。
更容易去解决问题和扩展需求。
基于物理的渲染和传统渲染区别
有着基于物理规则的光照模式
有着无处不在的fresnel效果
能量守恒“
energy conservation
”,物体平面的反射光没法超过它所解接受的入射光
基于物理的材质,会分辨金属和介电质,微平面的概念
线性空间的光照
,支持gamma矫正的,HDR渲染和tonemap
光与物质的交互(light and matter)
光是是一种横向传播的电磁波,电磁波的波长范围很是广,但只有390~760nm之间的一段波谱是人眼可见到的,也就是在图形学里对渲染着色起做用的部分。另外由于光有波粒二象性的缘故,有时候咱们在图形学里也会把光作为光子
(photon)
来处理。
当光投射到传感器(眼睛,照相机等)
上时
,颜色和亮度就会被吸取并感知,而光与物质交互后被感知的,就是物体的颜色。
物质对光的影响,能够用折射率(refractive index
)来描述,当由复数来表示折射率时,它的实部影响速度(相对于真空中的速度
),虚部来影响光的衰减(被吸取),折射率会改变光的波长。
咱们先根据物质按照内部折射率是否均匀来进行分类:
均匀介质(Homogeneous Media)
内部密度相同的物质
,意味着他有惟一的折射率,对应透明的均匀物质来说(如水,玻璃),光经过时,并不会改版光的颜色或强度,而当物质对某一种可见光谱有吸取率的时候,那么,光就会随着在物质内的传播距离而逐渐被吸取,而光的方向并不发生改变,这就是光被吸取(absorption
)。
光穿透玻璃和水时,方向,颜色和强度都不会发生
方向没有变化,光但随着距离会丧失强度(改版颜色),也就是光被吸取了。
非均匀物质(heterogeneous medium)
当
非均匀物质
内部的折射率很是忽然的时候,这时就会发生散射
(Scattering)
现象,光会被分割为多个方向,但光的总量并不会发生变化。
除了以上两种交互外,
物质还可能由于其余能量发出新的光,称为自发光”
emission
“。
光与物质交互的三种方式,吸取,散射,发光。
光与平面的交互(light and object surface)
上一个段落讲点,光在密度不一样的物质内传递的现象,而渲染中最为典型的,是发生在物体表面时,关于光与空气和物质之间的散射效果。
这个时候平面散射光会分为两部分:进入平面的部分(折射,在物体内部传播中被吸取或散射),从平面出去的部分(反射)。
一个假设完美无限光学平坦的平面(简称光学平面)反射效果,平面两侧的空气和物体有各自的折射率
但实际上,平面大多都不是光学平面(除了镜子或镜头等),而是一种微几何体(
Microgeometry
),表面都会有一些比可见光波长要大的不规则凹凸,但又小到没法覆盖一个像素或者采样点,因此,咱们就把这种非光学平面,理解为一组微小光学平面的集合,而可见光的反射,其实是在平面各个点上轻微不一样方向的反射集合,也就是后面会提到的微平面理论(Microsurface Theory
)。
roughness
上面的平面相对平滑时,表面方向的变化也比较轻微,从而反射光的方向变化也较小,有了较清晰的反射。而下面的表面粗糙,表面方向的变化范围也较普遍,反射光的方向变化也比较大,出现了模糊的反射。
两个平面在微观上的粗糙度(roughness)不一样致使不一样的反射效果
漫反射光与镜面光(diffuse and specular)
这里,咱们光和平面交互分为两个项目来描述,从平面直接反射
的部分称为镜面反射光(
Specular
),来源于拉丁语的“Mirror”,PS:镜面光的颜色,一般就是灯光的颜色,只有照射在金属上才会改变颜色(实际是金属吸取了特定波长的光),传入到物体内部,而通过折射,被材质吸取(转变为热能),或者内部进行散射,一些散射光最终会从新返回从平面折射出来
,并被摄像机或眼睛所捕捉到,称为漫反射光(Diffuse)。漫反射光被物质吸取并散射后,会成为不一样波长的光,这也就给予了物体颜色,好比物体吸取了蓝色之外的光,那物体就是蓝色的,而由于散射的混乱比较均匀,从每一个方向看起来都是同样,因此这点和镜面光不同。也可使用这个名字albedo来描述。
非光学平面反射
(
Surface Reflectance
)
和折射散射
(
Subsurface
Reflectance
)
的宏观视图,造成了Diffuse和Specular。
金属和非金属材质
物体内部的折射光的做用,取决于物体内部的组成,内部组成的不一样,能够分为,金属(metal)导体,电介质(Dielectrics)绝缘体和半导体(Semiconductors ),由于半导体在渲染中出现的机会很少,在处理物体时简单的分组为金属和非金属就能够了。金属会吸取全部的折射光,并且一般会被绝缘体的反射率要高,一般的反射率要达到60%~90%,而绝缘体则是0%~20%,反射率高,就防止了入射光被吸或折射,这样,金属就有了”闪亮“的外观。php
金属的折射光能量都马上被自由电子吸取
而非金属(绝缘体),光会在内部进行吸取和散射活动,最后,一些折射光会经过散射,从新从入射平面反方向射出
非金属的折射光会进行散射
导体的反射会跨越光谱,因此反射是有颜色的,虽然颜色反射在导体里比较罕见的,但在一些平常的材质里(金,铜,黄铜)仍是能够看到这种效果,而绝缘体的反射一般是他们的原本颜色,由于金属会吸取全部的穿透光,也就没有任何漫反射(diffuse)部分,但金属氧化的部分和一些表面残留物仍是会散射少许的光。也是由于这些缘由,可使用“metalness”(金属度)这种参数,虽然不是纯粹的pbr,但更受美术的喜欢。
不一样材质的漫反射颜色,金属为0.
次级表面散射(Subsurface Scattering)
从前面的图中,能够看到折射后的散射光从平面不一样的点发射出来,和原始的入射点的距离也各不相同,能够统称为次级表面散射光,根据散射出的距离和入射点像素的大小的关系,能够分为两种状况:
如左图所示,当像素的尺寸大于入射到出射点的距离时,这个距离就能够被忽略,能够认为这个平面散射出的光和入射光是在相同点上,也就是右图的样子,也就是咱们常说的漫反射。
当像素小于出射到入射距离时,每一个点的着色就会收到其余光入射到其余点的影响,也就是常说的“次级表面散射”技术,很重要的一点是,它和普通的漫反射着色是一种物理现象(都是折射光的次级表面散射),惟一不一样的就是散射的距离与观察点大小的关系,一个一般被认为是“次级表面散射”的表现,当在较远的距离观察时,就能够被认为是漫反射着色(例如远距离角色的皮肤),而“正规的漫反射着色”在很近距离观察时,也会有次级表面散射的效果。
无处不在的Fresnel反射
Fresnel表现的是材质的反射率
和入射角(也就是光源入射向量和平面法线向量的夹角
)的对应关系,也就是说,入射光的角度越大,反射率也会越强,Fresnel反射项一般成为F( )
以水面为例,正常入射事只有3%的反射,而水平时则几乎到100%。
PBR的一个改变,就是对
fresnel方程的修正上。这个会在下一篇有公式的章节作进一步解释
对于因此的材质来讲,当以掠射角观察时,光滑物体接近“边缘”的地方,会造成完美的镜面,也就是说
特定的角度上,
“任何表面光滑的物质均可以成为完美镜面”。
除了金属外,大部分的材质的反射和角度对应曲线或梯度的变化都不是很大
非金属的反射系数,在边缘处亮度更高
当入射角度为0时,非金属材质(2%~8%),水和液体是2%,砖块8%,其余有机材质和塑料是5%,半导体和晶体是15%~50% 金属60%~90%
若是要达到真实的
fresnel,那么美术对
fresnel的控制应该越少越好,须要提供一些参数值来使用,一般是光泽度(Gloss,或粗糙度 Roughness)和反射率。提供一个基础反射率,来设置平面最小的反射值,让
fresnel曲线从这个最小反射值开始,以知足不一样角度的需求。
Surface Reflectance
前文已经提到了微几何体,之因此有微平面的概念,由于从宏观来看,在咱们渲染模型网格时,使用法线贴图就能够描述表面小的细节,但这样仍然会有必定的缺失,不少真实世界的平面上,仍是有一些微小的凹陷,裂缝或突起,而用肉眼是很难看清楚的,小到连正常大小的法线贴图也没法来表现,虽然肉眼没法看到,但这些微观特征,仍是对Diffuse和Specular产生了影响。
微平面的细节,对反射的影响更多,也就是Specular,由于粗糙的微平面会把反射光分散或者内部遮挡,因此有了下面两个项目来描述这个现象
Normal Distribution Function
由于微几何体的因此平面的方向,并非均匀分布的,若是是分布比较均匀的光滑平面,那么光就会在几乎相同的方向反射,产生清晰的高光,若是粗糙表面则是模糊的高光.
有多少微平面点的法线更倾向宏观平面的法线方向,咱们把这种平面法线方向分布的统计,称之为microgeometry normal distribution function
D()
,和fresenl方程不一样的是,D()并无一个相似0~1的范围,而是来帮助肯定微平面法线在某一个给定方向上的集中度。
因此,D()决定了高光的镜面反射高光的大小,亮度和形状,一些D()会提供前面提到的相似"Roughness
(粗糙度)
"的参数(也能够是
glossiness
),当粗糙度下降时,微几何体平面的法线方向就会更集中在宏观的平面法线方向上,
D()
的值也会变高。除了指定粗糙度参数外,也能够经过传递一张
Glossn map的方式提供更高的细节。
不一样
Roughness的表现
左侧Specular Map ,右侧 gloss map
Geometry Function
由于微几何体的构造缘故,一些入射光的平面点被内部遮挡,成为了内部阴影而没法接受光照(也就不能反射光)。
shadowing现象
而有一些反射光被内部遮挡,他们的反射光没法被观察到,虽然有反射光能够屡次反弹后再被视点观察到,但在微平面理论里能够忽略不计了。
masking现象
这由于有这种现象,因此须要有一个
Geometry Function
G(),
来表明反射光的
可见度,
因此G()是在0~1之间的一个范围值,在着色模型里,有时会和其余参数合并称为
V()
(Visiblity)。和D()同样,由于微平面有凹凸感,当它的粗糙度提升时,shadow和masking的现象也会增长,粗糙度高的平面会光滑平面更阴暗一些,
G()
也要收到roughness参数的影响
。
另外G()也是下面要讲的能量守恒的一个基础,它使得反射光不会高于平面的入射光。
Energy Conservation 能量守恒
镜面反射光(Specular)与漫反射光(Diffuse)是相互排斥的,由于离开表面的光总量不能他接受的入射光强,你的漫反射与镜面反射综合不能超过1

这意味着,若是你的但愿材质有较高的镜面反射效果(高反射率),就须要要去下降漫反射,能量守恒是PBR的一个重要的方法,可让艺术家在设置反射率和反照率时(高光颜色和漫反射颜色)不会违法物理定律
同一个材质,从100%的漫反射到100%的镜面反射转化过程
能量守恒对高光部分的处理,也称为“Energy Preserving Specular”,一般是在渲染方程里添加Normalization Factor来实现的能力守恒
是否使用
Normalization Factor的对比,左下面使用Factor的亮度更淡了一些,由于左上非能力守恒的模型反射了更多的光,而下面能力守恒的模型,高光变得更加明亮和集中。
当把微平面理论引入到着色系统后,那么反射多少光,就要受到平面粗糙度的影响,渲染粗糙度较大的表面时,会得到较大范围和模糊的反射光,而光滑表面的则更清晰。虽然材质都反射相同总量的光,但粗糙平面的会把把反射分散到不一样的方向,而光滑平面则反射的更为集中。好比你高光半径提升了10倍,那么暗度将提升100倍。

、
Gloss的变化的反射效果,
Normal Distribution Function(D())
也必须是能量守恒所的。
实际应用上漫反射较多并且粗糙的材质,会反射模糊和更广阔的高光,比较光滑而反射率高的材质则反射更明亮和紧凑的高光
理论概述就先到这里,本文也是从不少资料中整理而来,不能算是原创吧,资料太多,可能收集和描述的不够全面,随着后面章节的添加,这个部分应该还会作进一步的修改。