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). 

外部連結

編輯