光影特效技术解析
首先我们对AO(环境光遮蔽)、Refraction(折射贴图)和Volumetric shadows(体积阴影)这3个技术名词进行下解释。
AO(环境光遮蔽):AO是来描绘物体和物体相交或靠近的时候遮挡周围漫反射光线的效果,可以解决或改善漏光、飘和阴影不实等问题,解决或改善场景中缝隙、褶皱与墙角、角线以及细小物体等的表现不清晰问题,综合改善细节尤其是暗部阴影,增强空间的层次感、真实感,同时加强和改善画面明暗对比,增强画面的艺术性。
Refraction(折射贴图):从英文单词上看,很容易和反射混淆。折射是光线穿过透明物体的光线扭曲效果,它与反射光线是完全不同的。因为折射本身计算复杂,光是游戏中启用就已经很吃力了,你更难以制作单个物体上多个折射率的效果。折射常发生在透明的厚玻璃,清澈见底的湖水,水晶宝石等。
Volumetric shadows (体积阴影):测定投影空间式阴影,该算法最早于1977年提出,其基本原理是根据光源和遮蔽物的位置关系计算出场景中会产生阴影的区域,即阴影锥。然后对所有物体进行检测,以确定其会不会受阴影的影响。这个方法的要点在于,它不是利用“把物体投影到环境表面”的方式来产生阴影,而是去找出场景中有哪些像素是在阴影中。
从笔者对天堂2.5 Benchmark的测试中我们发现AO(环境光遮蔽)这个选项对图形画质的影响较大,且开启和关闭的负载差异也较大,所以我们重点来解析AO(环境光遮蔽)这个特效产生以及其变种SSAO技术的相关解析。
虽然说玩家在游戏的过程中,真正对AO(环境光遮蔽)特效的体验可能是自己没有太在意甚至是没有发觉,但是我们不得不说的是近些年来推动游戏图形画面更加逼真的最为关键的一个环节即是光影特效,试想一下:若能够非常近似的模拟与现实生活一样的光照和阴影效果,那么游戏的画面将更加自然和拟真。然而由于光影效果的实现需要耗费巨大的GPU资源,故而也成为了技术推进上的最大障碍。
在早期的游戏设计中,仅仅采用了相当粗糙的直接光照效果,即:光线从光源发出、照射到物体上后、反射到玩家眼中,光照的计算就完成了。这显然不大完全符合现实世界的光影形成的逻辑,因为在现实中,不仅要计算直接光照,还需要计算间接光照,即:光线从光源发出、照射到物体上后,除了计算物体本身反射到玩家眼中的光线,还要计算物体多次反射、折射、吸收光线,以及物体之间因为反射、折射而导致的光线、阴影变化,经过综合计算将光线和阴影的最终效果展示(反射)到玩家眼中,从而实现全局光照的效果。而全局光照才是实现光影特效的最逼真效果。
全局光照效果图
全局光照是个好东西,但是正如事物有利即有弊、有阴就有阳,全局光照在静态图形处理上因为可以等待渲染的时间,所以比较完美,而对于游戏来说,动态画面必须保证每秒好几十帧的渲染速度,故而全局光照必须在处理效率与画面真实度上就必须要有一个相对合理的取舍与平衡。
目前实现全局光照效果相当最好的一种方式即采用“光线追踪(Ray Tracing)”技术。
光线追踪算法分为两种:正向追踪算法和反向追踪算法。其中,正向追踪算法是大自然的光线追踪方式,即由光源发出的光经环境景物间的多次反射、透射后投射到景物表面,最终进入人眼。反向追踪算法正好相反,它是从观察者的角度出发,只追踪那些观察者所能看见的表面投射光。
光线追踪技术虽然说实现了最佳的全局光照效果,但是却与目前的显卡架构融合较为困难
说到这里,我们先介绍一下实现全局光照效果非常好的一种方式,那就是“光线追踪”技术(Ray Tracing),光线追踪算法分为两种:正向追踪算法和反向追踪算法。其中,正向追踪算法是大自然的光线追踪方式,即由光源发出的光经环境景物间的多次反射、透射后投射到景物表面,最终进入人眼。反向追踪算法正好相反,它是从观察者的角度出发,只追踪那些观察者所能看见的表面投射光。
光线追踪画面效果
光线追踪技术实现了最佳的全局光照效果,但是与目前显卡架构以光栅化为主的处理方式难以融合,并且由于光线追踪在计算方法上非常复杂、负载也很大,所以在短期内该技术无法真正大规模的应用于游戏显卡上。Intel、AMD和NVIDIA都在光线追踪技术方面有所发展,目前在该技术上处于相对领先的应该是NVIDIA公司,其发布了基于CUDA架构的光线追踪引擎OptiX。
“山重水复疑无路,柳暗花明又一村”,其实目前的一些游戏已经开始实现了全局光照的效果,但并非采用的是光线追踪技术,而是采用其它多种实现方式来达成全局光照的效果,其中包括AO环境光遮蔽(包括其变种SSAO、HBAO等)。
一般光照渲染模式(左)与AO光照渲染模式对比
AO环境光遮蔽:是实现全局光照中部分物体局部光照和阴影真实化的一种技术方式,其函数实现方式并未严格遵循现实的物理模型,但是效率较高,因此被当前游戏广泛应用。
作为AO环境光遮蔽技术重要变种之一的SSAO(Screen-Space Ambient Occlusion)屏幕空间环境光遮蔽,其最先应用于Crysis(孤岛危机)游戏之中。这款游戏的开发商Crytek作为当时在间接光照技术研究领域的先锋,其技术员在对应用于孤岛危机游戏中的Real-Time Ambient Map(实时环境光照贴图,简称RAM)技术进行再度改进之后,最终成就了如今的SSAO技术。而SSAO相对于早期应用于NV驱动185.20中的AO技术较为优秀的地方在于:占用资源低、执行效率高,且与流行显卡的管线整合相当容易;缺点也有:颗粒感比较重,需要与动态模糊紧密配合才能取得较好效果。
目前已发行的游戏中,运用SSAO的游戏有:Crysis(孤岛危机)、Burnout(TM) Paradise The Ultimate Box(火爆狂飙5天堂)、帝国:全面战争和星际争霸2。
三秦IT网的官方微信:更多资讯请关注:三秦IT网官方微博