间接光照技术和环境遮挡简介
2010-08-15张霁
张 霁
同济大学软件学院,上海 201804
间接光照技术和环境遮挡简介
张 霁
同济大学软件学院,上海 201804
环境遮挡技术的出现,使实时部分模拟全局光照效果成为可能。而不断发展的游戏行业中需要支持大规模动态场景以及柔性物体,同是要对图像质量和效率作出改进,这又为环境遮挡技术提出了更高的要求。最近,为了追求更真实的效果,越来越多的研究开始关注环境遮挡与间接光照的结合。为了更好的判断这一技术的未来走向和研究重点,对相关研究结果进行整理综述非常必要。
环境遮挡;全局光照;间接光照;
0 引言
环境遮挡技术就是一种能模拟部分全局光照效果的技术,虽然一般仅限于模拟场景中由于间接光照接收量不同而呈现的明暗变化,但是由于其开销远远小于传统全局光照技术,因此现在已被广泛应用于各种环境中。
近些年来屏幕空间技术的流行推进了环境遮挡技术的发展,在效率已经能保证交互性的情况下,研究人员又将这一技术做了扩展,提出了一些新的特性,本文将在后面逐一讨论这些新特性。
1 环境遮挡理论
环境遮挡模型
假设在一个阴天,环境中没有一个明确方向的光源,我们可以看到所有物体都呈现出一个较为灰暗的外观。在这种情况下,光照主要是由物体间相互反射的间接光来完成的。将整个场景分为无数小块,选取场景中任意一小块为研究对象(亦可看做一个点),以小块中心为基准点,其表面法线为朝向可以确定一个半球,这个半球中任意向量所指向的点会向研究小块发射漫反射光,都会影响其光照情况。
2 计算方法
这部分介绍应用环境遮挡理论来进行渲染的不同方法。首先必须以合适的方式来表示场景中的几何体,其次通过查询来确定每个点的遮挡信息,最后用遮挡信息来调整光照结果。
2.1 场景几何体建模
由于环境遮挡的局部性,一般来说计算遮挡量只需要用户感兴趣的区域(一般是摄像机可见区域)内的几何体信息即可。参考文献[4]中认为,环境遮挡其实就是遮挡体在被遮挡体上投下阴影的总和,为了更方便的计算投影面和受影面的面积,作者对多边形网格做了转换:将网格中的每个点用一个圆盘代替,圆盘的位置和点的位置相同,朝向点的法线方向,圆盘的面积等于点所在所有三角形面积总和的1/3。这样:以顶点为单位的网格就转化成了以圆盘为单位的面集。
在Siggraph课程上,来自Crytek的MITTRING展示了CryEngine内使用的一项新技术,同样利用了屏幕空间技术,他们将其称为屏幕空间环境遮挡,简称SSAO,其与传统计算环境遮挡相比,SSAO的最大差别就在于它将屏幕空间的像素深度值看做是每一个像素的高度,这样,整个深度贴图就可以看做是一个高度图,然后使用将这个高度图作为计算环境遮挡时的几何体代理。
SSAO可以很简单的集成到现有的渲染引擎中:首先,引擎中执行一遍的正常渲染,不同的是,这次渲染的结果并不直接写到屏幕上,而是直接将颜色和每个像素对应的深度值输出到不同的贴图中储存起来。深度贴图就用作为计算环境遮挡时的几何体信息。在计算出每个像素的遮挡值之后,引擎再执行一遍后处理,用对应像素的环境遮挡值调整之前计算出的像素颜色。
很多后续研究都在寻找克服SSAO中出现的这些问题的方法。可以通过多层深度图的方式来解决。即将选取不同的视截体远平面将场景多次渲染,得到多张深度图。然后在计算遮挡值的时候对每张深度图都做计算,采取其中遮挡值最小的为正确结果。这种改进方法提供了视觉上有说服力的结果,但是却由于多遍渲染场景,效率下降较大。
2.2 遮挡查询
在确定了合适的几何体表示方法之后,如何正确高效地查询测试点的环境遮挡情况是决定遮挡效果和计算效率的关键。查询环境遮挡最直接的方法就是光线相交测试——在测试点所确定的采样半球内选取若干方向,从测试点发向每个方向发射光线进行相交测试,再将测试结果乘以方向因子累加起来,就可以得到遮挡结果。
3 下一步研究展望
目前在环境遮挡和间接光照方面,国内外学者已经取得了不少研究成果,其中很多已经作为成熟的技术用于商业领域,比如游戏。但该领域在以下方面仍值得进一步探索:
3.1 寻找更合适的几何体代理
目前的游戏和应用中,大部分环境遮挡都是以SSAO方式实现的。目前的研究思路主要是从这两个方面着手:
1)如何在不严重影响屏幕空间技术的效率优势下寻找可以弥补高度图假设缺陷的几何体代理;
2)由于高频AO和低频AO的特性差异,想办法将二者分开考虑,各自采取最合适的方法来进行优化。
3.2 整合环境遮挡和间接光照
传统的环境遮挡技术仅仅考虑了遮挡对环境光照的影响,第5章中介绍的技术已经证明了,在实现环境遮挡技术的基础上,可以很容易的加入对间接光照的考虑。间接光照不仅可以减轻过度阴影的效果,更可以用多样的颜色(如染色现象)进一步提高真实性。
[1]Méndez,M.S.Jordi Catá(2003).Real-time obscurances with color bleeding. Proceedings of the 19th spring conference on Computer graphics. Budmerice,Slovakia,ACM.
[2]Aila,J.K.T.(2006)."Ambient Occlusion for Animated Characters." Eurographics Symposium on Rendering
[3]Alex Mendez-Feliu,M.S.(2009)."From obscurances to ambient occlusion∶A survey." Vis. Comput.25(2)∶ 181-196.
[4]Bunnell,M.(2005)."Dynamic Ambient Occlusion and Indirect Lighting." GPU Gems 3∶ Chapter 14.
[5]Dominic Filion,R.M.(2008)."Starcraft 2 Effects& Techniques." Advances in Real-Time Rendering in 3D Graphics and Games Course SIGGRAPH 2008.
[6]Francisco González,M.S. Miquel Feixa (2007)."Viewpoint-based Ambient Occlusion." IEEE Computer Graphics & Applications
[7]José Díaza,P.-P.V. Isabel Navazoa,and Florent Duguetb,(2010)."Real-time ambient occlusion and halos with Summed Area Tables." Computers & Graphics.
TN38
A
1674-6708(2010)30-0093-02