“暗黑”雅典娜:AO环境光照技术解析

技术空间

在GeForce GTX275发布的同时,NVIDIA还推出了新的Forceware 185.68驱动。从官方的说明文档上得知,这款驱动主要为刚刚上市的PC游戏《超世纪战警:暗黑雅典娜》专门进行了优化,另外还加入了对Ambient Occlusion(环境光照)的支持。这种被广泛用于CG专业设计领域的图形技术第一次出现在了消费级显卡上,那么它会给游戏的画质和流畅度带来怎样的影响呢?下面我们就来看看“雅典娜”不为人知的一面。

自然光线的真实性

我们先来了解一下,目前光线在计算机图形领域的表现能力。自然界真实的光是很复杂的,当光线从太阳、灯泡等光源发射出来后,除了直接照射物体表面,还会根据物理光学定律产生反射、折射光线,这就产生了环境光,并在人们眼睛里面呈现出了极为丰富的层次感和空间感,从而得到真实的光影感觉。

例如,当我们站在房间中,阳光通过窗户射入屋内,并被在房间的墙壁、书柜、沙发等物体遮挡,产生了阴影。同时在物体表面借助阳光的反射和折射产生了大量的漫反射光,这些漫反射光线在房间中不断反射,从而照亮一些阴影中的物体,形成了有空间感的光照效果。

然而在3D游戏中要模拟这种真实的光照效果是比较困难的。标准的光照图形效果是以场景中的光源为基础来计算表面颜色的,只有光线轨迹上的物体才会产生阴影,而并不会影响其他物体的光线。通常在某个游戏场景中,人物、树木以及建筑物都是由单一光源照亮,然后根据遮挡程度降低其被遮挡部分的亮度,再生成阴影。

16-d19-2_1.jpg
环境光让室内物体更有层次感(右图)

然而这种阴影只是单纯的亮度降低,所有物体阴影的深浅都一样,没有过渡般的层次感,这明显不符合真实的效果,因而以前的3D游戏即使有动态光影效果,但阴影部分仍然比较死板。比如当年以光影效果而闻名的《DOOM 3》,虽然其光影效果令玩家们印象深刻,但该游戏在处理光照效果上却存在重大缺陷:当游戏场景处于光源之内时是光亮耀眼,而光源之外则是漆黑一片,明亮区域与黑暗区域之间缺乏过渡,这样整个场景看起来就显得相当生硬突兀。为此,环境光照、屏幕空间环境光照等技术被加入计算机图形技术中。

16-d19-3_1.jpg
《DOOM 3》的部分场景相当“黑”

环境光照的实现原理

Ambient Occlusion(环境光照,以下简称AO)是一种柔软阴影技术,根据物体间的相对位置调整阴影,实现一种更自然的过渡。在过去如果想要实现类似的实时效果,是非常困难的,可是新的Forceware 185系列驱动结合GTX275为我们带来了对这种技术的体验,并且它对多种游戏都能够很好支持。

AO采用快速而廉价的算法带来非常精确和平滑的阴影,这些阴影会在真正意义上改善图像,它主要能改善阴影,给场景更多的深度,真正有助于更好地表现出物体的所有细节。想象一下,当场景中所有的物体都是由一个光源来产生均匀的直接照明,那么就会得到一个苍白的图像。但是当某些物体阻挡了本应投射到其他物体的光线时,那些物体上被光线阻挡的地方就会变得较暗,越多光线被阻挡,表面就越暗。

AO的计算过程就是在物体表面任意一点上,确定一个固定半径的半球区域,从而决定光线是否在物体表面上该点处被其他物体阻挡,或者半球内有多少遮挡物体,然后根据被遮挡物体的数量、光线的吸收幅度来确定该点的光照情况。一旦该点的吸收幅度确定,则物体表面会形成一张灰度级的映射图,用以调制环境光对该物体表面的影响程度,映射图中明暗区域均按比例调节其对环境光吸收的强弱程度。如被遮蔽或者光线被吸收越多的物体表面将会得到更深沉的阴影,反之只有轻微遮挡的物体,阴影则会浅一些。比如在树叶越密集的地方,遮挡越强烈,阴影效果就越为深沉,在树叶较少的地方,阴影就轻微一些。

