环境光屏蔽的最终目标
灯光/照明最真实的效果是实现全局照明。在早期的游戏中,只能达到直接光照的效果,也就是说,光线从光源发出,照射在物体上,反射到玩家的眼睛,完成光照的计算。但是,随着技术的发展,为了得到更真实的图形画面,不仅需要计算直接光照,还需要计算间接光照。也就是说,光从光源发出照射到物体上后,不仅要计算物体本身反射到玩家眼睛的光,还要计算物体对光的反复反射、折射和吸收,以及反射和折射引起的物体之间的光影变化,通过综合计算显示(反射)出最终的光影效果。
全局光照在静态图形的处理上非常完美,因为静态图形可以等待渲染时间,但是对于游戏来说,连续动态图像的渲染速度必须是每秒几十fps,所以全局光照的处理需要非常谨慎。其算法在提升图像真实感的同时必须保证相应的效率,否则会打破画面效果和帧率之间的平衡。
说到这里,我们先来介绍一个非常好的实现全局光照效果的方法,那就是“光线追踪”技术。光线跟踪算法有两种:前向跟踪算法和后向跟踪算法。其中前向追迹算法是自然界的光线追迹法,即光源发出的光线经过环境场景之间的反复反射和透射,投射到场景表面,最终进入人眼。反向跟踪算法正好相反。从观察者的角度来看,它只跟踪观察者可以看到的表面投影光。
英特尔、AMD、NVIDIA都在光线追踪技术上取得了进展。英特尔按照相应的技术重新制作了Quake4,但是相应的GPGPU处理器Larrabee的消失,让这项技术暂时从人们的视野中消失了。ATI曾在HD4000系列时代展示过基于光线追踪技术的Cinema 2.0,但至今仍无技术更新信息。NVIDIA在光线追踪方面相对领先,它发布了基于CUDA架构的光线追踪引擎OptiX。
光线跟踪将是未来实现全局照明的最佳解决方案。但是光线追迹的计算方法非常复杂,负载很大,而且很难与目前显卡架构基于光栅的处理方法集成(Intel和NVIDIA都倾向于在Larrabee、Quadro等上实现。),而且短期内仍然无法应用于游戏显卡。
目前游戏开发者使用AO技术实现全局光照。AO技术以独特的计算方式吸收“环境光”(包括未被阻挡的“光”和被阻挡的光引起的“阴影”),从而模拟全局照明。
现在把话题转回来,做一个简短的总结:
1.全局光照是未来实现游戏图形真实感的重要元素(可以实现光影效果的真实感,对应的对立关键词是直接光照)。
2.光线追踪是实现全局光照完美效果的最佳技术/方法之一,也是未来的一个发展方向。它的技术实现方式最接近真实的物理模型,但由于效率较低,目前的游戏和显卡架构无法承受。
3.目前游戏已经开始实现全局光照的效果,但是并没有使用光线追踪,而是使用其他方式来实现全局光照的效果,包括“AO”环境光明暗处理。
4.“AO”环境光明暗处理是在全局照明中实现某些物体的局部照明和阴影的技术途径。它的功能实现方法并不严格遵循真实的物理模型,但效率高,所以在当前游戏中应用广泛。
5.再次,AO环境光明暗处理(包括它的变种SSAO,HBAO等。)只是实现全局光照的技术途径之一。目前游戏中采用了很多技术方式来达到全局灯光整体效果的完善和完美。