PhysX

BFG科技推出的一張PhysX顯卡
PhysX是一套由AGEIA設計的用於處理複雜物理運算的物理處理器（PPU），如今代表一款開源的即時物理引擎SDK，是Nvidia GameWorks軟件套裝的一部分。
最初，支持PhysX的遊戲通過由AGEIA設計的PhysX PPU擴展卡進行硬件加速。
AGEIA聲稱，PhysX將會讓開發者在開發遊戲的過程中能夠直接使用複雜的物理效果，而不需要像以往那樣耗費漫長的時間開發一套物理引擎。以往使用了物理引擎，還會使一些配置較低的電腦無法流暢運行遊戲。AGEIA更宣稱，PhysX執行物理運算的效率比當前的CPU與軟件物理處理的組合高出100倍。
在Nvidia收購AGEIA之後，專用的PhysX擴展卡停產，取而代之的是在支持CUDA的GeForce GPU上通過API使用PhysX。在這兩種情況下，硬件加速可以將物理計算的任務從CPU中轉移到GPU，從而使CPU能夠執行其他任務。
如今，PhysX和其他物理引擎被廣泛應用於許多遊戲中，因為它們使得開發者無需從頭編寫自己的代碼來實現物理模擬，例如模擬軟體動力學。

**歷史**
如今被稱為PhysX的物理引擎起源於一個名為NovodeX的物理引擎。該引擎由瑞士公司NovodeX AG開發，該公司是蘇黎世聯邦理工學院（ETH Zurich）的一個衍生公司。 2004年，AGEIA收購了NovodeX AG，並開始開發一種可以輔助CPU加速物理運算的硬件技術。AGEIA將這項技術命名為PhysX，其SDK也從NovodeX改名為PhysX，加速卡被稱為PPU（物理處理單元）。
在開發過程中，第一個使用PhysX技術的遊戲是《斯大林地鐵站》（The Stalin Subway），於2005年9月在俄羅斯的遊戲商店獨佔上架。
2008年，圖形技術廠商NVIDIA收購了AGEIA。 NVIDIA開始在其GeForce系列顯卡上啟用PhysX硬件加速功能，並最終放棄對AGEIA PPU的支持。
PhysX SDK 3.0於2011年5月發佈，對其進行了大量重寫，帶來了諸如更高效的多線程和適用於所有支持平臺的統一代碼庫等改進。
在2015年的遊戲開發者大會（GDC 2015）上，NVIDIA將PhysX的源代碼放在GitHub上，使用者需要在developer.nvidia.com進行註冊。這個專有的SDK向開發者免費提供，無論是商業還是非商業用途，在Windows、Linux、macOS、iOS和Android等平臺上都可以使用。
在2018年12月3日，PhysX在BSD許可證下成為開源，但此變更僅適用於計算機和移動平臺。
在2022年11月8日，開源版本被更新為PhysX 5，仍然採用相同的BSD許可證。

**特性**
PhysX引擎和SDK適用於Microsoft Windows、macOS、Linux 、PlayStation 3 、PlayStation 4 、Xbox 360 、Xbox One、 Wii、iOS和Android。
PhysX是一個多線程物理模擬SDK。它支持剛體動力學、軟體動力學、布娃娃系統和角色控制器、車輛動力學、粒子模擬和體積流體模擬。

**硬件加速**

**PPU**
物理處理單元（PPU）是一種專門設計的處理器，旨在減輕CPU的計算負擔，特別是涉及物理的計算。這概念類似於對上GPU，但在早期的計算機中，GPU用於處理矢量圖形，並且延伸到3D圖形。但GPU對物理處理無能為力，故目前大部分物理處理都交給CPU處理，這無疑是加重了CPU本來就不輕的負擔。PhysX PPU以PCI或PCIe卡的形式由ASUS 、BFG Technologies、 Dell和ELSA Technology等廠商提供給消費者。
自PhysX SDK 2.8.3版本開始，不再支持並不再生產PPU卡。AGEIA設計的PhysX PPU獨立卡的最後版本大致與專用的9800GTX具有相同的PhysX性能。

**當年PhysX物理加速卡規格**
 內存：128 MB GDDR3 RAM（華碩據說有發行256 MB GDDR3 RAM的版本)- 接口界面：PCI或PCI Express- 球體碰撞能力：5.3億次每秒（最大能力）- 浮點運算能力：530,000次每秒（最大能力）- 價格：220英鎊  300美元  2000人民幣  9500臺幣（估計）
** BFG推出的PhysX擴展卡售價為2000人民幣

**GPU**
在NVIDIA收購AGEIA之後，PhysX的開發偏離了PPU擴展卡，而是專注於現代GPU的GPGPU能力。
現代GPU非常擅長處理和顯示計算機圖形，其高度並行的結構使它們比通用CPU更有效地加速使用PhysX進行物理模擬。
曾經任何支持CUDA的GeForce圖形卡（GeForce 8系列及以上），並至少具有32個核心和至少256MB專用圖形顯存的GPU都可以利用PhysX，無需安裝專用的PhysX卡。不過GeForce RTX 50系列顯卡不再支持Physx。
有趣的是，據說NVIDIA在當時通過第三方開發者，有意讓ATI的顯示卡支援PhysX運算，AMD官方未對此表態。後來，AMD宣佈旗下產品會被Havok物理引擎優化，它是PhysX物理引擎的競爭對手。

