Physically Based Rendering:基于物理的渲染
PBR:是一套框架,通过PBR保证整体的色调以及画面的统一
什么是基于物理渲染?
对现实世界中的一种近似,而不是真实的物理渲染
(1)基于物理的材质(Material)
(2)基于物理的光照(Lighting)
(3)基干物理适配的摄像机(Camera)
(4)美术的pbr全流程
(1)基于微平面(Microfacet)的表面模型
(2)能量守怛
(3)应用基于物理的BRDF
概念:将物体表面建模成做无数微观尺度上有随机朝向的理想镜面反射的小平面(micoracet)的理论
作用:描述粗糙表面和光滑表面的区别
概念:出射光线的能量永远不能大于入射光线的能量(光线照射到表面上的时候部分光线,会被射出去或者透射出去,还有部分光线,会在物体内部消耗了转换为其他的能量)
能量守恒的实现:
使用反射率方程
公式:
3.概念:
入射光的衰减:半角向量和法线的点积
入射光的强度*反射比例*入射光的衰减=反射光的强度
自发光强度+反射光的强度=最终出射光的强度
其中:
<1>入射光的强度是一个已知的值
<2>入射光的衰减和入射光与平面的角度有影响
<3>反射比例使用BRDF来求
(1)BRDF包含两个部分:
光线打到平面上形成的散射和高光反射
散射:从各个角度看过去,光的强度都是差不多的
高光反射:只有特定的角度才能看到明显光斑
(2)BTDF(Transmitted Scatter Distribution)双向透射
也包含散射和高光反射
(3)BSDF 双向散射分布函数
BRDF+BTDF=BSDF
双向:相机方向和光源方向或调换之后他们的等级力量是一致的
根据微平面理论和能量守恒理论可以理解为:
在光线强度一定的情况下,越粗糙的表面,反射的区域越大,相应的亮度也会降低(但是总的反射的能量都是比较均衡的,是一个此消彼长的一个过程)
根据入射光的方向:(点到光源的方向) 和 出射光的方向:(点到摄像机的方向)来技术反射比例
(1)把反射分为漫反射和高光反射
扩散(漫反射):
采用兰伯特光照模型:光源方向与平面的角度越垂直他的强度会越大,与平面越平行越小它的强度就会越小
1.kd漫反射系数(跟高光反射系数相加为一)
2.光照强度:除了受角度影响还受光源方向到平面的距离的影响-距离的平方成一个反比的关系,距离越大光的强度就会越小
3.n-法线,l-光源方向
法线点乘光源方向,计算光源是否是垂直于这个平面的,垂直的的时候,点乘结果为一,那它就是一个最大的,如果越平行,他就越趋近于零,就会有一个衰减过程,如果法线方向和光源方向相反,点乘结果为负数,就没有意义(最小取零)
一.Phong模型
视角方向越贴近于反射方向时,得到的高光就强度就会越大
二.Blinn-Phong
Blinn-Phong是半角向量与法线方向的计算
半角向量:视角方向和光源方向的对角线
如果视角方向与反射方向一致,那么半角向量和法线方向一致
(1)法线是反射和入射光的对角线
(2)半角向量是视角方向与光源方向的对角线
总结:
(1)半角向量越接近于法线向量时就说这个夹角越小那么得到的光强就会越大
(2)Blinn-Phong法线对反射比例(光衰减)的影响
(2)Blinn -Phong模型是对一个Phong模型的近似
(3)Blinn-phong模型相对Phong模型更省一点
Blinn-Phong和Phong都是经验光照模型
反射率方程:
(1)反射率方程的自发光去掉,只看反射部分,其他部分都是不变的(一个入射光强度,角度的衰减,变的部分就是反射率)
蓝色部分是BRDF的核心算法, BRDF前面部分是漫反射,我们采用是兰伯特光照模型对他进行一个计算
前面部分kd用的Lambert.
(1)kd:漫反射比例
(2)c:纹理颜色
(3):圆周率
(4)ks:镜面反射比例(kd+ks=1)
(5)wo:视角方向
(6)n:法线方向
(7)wi:光源方向
(8)DGF:高光反射部分,其中DGF分别是三个函数,n表示粗糙度
D:法线分布函数(Normal Distribution Function ,NDF)
G:几何(遮蔽)函数
F:菲涅尔方程
概念:描述微面元法线分布的概率,即正确朝向的法线的浓度。即具有正确朝向,能够将来自l的光反射到v的表面点的相对于表面面积的浓度。
a:粗糙度
h:半角向量
n:法线向量
GGX和Blinn-Phong的对照
GGX的法线分布函数,在末尾会更延长一些
顶端是比较尖锐的而在末端是更绵长的而实验数据也证实了GGX是跟接近于物理现状的
概念:描述微平面自成阴影的属性
我们是使用微平面理论,也就是说每个面单独计算互不干扰,而不会让两个面之间会存在相互遮蔽的关系但这种遮蔽关系是在线中确实存在的
图中一束光线照射过来,在该图片上进行了反射,而由于前面的平面对他进行遮挡以至于光线无法到达人眼
几何函数从统计学上近似的求得了微平面间相互遮蔽的比率.这种相互遮蔽会损耗光线的能量。(除了被吸收,还有被自身遮蔽带来的能量损耗)
v(G1):任意方向
n(G):法线方向
L:光线方向
V:视角方向
h:半角方向
公式理解:入射光方向以及视角方向产生了一种衰减,衰减的算法:方向与法线方向的点乘,还要平滑度对他的影响
总结:一个比较粗糙的物体,相互遮蔽对光线进行损耗的也就越高
使用史密斯法与Schlick- GGX作为Gsub可以得到如下所示不同粗糙度的视觉效果
0:没有微平面阴影1:微平面彻底被遮蔽
总结:在光线在几何遮蔽函数开启的时候,光线方向与视角方向比较平行的面也就说角度比较小的面它是相较于之前是暗了
概念:描述不同的表面角下所反射的光线所占的比率。(物体的边缘,会更加亮)
也就是说垂直看过去的时候,他的光强会比你看他,边缘的掠射角的时候会暗很多
F0:平面基础反射率(大多数常见电介质的FO范围为0.02-0.05(线性值)。对于导体,FO范围为0.5-1.0)
h:半角向量
v:视角方向
<1>.1-(h*v):兰伯特算法中有类似的操作不过菲涅尔中,用来一减取了一个相反值,之前是边缘暗中间亮,现在菲涅尔算法中是中间暗边缘亮
<2>.F0(平面基础反射率):一个视点一个面你垂直看下去,他依然还会有一点的反射而不是百分百就成零的,从式子中可以看到,如果他的从垂直看上去得出结果是一,一减去一得零,乘以多少让他的反射都为零,但实际生活中我们知道他垂直看上去也是有一定反射的所以说这里要对他加一个F0
最终实现的效果大概,会如图像所示,在边缘,它会很亮,而在中间部分,它会相较会暗很多反射率会低一些
有菲涅尔反射和没有菲涅尔反射的区别:
是如何形成这种现象的,从下面的图中可以看出:
蓝色区域与平面的角度α,比红色线这一条它的b角度是要小一些的,也就是说同样的一个视角位置,
看上去另一个地方视角角度越小,与平面夹角越小,那他们反射的比例,也就越高,也就看得越清晰,红色这边因为角度比较大,看的话就会越模糊。
(4)分母4(n·l)(nv)︰校正因子(correctionfactor)
概念:作为微观几何的局部空间和整个宏观表面的局部空间之间变换的微平面量的校正。
0.艺术导向(Art Directable ) ,并不一定物理正确( Physically Correct )
1.立使用直观的参数,而不是物理类的晦涩参数
2参数应尽可能少
3.参数在其合理范围内应该为0到1
4.允许参数在有意义时超出正常的合理范围
5.听有参数组合应尽可能健壮和合理
Disney Principled BRDF参数
迪士尼动画工作室用了11个参数即可非常真实地模拟出金属、非金属以及不同粗糙度的材质光照结果:
baseColor(基础色)︰表面颜色,通常由纹理贴图提供。
subsurface(次表面)︰使用次表面近似控制漫反射形状。
metallic(金属度)︰金属(0=电介质,1=金属)。这是两种不同模型之间的线性混合。金属模型没有漫反射成分,并且还具有等于基础色的着色入射镜面反射。
specular(镜面反射强度)︰入射镜面反射量。用于取代折射率。
specularTint(镜面反射颜色)∶对美术控制的让步,用于对基础色(base color)的入射镜面反射进行颜色控制。掠射镜面反射仍然是非彩色的。
roughness(粗糙度)︰表面粗糙度,控制漫反射和镜面反射。
anisotropic(各向异性强度)︰各向异性程度。用于控制镜面反射高光的纵横比。(0=各向同性,1=最大各向异性)
sheen(光泽度)︰一种额外的掠射分量(grazing component),主要用于布料。
sheenTint(光泽颜色)︰对sheen(光泽度)的颜色控制。
clearcoat(清漆强度)︰有特殊用途的第二个镜面波瓣(specular lobe)。
clearcoatGloss(清漆光泽度)︰控制透明涂层光泽度,0=“缎面(satin)”外观,1= “光泽(gloss)”外观。
参考文献
技术美术101PBR部分
毛星云老师的白皮书
基于迪士尼原则的Filament