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。在这两种情况下,硬件加速使得可以将物理计算从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向开发者免费提供,无论是商业还是非商业用途,在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

物理处理单元(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人民币

GPU

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

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

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

其他软件

其他支持PhysX的软件包括:

  • Active Worlds(AW),一个在Windows上运行的3D虚拟现实平台
  • Amazon Lumberyard,由亚马逊开发的3D游戏开发引擎[40]
  • Autodesk 3ds MaxAutodesk MayaAutodesk Softimage,计算机动画套件[41][42][43]
  • DarkBASIC Professional(配备DarkPHYSICS升级),一个面向游戏开发的编程语言[44]
  • DX Studio,用于创建交互式3D图形的集成开发环境[45]
  • 由前Sony Online Entertainment开发的游戏引擎Forgelight Engine。
  • Futuremark的3DMark06和Vantage 基准测试工具[46]
  • Microsoft Robotics Studio,一个用于机器人控制和模拟的环境[47]
  • Nvidia的超音速雪橇和狂野急流乘坐,技术演示
  • OGRE(通过NxOgre包装器),一个开源渲染引擎
  • Physics Abstraction Layer,一个物理模拟API抽象系统(提供PhysX的COLLADAScythe Physics Editor支持)[48]
  • Rayfire,用于Autodesk 3ds Max的插件,允许碎裂和其他物理模拟
  • 物理引擎评估实验室,一个旨在评估、比较和基准测试物理引擎的工具。[49]
  • Epic Games开发的虚幻引擎游戏开发软件。从Unreal Engine 4.26开始,PhysX已正式弃用。[50]
  • 由Unity ApS开发的Unity。 Unity的数据导向技术堆栈不使用PhysX。[51]

測試軟體

網站oZone3D.net已推出相關的測試軟體,名為FluidMark,用來考察電腦的物理計算性能。[52]

参见

参考资料

  1. https://www.nvidia.com/de-de/drivers/physx/physx-9-21-0713-driver/.
  2. . Engadget. [2022-04-05]. (原始内容存档于2024-05-13) (美国英语).
  3. . Nvidia. [2011-06-03]. (原始内容存档于2011-05-24).
  4. . ETH Zurich. [2018-12-04]. (原始内容存档于2018-01-08).
  5. César A. Berardini. . 2005-04-12 [2011-06-08]. (原始内容存档于2011-09-21).
  6. . MobyGames. [2023-09-06]. (原始内容存档于2024-05-15) (英语).
  7. (新闻稿). NVIDIA Corporation. 2008-02-13 [2009-03-18]. (原始内容存档于2019-03-28).
  8. . Phoronix. Phoronix Media. 2008-02-14 [2008-02-14]. (原始内容存档于2022-05-16).
  9. . Nvidia. [2015-03-06]. (原始内容存档于2015-03-23).
  10. . Nvidia. [2017-09-03]. (原始内容存档于2017-01-07).
  11. . NVIDIA Developer. 2018-11-28 [2018-12-05]. (原始内容存档于2018-12-05) (英语).
  12. . Nvidia. [2023-06-15]. (原始内容存档于2023-05-28).
  13. (PDF) (新闻稿). Sony Computer Entertainment, Inc. 2005-07-21 [2006-08-23]. (原始内容 (PDF)存档于2006-03-11).
  14. . Kotaku. 2009-03-18 [2024-02-06]. (原始内容存档于2019-01-14).
  15. Lowe, Scott. . 2013-03-07 [2024-02-06]. (原始内容存档于2024-02-06).
  16. . Nvidia.com. [2011-11-30]. (原始内容存档于2009-04-29).
  17. . Nvidia.com. [2014-11-09]. (原始内容存档于2014-11-09).
  18. . Gamasutra. 2009-03-19 [2011-11-30]. (原始内容存档于2022-05-28).
  19. . 2006-07-12 [2024-02-06]. (原始内容存档于2022-08-12).
  20. . (原始内容存档于2006-04-26).
  21. . 2007-10-01 [2024-02-06]. (原始内容存档于2024-05-24).
  22. . Cnet. [2024-02-06]. (原始内容存档于2021-03-08).
  23. . [2024-02-06]. (原始内容存档于2024-02-07).
  24. . PhysXInfo.com. 2011-01-17 [2011-11-30]. (原始内容存档于2011-11-24).
  25. . www.pcgameshardware.com. 2009-01-26 [2024-02-06]. (原始内容存档于2016-03-04).
  26. . Nvidia.com. [2015-12-10]. (原始内容存档于2019-08-02).
  27. . [2010-09-20]. (原始内容存档于2009-08-31).
  28. Olin Coles. . BenchmarkReviews.com. [2010-08-23]. (原始内容存档于2011-07-07).
  29. . [2011-06-08]. (原始内容存档于2013-12-11).
  30. . PhysXInfo.com. [2013-07-21]. (原始内容存档于2021-11-30).
  31. . gameworksdocs.nvidia.com. [2018-12-05]. (原始内容存档于2024-02-06).
  32. . NVIDIA Developer. 2015-08-13 [2019-04-17] (英语).
  33. . www.realworldtech.com. [2024-02-06]. (原始内容存档于2012-05-24).
  34. Stokes, Jon. . Arstechnica.com. 2010-07-08 [2011-11-30]. (原始内容存档于2010-12-12).
  35. . Thinq.co.uk. [2011-11-30]. (原始内容存档于2011-11-28).
  36. . Instinctengine.com. [2013-10-04]. (原始内容存档于2015-02-13).
  37. Matt Butrovich. . 《The Tech Report》. 2009-02-12 [2011-04-06]. (原始内容存档于2012-06-27).
  38. Rich Brown. . 《cNET.com》. 2009-09-21 [2011-04-06]. (原始内容存档于2012-10-25).
  39. Matthew Murray. . 《ExtremeTech》. 2010-09-02 [2011-04-06]. (原始内容存档于2010-12-30).
  40. . [2024-02-06]. (原始内容存档于2020-09-22).
  41. Jim Thacker. . cgchannel.com. 2011-03-01 [2011-04-06]. (原始内容存档于2024-02-06).
  42. . Beyond3D.com. 2011-03-01 [2011-04-06]. (原始内容存档于2017-07-08).
  43. Randall Hand. . Vizworld.com. 2010-05-05 [2011-04-06]. (原始内容存档于2024-02-06).
  44. (新闻稿). The Game Creators. 2006-03-22 [2006-09-23]. (原始内容存档于2006-04-27).
  45. . DX Studio. Worldweaver. [2008-11-02]. (原始内容存档于2009-07-05).
  46. . FindArticles (CBS Interactive). BusinessWire. 2006-09-27 [2008-11-03]. (原始内容存档于2016-01-11).
  47. . 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, , 2019-03-22 [2019-03-22], (原始内容存档于2024-03-31)
  50. . 2020-09-24 [2024-02-06]. (原始内容存档于2021-01-20).
  51. . [2024-02-06]. (原始内容存档于2022-05-13).
  52. . [2008-08-12]. (原始内容存档于2016-03-04).

外部链接

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.