**NVIDIA APEX PhysX**
NVIDIA在GDC 2009上介紹了APEX PhysX，它允許藝術家更高效的創作物理內容。
Nvidia APEX技術是圍繞PhysX SDK構建的多平臺可擴展動力學框架。它首次在2010年8月的《黑手黨II》中引入。
Nvidia的APEX包括以下模塊：APEX Destruction、APEX Clothing、APEX Particles、APEX Turbulence、APEX ForceField，以及2011年停止開發的APEX Vegetation。
從版本1.4.1開始，APEX SDK已被棄用。

**NVIDIA FleX**
FleX是一種基於粒子的即時視覺效果模擬技術。傳統上，視覺效果是使用專門的剛體、流體、服裝等專用求解器創建的元素的組合製作的。由於FleX對所有對象類型都使用統一的粒子表示，它使得不同的模擬物質可以無縫地相互作用。這種統一的物理求解器是離線計算機圖形的重要組成部分，其中諸如Autodesk Maya的nCloth和Autodesk Softimage的Lagoa等工具被廣泛使用。FleX的目標是利用GPU的能力將這些離線應用程序的功能帶入即時計算機圖形領域。

**來自Real World Technologies的批評**
於2010年7月5日，Real World Technologies發表了一篇關於PhysX架構的分析。根據這篇分析，當時在PhysX應用程序中使用的大部分代碼都基於x86CPU指令，沒有進行任何多線程優化。這可能導致在CPU上運行PhysX代碼時性能顯著下降。文章建議使用SSE指令對PhysX進行重寫，這可能會大大減少CPU PhysX和GPU PhysX之間的性能差距。
作為對Real World Technologies分析的回應，PhysX的產品經理Mike Skolones表示，SSE支持被拋在了後面，因為大多數遊戲首先是為遊戲主機開發，然後再移植到PC上。因此，即使幾乎沒有進行優化，現代計算機運行這些遊戲的速度也比遊戲機快得多，效果也更好。
NVIDIA的高級公關經理Bryan Del Rizzo解釋說，多線程已經在CPU PhysX 2.x中可用，開發人員可以利用它。他還表示，自動多線程和SSE將在PhysX SDK的第3版中引入。
PhysX SDK 3.0於2011年5月發佈，代表了SDK的重大改寫，帶來了諸如更高效的多線程和統一的代碼基礎等改進。

**用法**

**遊戲**
PhysX技術被諸如虛幻引擎（從第3代開始）、Unity、Gamebryo、Vision Engine（從第6代開始）、Instinct Engine、Panda3D、Diesel、Torque、HeroEngine和BigWorld等遊戲引擎所使用。
作為為數不多的主要物理引擎之一，PhysX被用於許多遊戲中，例如巫師3：狂獵、星際戰甲、殺戮空間2，輻射4、蝙蝠俠：阿卡姆騎士、行星邊際2和無主之地2。這些遊戲大多使用CPU來處理物理模擬。
支持硬件加速PhysX的遊戲通常包含額外的效果，如可撕裂的布料、動態煙霧或模擬的粒子碎片。

**其他軟件**
其他支持PhysX的軟件包括：- Active Worlds（AW），一個在Windows上運行的3D虛擬現實平臺。date=December 2018- Amazon Lumberyard，由亞馬遜開發的3D遊戲開發引擎。- Autodesk 3ds Max、Autodesk Maya和Autodesk Softimage，計算機動畫套件。	- DarkBASIC Professional（配備DarkPHYSICS升級），一個面向遊戲開發的編程語言。- DX Studio，用於創建交互式3D圖形的集成開發環境。- 由前Sony Online Entertainment開發的遊戲引擎Forgelight Engine。- Futuremark的3DMark06和Vantage基準測試工具。- Microsoft Robotics Studio，一個用於機器人控制和模擬的環境。- NVIDIA的SuperSonic Sled和Raging Rapids Ride技術演示。- OGRE（通過NxOgre包裝器），一個開源渲染引擎。 date=December 2018- Physics Abstraction Layer，一個物理模擬API抽象系統（為PhysX提供COLLADA和Scythe Physics Editor支持）。- Rayfire，用於Autodesk 3ds Max的插件，允許碎裂和其他物理模擬date=December 2018- The Physics Engine Evaluation Lab，一個旨在評估、比較和基準測試物理引擎的工具。- 由Epic Games開發的虛幻引擎遊戲開發軟件。從Unreal Engine 4.26開始，PhysX已正式棄用。- 由Unity ApS開發的Unity引擎。 其DOTS（Data-Oriented Technology Stack）不使用PhysX。

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

**參見**
 DirectX- Open Dynamics Engine- OpenGL

**參考資料**

**外部鏈接**
  Official Product Sitedate=20090904173817 -  Projects using PhysX SDKdate=20090826152748 -  "PS Meeting 2005: Sony Hooks Up with AGEIA"date=20060601044714  - IGN News Story-  The Unofficial AGEIA PhysX Links & Info Page-  Official BFG Technologies Product Site-  動態逼真！NV超震撼物理加速視頻賞析date=20081006094027 -  部分對PhysX技術的質疑-  Official Product Site date=20170107003159 -  Techgage: AGEIA PhysX.. First Impressions date=20240206163837 -  Techgage: NVIDIA's PhysX: Performance and Status Report date=20240206160826