N卡还有多少作用?
提起物理游戏大家是既熟悉而又陌生。其实几乎所有的游戏中都会含有“物理”方面的运算,知名的有PhysX以及Havok还有Bullet,不知名的还有很多很多。无论是基于任何引擎或算法来实现,目的都是为了让游戏中的各种运动轨迹逼真的近乎实际,让游戏玩家获得身临其境的感觉。
我们都知道PhysX游戏可以交由N卡GPU来运算,但NVIDIA显卡对于非PhysX的物理游戏是否也能起到作用呢?换句话说CPU可以计算的物理游戏,还需要N卡么?
我们姑且把所有的物理游戏统称为Physics游戏,那么PhysX是Physics的一种,Havok也是Physics的一种,同理Bullet,同理……,也就是不管任何类型的物理游戏,其物理部分的运算都是由CPU来处理的,因为考虑到目前的CPU的性能包括CPU串行顺序处理的机制,绝大部分的物理运算量都比较小,否则CPU将不堪重负,游戏帧数可谓惨不忍睹。也就是说只要CPU来承担物理运算,游戏流畅度和逼真度犹如鱼和熊掌二者不可兼得。
CUDA能够胜任任何复杂运算
在今天的话题开始之前,我们先见识一下物理游戏面临的处理任务是如何的复杂:这款叫Supersonic Sled的游戏,原型是上世纪五十年代美国空军所作的人体重力承载试验,目的是探究人体究竟能承受多快的加速度。在一辆轨道车上安装了火箭推进器,由人控制它沿平原向前飞驰,直到坠落峡谷....。
这个Demo中应用了多项NVIDIA看家技能,如PhysX、Tessellation甚至加入了环境光线追踪,可以说集目前Fermi架构优势于大成者的演示软件。与大多数枯燥的演示Demo不同Supersonic Sled还具有游戏互动性,玩家可以尝试以控制火箭车以最快的速度达到终点后成功制动,没有坠落山谷,程序会自动记录玩家到达重点所花的时间并作出排名。
Supersonic Sled有通俗易懂的中文控制界面,极易上手,除了演示NVIDIA各项技术特性之外,它的确是一款不错的休闲游戏。
火箭车在飞驰,速度不断增加,所到之处的气流和动能会造成建筑和场景的损坏,十分逼真。
随着速度的加快,火箭车驾驶员会露出恐惧的神情,脸上的五官也会因为强烈的气流而被吹变形。
沿途小木屋被火箭车经过带来的强大气流摧毁
连石拱山也会因火箭车的震动而崩塌,若没有及时穿越,就只能一飞上天了。
火箭车经过大桥时将其震碎是整个Demo中最为震撼的场景是,接下来让我们查看这些效果是如何实现的:
打开重力加速度显示,可以看到火箭车的并非是一个整体,它的几乎每一部分都有独立的物理计算系统,承受独立的重力加速度,单独受其影响。当火箭车向前行进时,显然这些独立物理模块的重力都是指向前方的,只要任何一个模块承受的重力超过了它的自身的设定值,就会受重力影响而改变形态或位置。所以在加速过程中,火箭车上时常会有一些小零件掉落,如果加速过于剧烈,则可能整个解体。
当路边木屋被吹散时,可以看到数不清的灰尘及碎片都有其独立的建模。
大桥框架的每一段钢筋都有独立的物理系统,与之前的道理相同,每一个系统都会因各自受到的力而发生改变。
当大桥崩塌时可以看到所有具备独立物理系统的钢筋碎片都会根据重力加速度的事实逻辑运动,图中的细小箭头就代表这些碎片所受到的力的方向,它们因各自所处的位置和受力的不同而指向四面八方。
无果没有支持PhysX的CUDA矩阵,很难想象如此惊人的物理计算谁能胜任。
没有PhysX就不需要N卡了么?
PhysX游戏可以通过硬件接口调用强大的CUDA矩阵来完成超级复杂的重力,风力,摩擦力包括向心力在内的各种物理属性计算。这样一来非PhysX的物理计算只能交由CPU来运算,流畅度也是根据CPU的处理能力和物理计算量的多少而定。那么回到我们刚才的问题,是不是CPU计算的物理游戏就不需要CUDA架构的NVIDIA显卡了呢?
曲面细分和物理效果带来逼真的画质体验
以往的测试中,笔者会涉及到基于《地铁2033》这款游戏,这款游戏来自乌克兰的一个游戏小组,该游戏以场景逼真,特效华丽写实,渲染量繁重而著称,被称为继《孤岛危机》之后又一《显卡危机》。
笔者发现N卡运行《地铁2033》和同性能档次的A卡帧数其实相差无几,但是在用A卡玩的时候不敢乱扔手雷,甚至都不敢轻易的中枪,因为一旦手雷爆炸,尘土飞扬的时候,无论使用什么级别的A卡,帧数立刻锐减至10,11帧左右,然后等云消雾散时才能恢复帧数,即便是关闭了游戏中的PhysX选项也是如此。
某一爆炸场景帧数表现
我们看从顶级的A卡旗舰到中端型号甚至是低端型号,凡是在烟尘离子大量出现的时候,帧数表现均是一样,也就是说此时的瓶颈出在了负担物理运算的CPU上,而N卡则是按照性能以此增加或减少。
通吃游戏CUDA架构不可或缺
对于显卡成像的原理,大家多多少少都有所了解,其实一幅生动的画面就是由多个三角形组成、拼合在一起并进行着色处理来实现的。
简单来说,一个三角形是由X,Y,W三点坐标以及Z轴组成,这个处理过程叫做顶点渲染。
打散的木屑
爆炸的铁屑 弹片
散落的石块
在Physics游戏中,出现类似上图的这些画面时,会首先根据制定并计算出爆炸或者是碎裂等一些列物理作用的物体轨迹,再在做顶点和着色处理生成图像,一条流水线缺一不可,卡在任何一个环节上都会造成严重的卡顿或者不流畅。不管是不是PhysX类型的游戏,还是其他类型的Physics游戏,A卡均不能参与该运算,而交由CPU运算的话,即便计算量再小也足以让CPU不堪重负。
因此并不是只有PhysX游戏NVIDIA的CUDA才可以给与物理运算方面的加速,只要是物理方面的计算,N卡均可以提供加速支持,只是之前的概念混淆了而已——PhysX是NVIDIA显卡的专属引擎,并不是NVIDIA显卡只能做PhysX运算,这是两码事。
网友评论