PhysX,是一套由AGEIA公司开发的物理运算引擎,简而言之,就是令虚拟世界中的物体运动符合真实世界的物理定律,以使游戏更加富有真实感。PhysX可以由CPU计算,但其程序本身在设计上还可以调用独立的浮点处理器(例如GPU和PPU)来计算,也正因为如此,它可以轻松完成像流体力学模拟那样的大计算量的物理模拟计算。 PhysX物理引擎可以在包括Windows,Linux,Xbox360,Playstation3,Mac等在内的全平台上运行。
【资料图】
AGEIA时代的PhysX
PhysX物理运算引擎由五名年轻的技术人员开发,他们成立了AGEIA公司。由于PhysX物理引擎在设计上就并不适合用CPU去计算,因此AGEIA公司还为PhysX引擎设计了专门的运算硬件,PhysX物理加速卡。PhysX物理加速卡的核心被称为PPU,即物理处理器(Physics processing Unit)。PPU在AGEIA公司被nVIDIA公司收购后已停止生产。
nVIDIA时代的PhysX
2008年,Nvidia收购了AGEIA。正式将PhysX技术划入旗下。nVIDIA PhysX承袭自AGEIA PhysX,但Nvidia在此基础上推出了nVIDIA PhysX物理加速,并将PhysX物理加速功能移植到nVIDIA GPU中,用户不必额外购买PhysX物理加速卡就能享受到PhysX物理加速功能。借助CUDA架构,nVIDIA重新编写了PhysX物理加速程序,将PhysX物理加速引擎从AGEIA PPU移植到了nVIDIA GPU上。
所谓PhysX物理加速,是指相对于CPU来讲,GPU加快了PhysX物理引擎的计算速度。并不是说PhysX引擎只能由nVIDIA GPU处理。
nVIDIA劣化CPU执行PhysX效率
如果使用CPU处理PhysX时,PhysX引擎只会调用CPU单线程计算。RealWorld Technologies网站的作者David Kanter使用Intel的VTune进程查看工具分析了多款支持PhysX特效的游戏,发现当这些游戏使用CPU处理物理特效时,大部分的代码使用的仍然是老旧的x87浮点算数指令,而不是效率高得多的SSE指令(SSE指令的完成同样任务的速度能达到x87指令的1.5-2倍)。
支持PhysX的游戏
目前为止,在全平台上(PC,Xbox,Playstation)共有约260种游戏采用了PhysX引擎。其中在PC平台上,共有226种游戏采用PhysX引擎(截止2011.7.26)。