● 第一片沙地——SSAO
对阴影中像素的数学应用并不是一切的尽头,既然数学关系可以用来解决没有光的光影关系中几乎一切的问题,那就肯定会有追求完美的人在这条路上一直走到黑。于是,那间名叫crytek的公司出现了。
crytek公司
实现了soft shadow的阴影依旧是不正确的,阴影的边缘虽然因为更多的光线流入而显得更加柔和,但这些光线依旧仅出自同一个光源而已。真实的场景中光源显然不止一个,任何场景内物体表面的反射和漫散射都可以成为一个新的光源,这些经过反射和散射的光不可能不对阴影产生影响。
如果不考虑这些次生光源对阴影的影响,影子的表现是不可能正确的。影子里完全没有光这种事情出现在DOOM III那个只有一盏吊灯,透着阴森恐怖的卫生间里还勉强可以让人接受,如果出现在大白天的室外场景,相信没有一个目前的用户可以接受这种效果。比如你控制着角色奔跑在浩瀚的非洲大草原上,眼前忽然出现了一个大裂缝,走近一看才发现原来是一棵树的影子,估计掀桌子的冲动会立刻冲上你的脑门。而如果要考虑这些光照产生的效果,我们就又要面对故事的核心问题——光在哪里?
可以这么说,光栅化过程的发展,其核心就是程序员在没有光的前提下想尽办法欺骗玩家眼球,让他们相信那里有光的血泪辛酸史。
没有光线,又要表达光所产生的效果,最开始使用的自然又是直接把所谓正确的效果弄成贴图贴出来了事的手法了。比较典型的如半条命2中所使用的radiosity Normal Maps,其效果拙劣到几乎没有人再次采用,这种手段很快就消失了。不同场景、不同视角中次生光源产生的光照根本就不可能在事先被全部估计到,因此透过预先设计纹理事先效果的手段自然也就全无成功的可能了。
既然不能预先设计,那我们就把处理的过程放进实时的游戏中吧。于是,程序员们再次开始了对全局间接光照特效的数学关系研究。先后出现的GI和Photon Mapping等操作方式消耗都过于巨大或者效果不佳,直到crytek公司在SGI2007会议上递交了一篇名为《Finding Next Gen – CryEngine 2》的论文,全局间接光照的实用化才拉开了帷幕,这篇论文中crytek提出了一个全新的处理方式——Screen-Space Ambient Occlusion,简称SSAO。