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。它支援剛體動力學、軟體動力學、布娃娃系統和角色控制器、車輛動力學、粒子模擬和體積流體模擬。

硬體加速

3.1 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 效能。

3.1.1 當年 PhysX 物理加速卡規格

記憶體：128 MB GDDR3 RAM（華碩據說有發行 256 MB GDDR3 RAM 的版本)
介面介面：PCI 或 PCI Express
球體碰撞能力：5.3 億次每秒（最大能力）
浮點運算能力：530,000 次每秒（最大能力）
價格：220 英鎊 300 美元 2000 人民幣 9500 臺幣（估計）
BFG 推出的 PhysX 擴充套件卡售價為 2000 人民幣

3.2 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 的重大改寫，帶來了諸如更高效的多執行緒和統一的程式碼基礎等改進。

用法

7.1 遊戲

PhysX 技術被諸如虛幻引擎（從第 3 代開始）、Unity、Gamebryo、Vision Engine（從第 6 代開始）、Instinct Engine、Panda3D、Diesel、Torque、HeroEngine 和 BigWorld 等遊戲引擎所使用。

作為為數不多的主要物理引擎之一，PhysX 被用於許多遊戲中，例如巫師 3：狂獵、星際戰甲、殺戮空間 2，輻射 4、蝙蝠俠：阿卡姆騎士、行星邊際 2 和無主之地 2。這些遊戲大多使用 CPU 來處理物理模擬。

支援硬體加速 PhysX 的遊戲通常包含額外的效果，如可撕裂的布料、動態煙霧或模擬的粒子碎片。

7.2 其他軟體

測試軟體

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