BRDF光照模型和渲染方程

160 阅读4分钟

前提

有了基本的BXDF数学的原理之后,我们就需要进行光照的渲染计算了,一般情况下,我们只会使用BRDF模型进行计算,下面我就介绍一下几种常用的模型。

光照模型

本文只研究BRDF,也就是反射模型,一般的有,反射模型有二个部分组成,漫反射(diffuse)和高光反射(specular),使用d和s来进行表示,由于各自的关于,我们把它抽象为:

图片10.png

在下面的计算中,主要围绕ks进行分析,入射的光线记为L(in)=in*N*s,in表示入射光线的向量(由该点指向光源),N表示法线,s表示光强度,并且一般in和N都单位化,只表示角度。
Lambert模型

lambert是最简单的着色模型,没有镜面反射g()=0,于是我们可以得到BRDF:

图片11.png

于是得到反射光线的强度:

图片12.png

关于lambert模型中的Π分析由来,接受的能量为E(i),反射出的能量为E(0):

图片13.png

只有当其取值为[0,1/Π]的时候才能保证能量在合理的范围之中。
Phong模型

从phong模型开始,ks就不再为0,还是提一下定义的量,R为高光反射的光线,N为法线,V为射入相机的光线,I为光源射出的光线(定义为指向光源)。

图片14.png

在公式中可以看到,反射光线R,和射入相机的光线V求cos值,当他们的夹角越小的时候,fr越大,也就会越亮,越远越接近于漫反射。
Blinn-Phong模型

和Phong模型相比,只是多了一个H,称之为半程向量,H=normalize(I+V),相比于Phong模型,计算量减少了一些,其余无太大的区别:

图片15.png

光照计算也Phong一样,这里不再多余解释。
Cook-Torrance模型

Cook-Torrance模型是一种基于物理的渲染的模型,主要采用了一种微平面的模型,这里只进行大致的说明,不进行过多的介绍,在PBR中自行了解:

图片16.png

其中F是菲涅尔方程,D是平面分布函数,G是几何阴影项。

渲染方程

关于渲染方程的也有二种的形式,这是对于不同环境中的光分别做不同的处理,分别是半球形公式和区域公式:

半球形公式

以着色点(像素),的法线向四周做一个上半球形,这就是基本的半球形的公式处理,对于一个点的颜色值由二个部分组成,一是物体自发光L(e),二是物体接受到其他物体的反射光L(r)(入射光的反射,也包括光源直接照射的光)。 所以我们着色公式为:

图片17.png

和前面的BRDF的定义和反射光线的计算,获得了我们最终的渲染方程:

图片33.png

区域公式

对于一个着色点,其入射光来源是场景中所有物体的表面,可以使用该公式来求所有入射光表面的积分,来代替球面的积分,被照射点(着色像素)记为x,发出点为y,添加函数V(x,y)表示可见性,1为可见,0为不可见。

x的入射光为y的出射光。

图片19.png

原本的立体角也发生变化,现在为

图片20.png

于是新的渲染方程为:

图片21.png 区域公式比较少的用到,也不进行多余的解释。

直接光照和间接光照

直接照明指的是光从光源直接照到材质表面,间接照明指的是光在场景中经过反射若干次后照到材质表面。经验表明,当考虑直接光的时候,区域公式更有效;考虑间接光的时候,半球形公式更有效。可以这样去想这件事:直接光一定是从光源发出来的、没有经过反射的,因此其来源一定是光源,我们可以很轻松找到光源并在其表面区域上进行积分;而对于间接光,由于其光线经过反射,因此很难找到其来源,所以只能使用半球形公式。 渲染的过程也比较的简单,后续进行更新。