基于预计算辐射传递的全局光照技术

http://xueshu.baidu.com/usercenter/paper/show?paperid=097d4f3c59f80d4b459b9b98c31988f1&site=xueshu_se

全局光照的算法包括光线追踪和辐射度两大类。
光线追踪是全局光照计算的经典方法可以绘制出高质量的镜面反射效果。该方法逆向追踪到达绘制屏幕上的每一个像素的光线,通过与场景中的物体的多次相交,反射以及投射来确定光线路径,计算该像素的亮度以及颜色值。尽管光线追踪技术是一项较为成熟的真实感图像绘制技术,但是其消耗的计算量非常大,以至于现在该技术没有广泛地应用到实际中去。

辐射度算法以热传递理论为基础,原理是考虑场景中所有面的相互光辐射作用,求解能力平衡方程,获取场景各个点的亮度。 普通的辐射度算法计算量和消耗资源量也相当大。

为了渲染出真实感强,绘制高效率的全局光照效果,Sloan根据光照和绘制效果的线性关系,并利用GPU的优越性能,提出了预计算辐射传递(precomputed radiance transfer, PRT)框架。PRT 算法是采用球面光辐射传递映射方法在物体表面创建函数,把任意低频入射的传递表示成辐射度传递,其中包括阴影和交互反射。对光辐射传递单独进行预处理,在运行阶段,这些转移函数应用到实际入射光中。光源和光辐射传递函数都用低频球谐波函数描述。在绘制过程中,由于全局光照计算所需的光辐射传递函数信息已经在预处理中获得,

而且该函数和光源分布函数都已经分解成正交函数序列,因此最后的出射光强计算化简为两者的系数向量的点积,这种绘制速度比较快。

本文通过利用小波技术重建高频信号,得到了高频的光照仿真效果,并且在实时绘制塔台模拟大规模场景时,采用了自适应细分的算法,大大提高了绘制机场模型的效率。

1 基于球面和谐函数的PRT函数方法
PRT算法表现了在复杂的光源下,由于物体自身的遮挡和反射造成的自阴影和自反射光,这些阴影和反射光都是低频率的软阴影和反射。它通过对复杂的光线相互作用进行预计算来节省时间,提供了一种动态改变光照环境的方法,其本质是通过入射光的线性组合来计算每个点的光照,用球面调和函数解码这些数据。

1.1 真实物理光照模型
如果场景中有nlights个光源,则模型表面的光照颜色用下式计算:
在这里插入图片描述
其中:N为表面法线,L为光照方向。
这个光照模型只不过是真实物理光照的简化,只有完全地模拟物理才能得到真正照片级的真实。但物理光照公式计算相当复杂,实现实时计算困难。看下面的物理公式,实际上是在半球上对光线方向(V)的亮度(L)函数进行积分。

在这里插入图片描述
1.2 光辐射传输函数的预计算
PRT算法的核心是对光照信息使用球面调和来进行编码。一个原始信号,可以分解为一系列基函数的线性组合,如果要在以后利用这些基函数来重建原始信号,必须事先得到每个基函数相对应于原始信号得系数(缩放因子)。比如要计算信号f(x)中基函数b(x)分量得系数(权重),需要在f定义域上对f(x)b(x)进行积分,也就是所谓的卷积,这一过程为projection。而重建原始信号,则将经相应系数缩放后的所有基函数求和即可。

PRT采用的是一种叫做伴随勒让德多项式(associated legendre polynomials)的正交函数。通常用P表示这类多项式,伴随勒让德多项式具有两个参数l和m,定义域为[-1,1],返回值为实数,l和m两个参数将这些多项式归为若干组,l便是组的编号,取值为大于0的整数,而m取值为[0,l]的整数,同一组中的任意2个多项式之间卷积为一个固定的常数项,而不是同组中的任意2个多项式之间卷积又是另外一个固定的常数。很显然一个n组勒让德多形式一共有n(n+1)项,如果用这些多项式进行信号projection 可以得到n(n+1)个参数。

在这里插入图片描述
当l=0时,球面调和函数可以用来近似环境光照,可以用在AO(ambient occlusion)计算中。而l=1时,因为球面上值呈余弦分布,故可以用来近似漫反射计算中的cos项。现在要利用这些球面调和函数对球面上的原始入射亮度信号进行编码,只要在球面上做卷积运算就可以了。

发布了610 篇原创文章 · 获赞 96 · 访问量 33万+

猜你喜欢

转载自blog.csdn.net/wodownload2/article/details/104196329