事实上在PhysX设计之初,它是只支持CPU和PPU物理加速的,不过在被收购之后,NVIDIA通过GPU CUDA架构将其重新编译,并打包进NVIDIA的驱动程序中进行发布。当然,尽管NVIDIA表示今后将大力发展GPU物理加速,但这并不表示PhysX引擎排斥CPU或者CPU+GPU的综合解决方案。
通过CUDA通用接口,PhysX引擎将NVIDIA GPU中的Thread Scheduler(线程管理器)模拟成Control Engine(控制引擎CE),而Streaming Processors来模拟Vector Processing Engine(矢量处理引擎,VPE),其中CE控制引擎负责任务的指派,相当于PhysX中的主管机构,而真正的物理运算任务则是由VPE矢量引擎来完成,最后通过Data Movement Engine(数据移动引擎DME)输出。通过HAL翻译层来实现软、固质体动力(Soft or Rigid Body Dynamics)、通用碰撞侦测(Universal Collision Detection)、有限元素分析(Finite Element Analysis)、流体动力(Fluid Dynamics)、毛发模拟(Hair Simulation)以及更先进的布料模拟(Cloth Simulation)、自然模拟(Natural Motion)等在内的技术,最终完成物理加速效果。
NVIDIA GPU高度并行设计的CUDA架构非常适合PhysX物理加速
而多线程PhysX引擎专为大型并行环境中的硬件加速而设计。Ageia的PhysX处理器只有10个内核,而现在NVIDIA采用CUDA架构的GPU则最多达512个内核。因此,NVIDIA的这些高度并行设计的GPU非常适合利用PhysX软件。最重要的是,由于游戏物理学具有高度并行和互动的特性,因此GPU架构自然比CPU更加适合这种计算工作。
除了GPU架构适合PhysX物理加速方以外,NVIDIA特有的SLI技术也是一大优势。当两颗、三颗或四颗搭配的GPU以SLI的方式运行,PhysX在一颗GPU上运行,而图形渲染则在所有GPU上运行。此时的驱动程序能够优化所有GPU的可用资源,从而达到PhysX计算与图形渲染之间的平衡。因此,用户在SLI配置下能够获得大幅提升的帧速率以及更佳的整体体验。
说了这么多,那么物理加速究竟能够带来哪些好处呢?整体来说,物理加速的主要作用,就是在游戏中反应物体在周围环境的影响下显现出最真实的物理效果并且能够做出交互性应,而并非按照事先设定好的固定触发效果,让游戏玩家获得最逼真的游戏体验。通过查阅之前诸多的游戏资料,笔者发现通过对PhysX技术的支持,NVIDIA的GPU更能为我们实现将以下7种效果:
1. 尘土飞扬,碎渣四溅的大量粒子运动所形成的爆炸效果;
2. 设计结构复杂的各种几何模型,以完成更加逼真的物理运动和交互动作;
3. 环绕在运动中的物体周围的大量翻腾涌动的浓烟和尘雾效果;
4. 逼真细腻的河水、泥石流、岩浆等流体运动模拟;
5. 衣物、草丛、树叶之类软性物体能随风自然飘动效果;
6. 衣物,旗帜等软性物体因外界各种影响做出不同的撕裂或变形效果;
7. 刚性物体之间相互碰撞的运动计算,一定力度之下形成拟真的成千上万个碎片运动。
所以物理效果是未来游戏中最重要的一个方面,它涉及游戏中物体移动、互动以及对周围环境作出反应的方式。在当今许多游戏中如果没有物理效果,物体将无法按照玩家想象中的方式或像现实生活的方式运动。当前,大多数动作还仅限于预先定义好的、或“千篇一律”的动画,并且由游戏中的特定事件触发,例如枪炮射击在墙上等等。即使最强大的武器也只能在最薄的墙上留下一个斑点而已,每一个被你干掉的敌人都以预先定义好的相同模式倒下。玩家看到的只是精美的游戏画面而已,但却失去了体验真正身临其境所必需的真实感。