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使用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向開發者免費提供,無論是商業還是非商業用途,在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 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的軟體包括:
- Active Worlds(AW),一個在Windows上執行的3D虛擬實境平台。[來源請求]
- Amazon Lumberyard,由亞馬遜開發的3D遊戲開發引擎。[40]
- Autodesk 3ds Max、Autodesk Maya和Autodesk 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的SuperSonic Sled和Raging Rapids Ride技術演示。
- OGRE(通過NxOgre包裝器),一個開源彩現引擎。 [來源請求]
- Physics Abstraction Layer,一個物理模擬API抽象系統(為PhysX提供COLLADA和Scythe Physics Editor支援)。[48]
- Rayfire,用於Autodesk 3ds Max的插件,允許碎裂和其他物理模擬[來源請求]
- The Physics Engine Evaluation Lab,一個旨在評估、比較和基準測試物理引擎的工具。[49]
- 由Epic Games開發的虛幻引擎遊戲開發軟體。從Unreal Engine 4.26開始,PhysX已正式棄用。[50]
- 由Unity ApS開發的Unity引擎。 其DOTS(Data-Oriented Technology Stack)不使用PhysX。[51]
測試軟體
參見
參考資料
外部連結
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.