PhysX

实时物理引擎软件

PhysX是一套由AGEIA设计的用于处理复杂物理运算的物理处理器(PPU),如今代表一款开源[2]实时物理引擎SDK,是Nvidia GameWorks软件套装的一部分。

PhysX by NVIDIA
原作者NovodeX AG (ETH Zurich)
开发者Nvidia Corporation
(2008-至今)
AGEIA Technologies
(2004-2008)
NovodeX AG
(2001-2004)
当前版本
  • 9.21.0713(2021年10月15日;稳定版本)[1]
编辑维基数据链接
源代码库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授权条款
网站开发者网站
开发文档
BFG科技推出的一张PhysX显卡

最初,支持PhysX的游戏通过由AGEIA设计的PhysX PPU扩展卡进行硬件加速

AGEIA声称,PhysX将会让开发者在开发游戏的过程中能够直接使用复杂的物理效果,而不需要像以往那样耗费漫长的时间开发一套物理引擎。以往使用了物理引擎,还会使一些配置较低的电脑无法流畅运行游戏。AGEIA更宣称,PhysX执行物理运算的效率比当前的CPU与软件物理处理的组合高出100倍。

在Nvidia收购AGEIA之后,专用的PhysX扩展卡停产,取而代之的是在支持CUDAGeForce GPU上通过API使用PhysX。在这两种情况下,硬件加速可以将物理计算的任务从CPU中转移到GPU,从而使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月发布,对其进行了大量重写,带来了诸如更高效的多线程和适用于所有支持平台的统一代码库等改进。[3]

在2015年的游戏开发者大会(GDC 2015)上,NVIDIA将PhysX的源代码放在GitHub上,使用者需要在developer.nvidia.com进行注册。[9]这个专有的SDK向开发者免费提供,无论是商业还是非商业用途,在WindowsLinuxmacOSiOSAndroid等平台上都可以使用。[10]

在2018年12月3日,PhysX在BSD许可证下成为开源,但此变更仅适用于计算机和移动平台。[11]

在2022年11月8日,开源版本被更新为PhysX 5,仍然采用相同的BSD许可证[12]

特性

编辑

PhysX引擎和SDK适用于Microsoft WindowsmacOSLinux[11]PlayStation 3[13][14]PlayStation 4[15]Xbox 360[16]Xbox One[17]Wii[18]iOSAndroid[11]

PhysX是一个多线程物理模拟SDK。它支持刚体动力学、软体动力学、布娃娃系统和角色控制器、车辆动力学粒子模拟体积流体模拟

硬件加速

编辑

物理处理单元(PPU)是一种专门设计的处理器,旨在减轻CPU的计算负担,特别是涉及物理的计算。这概念类似于对上GPU,但在早期的计算机中,GPU用于处理矢量图形,并且延伸到3D图形。但GPU对物理处理无能为力,故目前大部分物理处理都交给CPU处理,这无疑是加重了CPU本来就不轻的负担。PhysX PPU以PCIPCIe卡的形式由ASUS[19]BFG Technologies[20][21]Dell[22]ELSA Technology[23]等厂商提供给消费者。

自PhysX SDK 2.8.3版本开始,不再支持并不再生产PPU卡。[24]AGEIA设计的PhysX PPU独立卡的最后版本大致与专用的9800GTX具有相同的PhysX性能。[25]

当年PhysX物理加速卡规格

编辑
  • 内存:128 MB GDDR3 RAM华硕据说有发行256 MB GDDR3 RAM的版本)
  • 接口界面:PCIPCI Express
  • 球体碰撞能力:5.3亿次每秒(最大能力)
  • 浮点运算能力:530,000次每秒(最大能力)
  • 价格:220英镑 300美元 2000人民币 9500台币(估计)
    • BFG推出的PhysX扩展卡售价为2000人民币

在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 APEX 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]

NVIDIA FleX

编辑

FleX是一种基于粒子的实时视觉效果模拟技术。传统上,视觉效果是使用专门的刚体、流体、服装等专用求解器创建的元素的组合制作的。由于FleX对所有对象类型都使用统一的粒子表示,它使得不同的模拟物质可以无缝地相互作用。这种统一的物理求解器是离线计算机图形的重要组成部分,其中诸如Autodesk Maya的nCloth和Autodesk Softimage的Lagoa等工具被广泛使用。FleX的目标是利用GPU的能力将这些离线应用程序的功能带入实时计算机图形领域。[32]

来自Real World Technologies的批评

编辑

于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代开始)、UnityGamebryo、Vision Engine(从第6代开始)、Instinct Engine[36]、Panda3D、Diesel、Torque、HeroEngine和BigWorld游戏引擎所使用。[26]

