Loading AI tools
实时物理引擎软件 来自维基百科,自由的百科全书
PhysX是一套由AGEIA设计的执行复杂的物理运算的PPU,又可以代表一款开源[2]的实时物理引擎SDK。后为Nvidia GameWorks软件套装的一部分。
![]() | |
原作者 | NovodeX AG (ETH Zurich) |
---|---|
开发者 | Nvidia Corporation (2008-至今) AGEIA Technologies (2004-2008) NovodeX AG (2001-2004) |
当前版本 |
|
原始码库 | https://github.com/NVIDIA-Omniverse/PhysX (5.x) https://github.com/NVIDIAGameWorks/PhysX (4.x) |
编程语言 | C++ |
操作系统 | Microsoft Windows, macOS, Linux, PlayStation 2, PlayStation 3, PlayStation 4, Xbox 360, Xbox One, Wii, iOS, Android |
许可协议 | BSD授权条款 |
网站 | 开发者网站 开发文档 |
最初,支持PhysX的游戏旨在通过由Ageia设计的PhysX PPU扩展卡进行加速。AGEIA声称,PhysX将会使设计师在开发游戏的过程中使用复杂的物理效果,而不需要像以往那样耗费漫长的时间开发一套物理引擎。以往使用了物理引擎,还会使一些配置较低的电脑无法流畅运行游戏。AGEIA更宣称,PhysX执行物理运算的效率比当前的CPU与物理处理软件的组合高出100倍。在Nvidia收购Ageia之后,专用的PhysX扩展卡停产,取而代之的是在支持CUDA的GeForce GPU上运行API。在这两种情况下,硬件加速使得可以将物理计算从CPU中转移,从而使CPU能够执行其他任务。
今天,PhysX和其他物理引擎被广泛应用于许多游戏中,因为它们使得游戏开发者无需编写自己的代码来实现物理模拟,例如模拟软体动力学。[3]
如今被称为PhysX的物理引擎起源于一个名为NovodeX的物理引擎。该引擎由瑞士公司NovodeX AG开发,该公司是苏黎世联邦理工学院(ETH Zurich)的一个衍生公司。[4] 2004年,Ageia收购了NovodeX AG,并开始开发一种可以加速物理计算、辅助CPU的硬件技术。Ageia将这项技术命名为PhysX,SDK也从NovodeX改名为PhysX,加速器卡被称为PPU(物理处理单元)。[5]
在开发过程中,第一个使用PhysX技术的游戏是《斯大林地铁站》(The Stalin Subway),于2005年9月在俄罗斯的游戏商店独占上架。[6]
2008年,图形技术厂商Nvidia收购了Ageia。[7] Nvidia开始在其GeForce系列显卡上启用PhysX硬件加速功能[8],并最终放弃对Ageia PPU的支持。
PhysX SDK 3.0于2011年5月发布,对SDK进行了大量重写,带来了诸如更高效的多线程和适用于所有支持平台的统一代码库等改进。[3]
在2015年的游戏开发者大会(GDC 2015)上,Nvidia将PhysX的原始码放在GitHub上,使用者需要在developer.nvidia.com进行注册。[9]这个专有的SDK向开发者免费提供,无论是商业还是非商业用途,在Windows、Linux、macOS、iOS和Android平台上都可以使用。[10]
PhysX引擎和SDK适用于Microsoft Windows、macOS、Linux[11] 、PlayStation 3[13][14] 、PlayStation 4[15] 、Xbox 360[16] 、Xbox One[17]、 Wii[18]、iOS和Android[11]。
PhysX是一个多线程物理模拟SDK。它支持刚体动力学、软体动力学、布娃娃系统和角色控制器、车辆动力学、粒子模拟和体积流体模拟。
物理处理单元(PPU)是一种专门设计的处理器,旨在减轻CPU的计算负担,特别是涉及物理的计算。这概念类似于对上GPU,但在早期的计算机中,GPU用于处理矢量图形,并且延伸到3D图形。但GPU对物理处理无能为力,故目前大部分物理处理都交给CPU处理,这无疑是加重了CPU本来就不轻的负担。PhysX PPU以PCI或PCIe卡的形式由ASUS[19] 、BFG Technologies[20][21]、 Dell[22]和ELSA Technology[23]等厂商提供给消费者。
自PhysX SDK 2.8.3版本开始,不再支持并不再生产PPU卡。[24]Ageia设计的PhysX PPU独立卡的最后版本大致与专用的9800GTX具有相同的PhysX性能。[25]
在Nvidia收购Ageia之后,PhysX的开发偏离了PPU扩展卡,而是专注于现代GPU的GPGPU能力。
现代GPU非常擅长处理和显示计算机图形,其高度并行的结构使它们比通用CPU更有效地加速使用PhysX进行物理模拟。
任何支持CUDA的GeForce图形卡(8系列及以上),并至少具有32个核心和至少256MB专用图形内存的图形卡[26])都可以利用PhysX,无需安装专用的PhysX卡。
有趣的是,据说NVIDIA在当时透过第三开发者,有意让ATI的显卡支持PhysX运算,AMD官方未对此表态。后来,AMD宣布旗下产品会被Havok物理引擎优化,它是PhysX物理引擎的竞争对手。
NVIDIA在GDC 2009上介绍了APEX PhysX,它允许艺术家更高效的创作物理内容。[27]
Nvidia APEX技术是围绕PhysX SDK构建的多平台可扩展动力学框架。它首次在2010年8月的《黑手党II》中引入。[28]
Nvidia的APEX包括以下模块:APEX Destruction、APEX Clothing、APEX Particles、APEX Turbulence、APEX ForceField,以及2011年停止开发的APEX Vegetation。[29][30]
从版本1.4.1开始,APEX SDK已被弃用。[31]
FleX是一种基于粒子的实时视觉效果模拟技术。传统上,视觉效果是使用专门的刚体、流体、服装等专用求解器创建的元素的组合制作的。由于FleX对所有对象类型都使用统一的粒子表示,它使得不同的模拟物质可以无缝地相互作用。这种统一的物理求解器是离线计算机图形的重要组成部分,其中诸如Autodesk Maya的nCloth和Autodesk Softimage的Lagoa等工具被广泛使用。FleX的目标是利用GPU的能力将这些离线应用程序的功能带入实时计算机图形领域。[32]
于2010年7月5日,Real World Technologies发表了一篇关于PhysX架构的分析[33]。根据这篇分析,当时在PhysX应用程序中使用的大部分代码都基于x87CPU指令,没有进行任何多线程优化。这可能导致在CPU上运行PhysX代码时性能显著下降。文章建议使用SSE指令对PhysX进行重写,这可能会大大减少CPU PhysX和GPU PhysX之间的性能差距。
作为对Real World Technologies分析的回应,PhysX的产品经理Mike Skolones表示[34],SSE支持被抛在了后面,因为大多数游戏首先是为游戏主机开发,然后再移植到PC上。因此,即使几乎没有进行优化,现代计算机运行这些游戏的速度也比游戏机快得多,效果也更好。
Nvidia的高级公关经理Bryan Del Rizzo解释说,多线程已经在CPU PhysX 2.x中可用,开发人员可以利用它。他还表示,自动多线程和SSE将在PhysX SDK的第3版中引入。[35]
PhysX SDK 3.0于2011年5月发布,代表了SDK的重大改写,带来了诸如更高效的多线程和统一的代码基础等改进。[3]
PhysX技术被诸如虚幻引擎(从第3代开始)、Unity、Gamebryo、Vision Engine(从第6代开始)、Instinct Engine[36]、Panda3D、Diesel、Torque、HeroEngine和BigWorld等游戏引擎所使用。[26]
作为为数不多的主要物理引擎之一,PhysX被用于许多游戏中,例如巫师3:狂猎,星际战甲,杀戮空间2,辐射4,蝙蝠侠:阿卡姆骑士,行星边际2, 和无主之地2。这些游戏大多使用CPU来处理物理模拟。
其他支持PhysX的软件包括: