显卡 频道

PhysX大提速 NVIDIA显卡物理加速测试

    在2008年2月,NVIDIA收购了知名物理引擎公司Ageia,它旗下的PhysX物理引擎技术也全部并入NVIDIA门下,Ageia PhysX也改名NVIDIA PhysX。追述其前身,从ODE、NovodeX、Ageia PhysX到NVIDIA PhysX,"PhysX"也迎来了一个新的时代。NVIDIA当时并承诺,将通过驱动程序让NVIDIA的GPU均可以支持PhysX下物理效果的加速。

11
当时收购时的广告logo,今天已经完全更名NVIDIA PhysX,颜色也全为绿色

    在GeForce GTX280发布时,NVIDIA具体公布了用GPU实现PhysX的具体细节。通过CUDA2.0,NVIDIA将在G80系列、G90系列和GT200系列所有GPU产品支持PhysX加速功能,不过,Forceware177.39测试版本驱动的推出仅正式支持GeForce9800GTX、GTX260、280 PhysX加速。通过修改inf文件,还可以让GF8800GT支持PhysX。

    我们知道,早在GeForceFX时代,NVIDIA便为著名的物理引擎Havok设计了用SLi显卡来进行物理加速的方案,虽然随后Intel收购了Havok导致其方案没有完成。但物理引擎在今后3D真实性实现上变得越来越重要,而NVIDIA随后收购Ageia也算是继续SLI Physics未完成的事业。

当年,NVIDIA为Havok FX准备的 SLI Physics
 

    不知道是否巧合?NVIDIA PhysX得益于正在迅速成长的CUDA而顺利实现,从CUDA2.0到开发成功NVIDIA PhysX,耗时仅仅2个月。作为CUDA之父的NVIDIA首席科学家 David Kirk也指出,用CUDA实现PhysX要比在Ageia PhysX1硬件加速卡上更容易。而在GTX280发布时,NVIDIA也表示,使用10个运算单元便可以达到Ageia PhysX1加速卡的性能。如果真的如此,GPU加速物理引擎,即便用HybridSLi,也可以带来不错的效果了?

   

PhysX的主要技术特性

    另一方面,NVIDIA也强调,在PhysX归入NVIDIA门下后,大量的游戏开始为PhysX优化,毫无疑问,“游戏之道”正在发挥着它的威力。想想Ageia之前的窘境吧,作为Ageia最具意义的代表作《幽灵行动3》也只不过是在粒子效果上使用了PhysX,而其他物理效果使用的是Havok,相信NVIDIA PhysX可以扭转这多年来尴尬的局面。

    我们知道,在NVIDIA放出177.39驱动后,GF9800GTX、GTX260、280可以完整支持NVIDIA PhysX了;大家也清楚,NVIDIA实现这一功能还是通过CUDA来实现的,而不是Purevideo 加速在芯片中加入了其他的处理器。那么,也就是说物理加速是要占用显卡Shader运算能力的。在有物理加速运算时,3D性能肯定受到影响。所以,这也是我们本次测试的主要讨论方向。

硬件平台
CPUIntel Core2Quad Q6850
主板ASUS P5Q Deluxe
物理卡ASUS Ageia Physx1
显卡GeForce9800GTX
硬盘Seagate 7200.10 320GB
内存Kingston D9 GMH 1GBX2@DDR2 1066 5-5-5-15
电源航嘉极能8688
软件环境
操作系统Windows Vista 32bit
驱动程序Intel inf 9.0
NVIDIA Forceware 175.19、177.39
测试游戏Futuremark 3DMarkVantage
UT3 PhysX Mod
Quake4
PhysX Demo

   

PhysX PPU

    本次测试中,选用了3DMarkVantage中CPU Test2的物理引擎测试、UT3 PhysX Mod下3个场景物理引擎测试以及Dark PhysX工具下的PhysX Demo进行测试。通过测试,我们可以看到在进行物理引擎运算时,对3D效能的下降,同时我们通过视频也向大家展示物理引擎的加入对3D环境真实性是有多大的帮助。

    首先,我们来看在3DMarkVantage下CPU Test2这一物理引擎的测试。在3DMarkVantage的规则中,每个CPU核心将对应一组测试单元(一个架子+一个圈),PhysX PPU将对应3组测试单元。而我们本次使用GPU PhysX时,同样对应增加3组测试单元。在该项测试得分中,并不是我们熟悉的Fps,而是OPS。它代表了处理物理引擎事件的每秒个数,而物理活动在很多情况下确实不能以fps来衡量,至少它的性能与fps不存在线性关系。

