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