简而言之,AO不需要任何光照明,它以独特的计算方式生成环境光。同时调整未被阻挡的光线和被阻挡光线所产生的阴影,从而通过改善阴影来显示更好的图像细节,尤其在场景中有很多物体,从而更多阻挡着光线导致间接照明不足时,它的作用会更加明显。

16-d19-4_1.jpg
AO技术示意图,以P点确定一个半球区域

环境光照的特点

那么AO到底能带来哪些好处呢?具体地说,它可以解决漏光、飘忽以及阴影不实等问题,改善场景中细小物体的缝隙、褶皱、材质等表现不清晰的问题,综合改善细节尤其是暗部阴影,增强空间的层次感、真实感,同时加强和改善画面明暗对比,增强画面的美感。

类似的技术最早见于《孤岛危机》的SSAO(Screen-Space Ambient Occlusion,屏幕空间环境光照),SSAO实际上是一个近似于AO的函数,并且以此进行实时渲染。它通过采集像素周围的信息,并进行简单的深度值对比来计算物体上环境光照无法到达的范围,从而可以近似地表现出物体在环境光照下产生的轮廓阴影。由于不使用CPU,全由GPU的Shader流处理单元实现处理,SSAO对GPU有较大的消耗。如果在3D游戏中大规模采用SSAO技术,那么在物体稍微复杂的场景中,显卡就会很快耗尽资源,而无法流畅运行游戏。因此,AO的出现弥补了SSAO的不足,它的主要特点就是用尽可能少的资源,达到SSAO的效果。

为游戏带来更逼真的效果

实际上,以前AO更多被应用于CG图像设计方面,我们可以在Maya等3D软件中见到它。而随着人们认识的加深以及作图的需要,AO也逐渐被用到工业造型、建筑设计上来,如高档轿车的模型展示都会用到AO,而在建筑外观以及室内设计表现中也越来越多地见到它的身影。另外,在《刺客信条》、《生化奇兵》、《使命召唤4》等22款游戏中也均可支持AO,大部分游戏中室内场景的表现更突出,特别是在《魔兽世界》和《冲突世界》等游戏的外景中,AO效果主要体现在草木等植物上。

实现AO的方法其实很简单,只要安装最新的Forceware 185系列驱动后,即可在显卡驱动程序的控制面板中打开相应的选项。在这里我们可以选择“关闭、低、中、高”等几个等级,不同的等级对游戏的图像效果影响也不同。在多个游戏对比中可以看见,AO带来了更逼真的游戏体验,过渡更自然的阴影让玩家可以更容易融入游戏中。

16-d19-5_1.jpg
显卡驱动程序中的AO选项

虽然画质提升了,然而在实际应用中,AO却是比较耗费系统资源的。在高画质下,打开中等AO效果后,平均运行帧速下降了20%,而打开最高AO效果后,游戏性能下降非常明显,平均帧速下降了40%,显然就算是目前定位中高端的GeForce 9800GTX+显卡也难以在开启AO后流畅运行,看来AO是真正为GTX275以上级别的显卡准备的。不过这是在高画质下的测试结果,如果渲染质量较低的图像,则可以得到很大的改善。

《孤岛危机》AO效果对比

16-d19-6_1.jpg
无AO效果的截图,整体阴影不足,效果一般,层次感不够强。
16-d19-7_1.jpg
打开AO效果的截图,画面层次感鲜明,阴影更暗,遮挡较少的部分更亮。

《兄弟连》AO效果对比

16-d19-8_1.jpg
无AO效果的截图,吉普车身泛白,车底的阴影很浅,轮子像“飘”在地面上。
16-d19-9_1.jpg
打开AO效果的截图,车身皱纹体现出质地,车底阴影深厚,体现出车的厚重感。

总结

AO的作用主要就是加强阴影,所以处理光照效果应该是十分有效的,它增强了物体的层次感,自然也就让最终画面效果变得更加真实。总的来说,AO是未来3D游戏中比较有发展前途的一种技术,它能够以较少的资源消耗获得十分接近真实的计算机图形效果。作为一种成本不高、门槛较低,并且又能给游戏效果带来明显改善的技术,它必然会得到越来越多的硬件以及游戏厂商的支持。