1
NVIDIA PhysX得分
2
Ageia PhysX得分
3
no PPU得分

    从本组测试成绩来看,3DMarkVantage将物理引擎的成绩表现在了CPU得分上,而从上图的详细的OPS得分看,GPU加速时该场景得分达到了122ops,而AgeiaPPU加速仅得到了26ops。可以想象,此时NVIDIA动用了很多Shader进行运算(从随后测试来看,通过监控GPU负载,物理运算会占据显卡30%-50%左右的资源),如果按NVIDIA之前表示过的10个Shader便可以达到PPU一样的性能,那么对于9800GTX来说,拿出几十个Shader来参与运算也谈不上奢侈。

     3DMarkVantage设计之初估计没想到NVIDIA会推出显卡加速这么一个产品,所以我们认为该测试项目是不合理的。对于CPU或者Ageia PPU来说,该项目具有参考价值,毕竟它们作为独立硬件进行专项的物理加速测试,并折算成一定分数计入总成绩。但NVIDIA GPU本身要做3D渲染工作,而该专项测试又几乎不具有任何3D渲染负载,这样NVIDIA可以用大量的Shader来完成物理运算从而取得很好的成绩。而实际游戏中,GPU要做3D运算,此时物理运算还能获得如此大的资源吗?

    下面这段视频,是UT3 PhysX Mod下龙卷风地图的效果,大家可以清楚的看到龙卷风下各种真实的物理效果给游戏带来的震撼画面。而另外一个我们测试的场景HeatRay PhysX具有冰雹天气,下落的冰雹颗粒也是该地图的主要物理运算之一。当然,两个地图中爆炸、烟雾、刚体碰撞效果,也是在物理引擎加入后有了更好的表现。

    从我们测试来看,GPU加速与PPU加速基本可以达到一样的效果,而在龙卷风特效下,CPU完全无法进行游戏了。从这个测试来看,GPU加速相对PPU加速有一样好的效果,而没有3DMarkVantage中,领先5倍的表现。由于UT3PhysX测试采用了专用地图,所以我们无法推测开启关闭PhysX前后对3D性能的影响,所以接下来的测试,我们用普通游戏加PhysX Demo组合的方法来测试GPU物理引擎加速对3D性能的影响。

    我们选用了DarkPhysics流体烟雾Demo和刚体小球Demo,与Quake4进行组合测试。首先我们还是来看看下面DrakPhysics Demo的效果(其中后半部分的刚体小球Demo是我们使用的)。

#v(http://wmv.it168.com/DIY/08.07.02/physx1.wmv*300*200*1)v#

    从前面的布料效果,大家应该可以感受到物理引擎的美妙了吧。不过我们还是进行我们的测试与验证。我们以刚体Demo测试开始为整个测试开始的标志,随后立即进行Quake4的Timedemo测试,以下是测试成绩。

    从以上两个分辨率测试来看(需要说明的是Smoke Demo不支持Ageia PPU加速),在1024X768下,3D渲染的负荷很低(对于9800GTX来说),所以开启PhysXdemo,在GPU加速状态下对3D性能基本没有影响。而在1920X1200分辨率下的结果,值得我们分析。

     Normal模式,是指没有打开PhysX demo程序下Quake4的得分,在打开PhysXdemo后,使用GPU加速 Quake4得分从100fps均降至80fps左右,3D性能降低了20%。而使用PPU加速,3D性能基本没有降低。而在GPU加速模式下,进行3D渲染也至少让PhysX Demo的性能下降50%左右(目测,也许目前仍不够准确)。

    为了进一步说明物理引擎对CPU和GPU资源的消耗,我们选用一个流体+碰撞的Demo进行测试。

1
GPU PhysX状态下截图
2
CPU加速下截图

    该Demo主要是为一个水池蓄水,水池是活动状态所以会有轻微晃动,液体也有可能流出。我们用Fraps记录从蓄水到水面平静整个过程的速度。再看Fraps曲线之前,我们来看以上两个截图,可以看到,在GPU加速时CPU占用率大概在15%以下,当CPU渲染时,只有一个核心达到近满负荷运行。目前所有PhysX Demo都不支持多核心CPU……

    在这里我们不难看出,NVIDIA PhysX的效率最高,而CPU几乎无法完成这个效果的演示。大量流体的加入让CPU不堪重负。当然,我们不知道如果4个核心的CPU都加入运算会有怎样的表现呢?很遗憾,PhysX不支持多线程的CPU。从这个测试来看,GPU PhysX还是可以大大降低CPU占用率的,并且在没有3D负载的情况下,其效果仍远好于Ageia PPU。

    我们知道,根据NVIDIA之前的承诺,今后采用统一渲染架构的GPU将都会支持PhysX加速,GF8、GF9和GT200全家族都可以实现这个加速。由于我们本次测试的是GeForce9800GTX,而不是GTX280,所以我们不知道在具有更多个流处理器时物理加速会对3D加速造成的影响。反之,像GF8800GT、9600GT这样的显卡物理加速是否给3D运算带来更大负担呢?毕竟,面对目前优异的3D游戏时,即便GPU不做任何3D运算,单块显卡仍不能完全满足3D渲染的需求,此时还让它来做物理运算,显然这个方案颇具性价比,但不够完美。

SLI PhysX,才是更好的方案

    而在3D游戏中,物理效果与3D渲染不同,它起到的是画龙点睛的作用,地道中的烟雾,开火后的爆炸,这种瞬间点滴细节对游戏效果改善是非常明显的。所以,我们预计在低端的GPU上,一样可以达到不弱于Ageia PPU的性能。可惜的是,目前NVIDIA 似乎还不支持不同档次显卡的SLi,也许今后一片9800GTX做3D运算,再另外搭配8600GT做物理运算的SLi会是一个不错的SLi PhysX方案。不知道到时候,这样的方案是否会起名Hybrid SLi 2.0?总之,NVIDIA兑现了GPU进行物理加速的承诺,并且有非常不错的表现,但PhysX在游戏软件中的应用如何赶超Havok,我们还拭目以待。

0
相关文章