作为为数不多的主要物理引擎之一,PhysX被用于许多游戏中,例如巫师3:狂猎星际战甲杀戮空间2辐射4蝙蝠侠:阿卡姆骑士行星边际2无主之地2。这些游戏大多使用CPU来处理物理模拟。

支持硬件加速PhysX的游戏通常包含额外的效果,如可撕裂的布料、动态烟雾或模拟的粒子碎片。[37][38][39]

其他软件

编辑

其他支持PhysX的软件包括:

测试软件

编辑

网站oZone3D.net已推出相关的测试软件,名为FluidMark,用来考察电脑的物理计算性能。[52]

参见

编辑

参考资料

编辑
  1. ^ https://www.nvidia.com/de-de/drivers/physx/physx-9-21-0713-driver/.
  2. ^ NVIDIA PhysX SDK 4.1. Engadget. [2022-04-05]. (原始内容存档于2024-05-13) (美国英语). 
  3. ^ 3.0 3.1 3.2 NVIDIA宣布发布PhysX SDK V3. Nvidia. [2011-06-03]. (原始内容存档于2011-05-24). 
  4. ^ NovodeX AG. ETH Zurich. [2018-12-04]. (原始内容存档于2018-01-08). 
  5. ^ César A. Berardini. AGEIA Technologies Interview. 2005-04-12 [2011-06-08]. (原始内容存档于2011-09-21). 
  6. ^ Physics Engine: PhysX. MobyGames. [2023-09-06]. (原始内容存档于2024-05-15) (英语). 
  7. ^ NVIDIA completes Acquisition of AGEIA Technologies (新闻稿). NVIDIA Corporation. 2008-02-13 [2009-03-18]. (原始内容存档于2019-03-28). 
  8. ^ PhysX For CUDA, Linux Support A Given?. Phoronix. Phoronix Media. 2008-02-14 [2008-02-14]. (原始内容存档于2022-05-16). 
  9. ^ GitHub上的PhysX. Nvidia. [2015-03-06]. (原始内容存档于2015-03-23). 
  10. ^ 截至2017年1月7日的PhysX SDK. Nvidia. [2017-09-03]. (原始内容存档于2017-01-07). 
  11. ^ 11.0 11.1 11.2 PhysX SDK. NVIDIA Developer. 2018-11-28 [2018-12-05]. (原始内容存档于2018-12-05) (英语). 
  12. ^ Open Source Simulation Expands with NVIDIA PhysX 5 Release. Nvidia. [2023-06-15]. (原始内容存档于2023-05-28). 
  13. ^ Sony Computer Entertainment Enters Into Strategic Licensing Agreement With AGEIA (PDF) (新闻稿). Sony Computer Entertainment, Inc. 2005-07-21 [2006-08-23]. (原始内容 (PDF)存档于2006-03-11). 
  14. ^ Playstation 3 gets free PhysX from Nvidia. Kotaku. 2009-03-18 [2024-02-06]. (原始内容存档于2019-01-14). 
  15. ^ Lowe, Scott. Nvidia Announces PhysX Support for PlayStation 4. 2013-03-07 [2024-02-06]. (原始内容存档于2024-02-06). 
  16. ^ PhysX – Overview – GeForce. Nvidia.com. [2011-11-30]. (原始内容存档于2009-04-29). 
  17. ^ NVIDIA Announces PhysX Support for Microsoft Xbox One Game Console. Nvidia.com. [2014-11-09]. (原始内容存档于2014-11-09). 
  18. ^ News – Pre-GDC: Nvidia PhysX Approved For Wii Developers. Gamasutra. 2009-03-19 [2011-11-30]. (原始内容存档于2022-05-28). 
  19. ^ Asus 128mb PhysX Card Review/Preview. 2006-07-12 [2024-02-06]. (原始内容存档于2022-08-12). 
  20. ^ AGEIA And BFG Technologies Enter Into Retail Distribution Agreement. (原始内容存档于2006-04-26). 
  21. ^ BFG Ageia PhysX Card Review. 2007-10-01 [2024-02-06]. (原始内容存档于2024-05-24). 
  22. ^ AGEIA PhysX - graphics card - AGEIA PhysX - 128 MB Specs. Cnet. [2024-02-06]. (原始内容存档于2021-03-08). 
  23. ^ ELSA teams up with Ageia. [2024-02-06]. (原始内容存档于2024-02-07). 
  24. ^ How to restore PPU support with latest PhysX Drivers | PhysXInfo.com – PhysX News. PhysXInfo.com. 2011-01-17 [2011-11-30]. (原始内容存档于2011-11-24). 
  25. ^ English articles from PC Games Hardware. www.pcgameshardware.com. 2009-01-26 [2024-02-06]. (原始内容存档于2016-03-04). 
  26. ^ 26.0 26.1 PhysX FAQ. Nvidia.com. [2015-12-10]. (原始内容存档于2019-08-02). 
  27. ^ 存档副本. [2010-09-20]. (原始内容存档于2009-08-31). 
  28. ^ Olin Coles. Mafia-II Video Game Performance Review. BenchmarkReviews.com. [2010-08-23]. (原始内容存档于2011-07-07). 
  29. ^ APEX. [2011-06-08]. (原始内容存档于2013-12-11). 
  30. ^ Category:APEX - PhysX Wiki. PhysXInfo.com. [2013-07-21]. (原始内容存档于2021-11-30). 
  31. ^ APEX 1.4.1 - Release Notes (APEX has been deprecated). gameworksdocs.nvidia.com. [2018-12-05]. (原始内容存档于2024-02-06). 
  32. ^ NVIDIA FleX. NVIDIA Developer. 2015-08-13 [2019-04-17] (英语). 
  33. ^ PhysX87: Software Deficiency. www.realworldtech.com. [2024-02-06]. (原始内容存档于2012-05-24). 
  34. ^ Stokes, Jon. Did NVIDIA cripple its CPU gaming physics library to spite Intel?. Arstechnica.com. 2010-07-08 [2011-11-30]. (原始内容存档于2010-12-12). 
  35. ^ Nvidia: We're not hobbling CPU PhysX | thinq_ | Page 1. Thinq.co.uk. [2011-11-30]. (原始内容存档于2011-11-28). 
  36. ^ Instinct Software - Instinct Engine SDK. Instinctengine.com. [2013-10-04]. (原始内容存档于2015-02-13). 
  37. ^ Matt Butrovich. 《Mirror's Edge》中的PhysX探究. 《The Tech Report》. 2009-02-12 [2011-04-06]. (原始内容存档于2012-06-27). 
  38. ^ Rich Brown. Nvidia的PhysX让PC版《蝙蝠侠:阿卡姆骑士》值得等待. 《cNET.com》. 2009-09-21 [2011-04-06]. (原始内容存档于2012-10-25). 
  39. ^ Matthew Murray. 《黑手党2》:使用PhysX值得吗?. 《ExtremeTech》. 2010-09-02 [2011-04-06]. (原始内容存档于2010-12-30). 
  40. ^ PhysX - Lumberyard User Guide. [2024-02-06]. (原始内容存档于2020-09-22). 
  41. ^ Jim Thacker. Videos: Autodesk reveals new features in Maya 2012. cgchannel.com. 2011-03-01 [2011-04-06]. (原始内容存档于2024-02-06). 
  42. ^ 3ds Max 2012和Maya 2012增加了PhysX支持. Beyond3D.com. 2011-03-01 [2011-04-06]. (原始内容存档于2017-07-08). 
  43. ^ Randall Hand. NVidia PhysX和CUDA在Softimage 2011中. Vizworld.com. 2010-05-05 [2011-04-06]. (原始内容存档于2024-02-06). 
  44. ^ The Game Creators Integrate AGEIA PhysX Technology into DarkBASIC Professional (新闻稿). The Game Creators. 2006-03-22 [2006-09-23]. (原始内容存档于2006-04-27). 
  45. ^ 概述. DX Studio. Worldweaver. [2008-11-02]. (原始内容存档于2009-07-05). 
  46. ^ AGEIA Joins Futuremark's 3DMark Benchmark Development Program. FindArticles (CBS Interactive). BusinessWire. 2006-09-27 [2008-11-03]. (原始内容存档于2016-01-11). 
  47. ^ Simulation Overview. Microsoft Robotics Developer Center. Microsoft. 2012年3月 [2024-02-06]. (原始内容存档于2008-10-15). 
  48. ^ Boeing, Adrian. 引擎. Physics Abstraction Layer. [2007-11-18]. (原始内容存档于2024-02-06). 
  49. ^ Pierre-Terdiman, GitHub - Pierre-Terdiman/PEEL: Physics Engine Evaluation Lab., 2019-03-22 [2019-03-22], (原始内容存档于2024-03-31) 
  50. ^ Unreal Engine 4.26预览. 2020-09-24 [2024-02-06]. (原始内容存档于2021-01-20). 
  51. ^ Unity - 手册:物理. [2024-02-06]. (原始内容存档于2022-05-13). 
  52. ^ 首款PhysX物理基准测试工具:FluidMark 1.0.0. [2008-08-12]. (原始内容存档于2016-03-04). 

外部链接

编辑