3D图形技术的发展似乎永无止境,在NVIDIA发布185.20 Beta版本驱动后,人们惊喜地发现,NVIDIA的显卡驱动又带来了新功能:Ambient
Occlusion。这种被广泛用于CG专业领域的图形技术第一次出现在了消费级显卡上。那么这种技术会给我们的游戏画质带来怎样的提升?会影响游戏运行流畅度吗?下面就请大家与我们一起来一探究竟。
Ambient Occlusion目前尚未有正式的中文翻译,在实际应用中往往使用“AO”作为其简化词,汉语翻译多为“环境光遮蔽”。
在真实的世界中,光线从太阳发射出来后照射到大地上,环境光照由于有光线反射和折射的存在,为人们呈现出了极为丰富的层次感和空间感。举例来说,尽管阳光已经被造成阴影的建筑物遮挡,站在阴影中的人并不能直接看到太阳(不能看到光源),但我们在阴影中也能清晰地看到物体。这是因为周围物体的反射和折射带来了大量的漫反射光,这些漫反射光线充满了空间并照亮阴影中的物体,形成了真实而有空间感的光照效果。
但是目前3D游戏中对光照效果的处理并不是这样的。我们可以想象一个场景,里面有一个光源,那么场景中的其它物体将只会由这个单一光源照亮。无论是树,还是树下的凳子,都将先由这个单一光源照亮,然后降低其被遮挡位置的亮度,再做出影子。然而亮度的降低幅度基本上是相同的——不管被遮挡物体前面有多少个物体,物体的亮度、阴影的深浅都是一样的,这明显不符合实际效果。
当年的热门游戏《Doom 3》虽然带来了动态光影效果,但是阴影的处理依旧不够精彩,大部分影子死板而生硬,毫无过渡可言,很多地方给人的感觉就是一团漆黑。
那么,怎么改善这一情况呢?全局光照技术是个不错的办法,我们可以仔细计算光线的折射和反射路径,然后再利用反射光照亮其它部位。但是全局光照的资源耗费极为严重,如果在即时3D游戏中大规模采用全局光照技术,那么在物体稍微复杂的场景里,显卡就会很快耗尽资源,无法流畅运行游戏。因此,我们需要有一个能够达到全局光照效果的计算办法,这种办法不要太复杂,并且效果尽可能接近全局光照。
此时,Ambient Occlusion就可以派上用场了。AO的特点是,用尽可能少的资源,达到全局光照的效果。
在上文,我们已经阐述了AO的一些特点。实际计算中,AO是怎样执行的呢?
我们依旧用刚才举过的例子。在一个封闭的环境中,依然存在点光源,有一颗枝叶茂密的树,以及树下的石凳。我们需要计算石凳表面上某一点的光照情况,那么先从这个点,发射大量的射线并确定一个固定半径的半球。在射线射向周围空间的过程中,寻找出有多少射线被空间中的物体遮挡,或者半球内有多少遮挡物体。然后根据被遮挡的数量、光线的吸收幅度来确定石凳上这一点的光照情况。被遮蔽或者光线被吸收越多的物体表面将会得到更深沉的阴影,而只有轻微遮挡的物体阴影则会淡很多。比如在树叶越密集的地方,遮挡越强烈,阴影效果就越为深沉,在树叶较少的地方,阴影就更轻微一些。
AO技术示意图,这个做法是以对象表面的一点P为出发点,在该点的法向量N(Normal)范围的半圆内对外发射很多的假想射线。
可以看出,通过AO技术能非常轻松地解决阴影没有层次感的问题,终画面效果也会变得更为鲜明,对比更强烈,层次更丰富。
目前NVIDIA只在185.20驱动中开放了AO特效。目前市面上主流的GeForce 9以及GeForce
GTX 200系列显卡都可以通过更新驱动程序打开AO效果。需要说明的是,在Windows XP下,我们没有能够在NVIDIA的控制面板中发现AO项目,目前试验成功的只有Windows Vista。根据NVIDIA官方说明,目前支持AO特效的游戏如下:
《Assassin Creed》《刺客信条》
《Bioshock》 《生化奇兵》
《COD4》 《使命召唤4》
《COD:WAW》 《使命召唤5:世界战争》
《CS:Source 》《CS:起源》
《Company of heroes》 《英雄连:抵抗前线》
《Brothers in Arms: Hell's Highway》 《战火兄弟连:地狱公路》
《crysis》 《孤岛危机》(不支持多人)
《Devil May Cry 4》 《鬼泣4》
《Fallout3 》《辐射3》
《Far Cry2》 《孤岛危机2》
《Half-life 2: Episode Two 》《半条命:第二章》
《Left 4 Dead》 《求生之路》
《Lost Planet》 《失落的星球》
《Mirror's Edge》 《镜之边缘》
《The Call of Juarez》 《狂野西部》
《World in conflit》 《冲突世界》
我们在测试中主要使用《Crysis》与《狂野西部》来体现AO的效果。
无AO效果的图片,整体阴影不足,效果一般,层次感不够强
AO中等特效截图,仔细对比可以看出阴影在地面部位更深,但是层次感不如高特效
AO特效至高后,画面阴影层次感极为鲜明。暗处阴影更暗,遮挡较少的部分则明显更光亮
AO低特效截图,相比完全没有打开AO的图片,阴影情况稍作改良,但并未有根本性改变
AO为高特效,远处光亮处的树木更加有厚重感,近处草地的阴影过渡更真实
没有打开AO时,光亮处的树木比较轻薄,甚至有类似半透明的感觉,近处草地几乎没有阴影
从以上介绍可以看出,AO的确在游戏阴影效果上带来了很大的提升,但根据我们以往的经验,打开一项画质特效往往会对游戏运行的流畅度造成一定影响。因此接下来我们搭建了如下测试平台并通过实际测试来判断AO是否会降低游戏的运行帧速。
CPU:AMD Phenom X4 9850BE @2.5GHz
主板:AMD 770X
显卡:GeForce 9800 GTX+ 1GB
内存:DDR2 800 2GB×2
从实际测试效果来看,AO是极为耗费系统资源的。在打开中等AO效果后,游戏的平均运行帧速下降了25%,而打开高AO效果后则更为夸张,平均帧速下降达到了50%!显然即便是目前定位中高端的GeForce 9800GTX+显卡也难以在开启AO后流畅运行,相信GeForce GTX 260以上级别的显卡才是AO的理想“安身之所”。
目前AO技术受限于显卡性能,在高效果下难以流畅运行。不过我们从测试中也可以看出,中等效果的AO资源消耗不多,但是可以取得比较接近AO高特效下的视觉效果。因此我们建议玩家在游戏时打开中等特效的AO以获得更出色的阴影效果。总的来说,AO是未来3D游戏中比较有发展前途的一种技术,它能够以较少的资源消耗获得十分接近真实的阴影效果。作为一个能给游戏效果带来明显改善、并且入门成本不高的技术,相信它会得到越来越多的游戏厂商的支持。