【PBR系列三】BRDF方程及渲染方程

本文核心知识主要参照《现代计算机图形学入门-闫令琪课程课件PPT》,后续光线追踪系列知识也源于此处。

一、BRDF方程

通过上一部分所有辐射度量学各种概念的定义之后,我们可以从这样一个角度理解光线的反射,如下图所示:

【PBR系列三】BRDF方程及渲染方程_第1张图片

一个点(微分面积元)在接受到一定方向上的亮度 dE(wi) 之后,再向不同方向把能量辐射出去 dLr(wr)

从直观的理解来说,不同物体表面材质自然会把一定方向上的入射亮度( dE(wi) )反射到不同的方向的光线上( dLr(wr)),如理想光滑表面会把入射光线完全反射到镜面反射方向,其它方向则完全没有。如理想粗糙表面会把入射光线均匀的反射到所有方向。因此所谓 BRDF 就是描述这样一个从不同方向入射之后,反射光线分布情况的函数,定义如下:

【PBR系列三】BRDF方程及渲染方程_第2张图片
上图中下方的式子即为BRDF,它接收两个参数,入射光方向[公式],反射光方向[公式],函数值为反射光的radiance与入射光的iiradiance的比值。(从某个方向接受到的光能有多少反射到另外一个方向)

借助BRDF,可以定义出反射方程如下:

【PBR系列三】BRDF方程及渲染方程_第3张图片
即摄像机所接受到的 wr 方向上的反射光,是由所有不同方向上入射光线的irradiance贡献得到的(即图中式子的[公式]),而不同方向入射光线的irradiance对反射方向[公式]的贡献程度则由物体表面材质决定,所以乘上了一个BRDF函数。

到这里,通过辐射度量学,以及BRDF最终得到的反射方程正是一个完全正确的光线传播模型了,解决了在第一章提到的现有模型的所有缺点!(渲染方程只是在反射方程的基础之上加了一个自发光项,关于渲染方程会在下一章仔细去了解)。

在进入到渲染方程之前,再仔细观察一下反射方程:

【PBR系列三】BRDF方程及渲染方程_第4张图片
不难发现正如上图中所说的,入射光线的radiance不仅仅是光源所引起的,还有可能是其他物体上着色点的反射光线的radiance,恰好反射到当前的着色点p(即间接光照),同时其他物体上的反射光线的radiance依然也是由直接光照和间接光照构成,因此这与whitted-style当中的光线追踪过程十分类似,也是一个递归的过程。所以说想要解这样一个方程还是比较难的。

接下来,我们会引入渲染方程,并对渲染方程做一些直观上的物理解释,对于反射方程或者说是渲染方程的具体求解,留在之后系列的光线追踪去实现。

二、渲染方程及其物理含义解释

【PBR系列三】BRDF方程及渲染方程_第5张图片

正如在上一节中提到的,渲染方程知识在反射方程的基础之上添加了一个自发光项(Emission term),从而使得反射方程更加的general:
在这里插入图片描述
其中 Le(p,wo) 为自发光项,反射方程中的 cosQn*wi 代替。 (tips:所有光线方向均指向外)

接下来从一个点光源和单个物体的场景开始理解渲染方程:

【PBR系列三】BRDF方程及渲染方程_第6张图片
(点光源对一个点来说自然只有一个方向有入射光,所以这里没有了积分)

多个点光源一个物体的情况:

【PBR系列三】BRDF方程及渲染方程_第7张图片
将这些所有的点光源的贡献全部求和即可,那么如果点光源变成了面光源呢?如下图所示:

【PBR系列三】BRDF方程及渲染方程_第8张图片
其实面光源就相当于无穷多个点光源的集合,只需要对 面光源所在的立体角范围进行积分,并且能够确定不同立体角方向的面光源的入射光radiance即可。

那么更进一步的,再在场景当中加入其它物体,使得物体之间发生光线交互之后是什么情况呢:

【PBR系列三】BRDF方程及渲染方程_第9张图片
如上图所示,可以把其它物体同样考虑成面光源,对其所占立体角进行积分即可,只不过对其它物体的立体角积分不像是面光源所有入射方向都有radiance,物体的立体角可能只有个别几个方向有入射的radiance(即多次物体间光线反射之后恰好照射到着色点x),其它方向没有,但本质上都可以视作是面光源。

观察一下图中的渲染方程可以发现除了两个radiance,其它所有项都是知道的,可以将上式进一步写成如下图下方所示的式子:

【PBR系列三】BRDF方程及渲染方程_第10张图片
其中各项与原渲染方程中一一对应,(这里其实是有数学严格推导的,不过我们只是为了接下来构建直观的物理解释,对于这些推导不必在意,默认成立即可),再接着,可以把该式子离散化写为线性代数的形式:

【PBR系列三】BRDF方程及渲染方程_第11张图片
其中L其实就是想要求得的反射光,E是自发光其实就是光源的发光项,K可以理解为对光线进行反射的一种算子操作(因为它由BRDF化来的)。那么利用线性代数的知识很容易就可以推导出L的结果如下:

【PBR系列三】BRDF方程及渲染方程_第12张图片

仔细观察这个式子,注意E是光源所发出的光,K为反射算子,这样一个式子的物理含义如下图所示:

【PBR系列三】BRDF方程及渲染方程_第13张图片

E 为光源发出的光,KE 则代表对光源反射一次的结果,即直接光照,那么前两项之和就是光栅化当中着色所考虑的结果,对于全局光照来说,还考虑了 K2E,即一次弹射的间接照明, K3E 就是两次弹射的间接照明,依次类推,如果所有的间接光照都考虑进去也就是我们常说的全局光照。

这样来看整个结果是不是就很清晰了,就是光源发光加上直接光照与多次间接光照的结果!而这一切都是从渲染方程推导而来的,因此这也正是渲染方程的物理意义!

三、BxDF系列

BxDF一般而言是对BRDF、BTDF、BSDF、BSSRDF等几种双向分布函数的一个统一的表示。

其中,BSDF可以看做BRDF和BTDF更一般的形式,而且BSDF = BRDF + BTDF。

而BSSRDF和BRDF的不同之处在于,BSSRDF可以指定不同的光线入射位置和出射位置。

在上述这些BxDF中,BRDF最为简单,也最为常用。因为游戏和电影中的大多数物体都是不透明的,用BRDF就完全足够。而BSDF、BTDF、BSSRDF往往更多用于半透明材质和次表面散射材质。

【PBR系列三】BRDF方程及渲染方程_第14张图片
图 BSDF:BRDF + BTDF

我们时常讨论的PBR中的BxDF,一般都为BRDF,对于进阶的一些材质的渲染,才会讨论BSDF等其他三种BxDF。

另外,BxDF即上文所示渲染方程以及反射方程中的 fr 项(图片中也已标出)。

总结

以上【PBR系列二】辐射度量学理论和本章渲染方程相关知识就是所有的关于PBR的一些相关基础知识了,我们从辐射度量学入手,掌握了正确衡量光线属性的方法,由此定义出了BRDF,来表示物体的材质,即它对于光线的反射能量分布,最后结合辐射度量学与BRDF得到渲染方程,一个个真正完全正确的光线传播模型,这也是后续系列光线追踪的理论基础!

下一节我们也会具体来看PBR效果的实现。

你可能感兴趣的:(图形学,PBR,vulkan,图形学,vulkan)