
PhysXは、 Nvidia GameWorksソフトウェアスイートの一部としてNvidiaによって開発されたオープンソース[ 1 ]リアルタイム物理エンジンミドルウェアSDKです。
当初、PhysXをサポートするビデオゲームは、PhysX PPU(Ageia社が設計した拡張カード)によって高速化されることを想定していました。しかし、Ageia社がNvidia社に買収された後、専用のPhysXカードは廃止され、代わりにCUDA対応のGeForce GPU上でAPIを実行する方式が採用されました。いずれの場合も、ハードウェアアクセラレーションによって特定の物理演算処理をCPUからオフロードすることが可能になり、CPUは他のタスクを実行できるようになりました。
PhysXやその他のミドルウェア物理エンジンは、例えばソフトボディダイナミクスを実現するために古典力学(ニュートン力学)を実装する独自のコードを書く必要がないため、ゲーム開発者が開発時間を節約できることから、今日多くのビデオゲームで使用されています。[ 2 ]
現在 PhysX として知られているものは、NovodeX と呼ばれる物理シミュレーション エンジンとして始まりました。NovodeX は、2000 年代初頭にNovodeX AGによって開発されたリアルタイム ミドルウェア物理エンジンで、2002 年に商用リリースされました。NovodeX という名前は今日ではほとんど過去の製品ですが、この製品が導入したコア技術は、ゲーム開発とビデオゲームのリアルタイム物理を根本的に変革し、今日の業界標準であるPhysXエンジンの直接的なアーキテクチャ基盤となりました。[ 3 ] [ 4 ] [ 5 ]
起源と市場環境
このエンジンは、2001年にチューリッヒ工科大学(スイス連邦工科大学)の研究者とエンジニアによって設立されたスイスのテクノロジーグループであるNovodeX AGによって開発されました。 [ 6 ] [ 7 ]
2001年から2003年の期間、物理ミドルウェア市場は競争が激しかったものの、技術的には断片化/制限されていました。剛体ダイナミクスを実装しようとする開発者は、 Havokのような非常に高価な商用パッケージ、MathEngineのKarma(Unreal Engine 2で使用)のような特定の物理エンジンに密接に結合したミドルウェア、またはOpen Dynamics Engine(ODE)のようなオープンソースソリューションの中から選択する必要がありましたが、後者は大幅な手動統合が必要でした。[ 8 ]
NovodeXは、極めて高い数学的精度と先進的なハードウェアスケーリングを優先したソルバーでこの分野に参入しました。NovodeXは、巨大な剛体のスタックと複雑なラグドール拘束を崩壊させることなく処理するように特別に設計されました。[ 9 ]
2004年3月1日、NovodeX Physicsの第2版が商用利用向けにリリースされた。[ 10 ]
技術的特徴
NovodeX Physicsは、当時としてはゲーム物理演算のための非常に信頼性の高いツールとして際立っていました。NovodeXは完全に標準C++形式でプログラミングされており、マルチコアプロセッサとマルチスレッド技術のパワーを最大限に活用できるように特別に設計されていました。この柔軟で先進的な設計のおかげで、ソフトウェアはさまざまなハードウェアの制約に容易に対応でき、当時の一般的なWindows PCでも、初代Xbox、ニンテンドーゲームキューブ、PlayStation 2といった第6世代ゲーム機と同様にスムーズに動作しました。
NovodeXは、単一の大きなコードブロックではなく、設計上、高度にモジュール化されたエンジンでした。このソフトウェアは、Steel Rigid Body Physics、Granite Brittle Fracture、NovodeX Personal Editionという3つの異なるライセンスで配布され、そのアーキテクチャは5つの異なるサブコンポーネントに分割されていました。
アーティストが実際にアセットや小道具をシミュレーションに取り込めるように、NovodeX ツールキットは、3ds Maxや MilkShape 3D などの当時の人気 3D ソフトウェアの標準エクスポート プラグインを提供しました。また、ブラウザと、「Tetmake」と呼ばれる特殊なユーティリティも搭載しており、これは Substance SDK で必要とされるメッシュを生成するために特別に使用されました。[ 11 ] [ 12 ] [ 13 ]
メインエンジンに加えて、チームは NovodeX Rocket と呼ばれる別のサンドボックスツールをリリースしました。このユーザーフレンドリーなスタンドアロンプログラムにより、デザイナーは新しいゲームのアイデアを迅速にテストすることができ、複雑な C++ コードを一から書く必要はなく、カスタムスクリプト言語 (PSCL) と組み込みフレームワーク (ODF) が提供されるため、ゲームの物理演算を簡単に構築して実験することができました。[ 14 ]
Unreal Engine 3との統合
NovodeXにとって大きな転換点となったのは、2004年にリリースされたUnreal Engine 3の開発中だった。Epic Gamesはそれまで、 Unreal Engine 2で剛体ダイナミクス、ラグドール、乗り物を制御するためにMathEngine Karmaを使用していた。しかし、Karmaが時代遅れになり始め、次世代の物理演算に対する要求が高まるにつれ、Epicは次世代エンジンの代替となるものを探し始めた。
2004年4月2日、Epic GamesはNovodeX AGと正式に提携し、NovodeXの物理ソルバーをUnreal Engine 3のパイプラインにネイティブに統合しました。この統合により、UnrealエコシステムにおけるKarmaの終焉が事実上始まり、NovodeXはAAA級の物理エンジンとして一気に地位を確立しました。[ 15 ] [ 16 ]
2004年、 Ageiaというファブレス半導体企業が、物理処理ユニット(PPU)と呼ばれる専用ハードウェア拡張カードを開発していました。このプロジェクトのために、Ageiaは自社ハードウェアと連携するための最新のソフトウェアAPIを必要としていました。Ageiaは、このエンジンのマルチスレッドアーキテクチャの優位性を認識し、最終的にNovodeX AGを買収しました。[ 17 ] [ 18 ]買収当時、NovodeX Physicsエンジンはバージョン2.3でした。
買収後、Ageiaは既存のNovodeXコードベースを引き継ぎ、Ageia PhysX SDKとしてブランド名を変更した。スイスの開発チームはそのまま残り、オリジナルのNovodeXソルバーをベースにハードウェアアクセラレーション、流体力学、ソフトボディ物理を追加し続けた。[ 19 ] [ 20 ]また、 Ageiaは2005年にMeqonを買収し、 PhysXエンジンに統合した。
NovodeX は、大学の研究プロジェクトがビデオゲーム業界で大成功を収めた好例です。2008 年にNVIDIA が同社を買収し、最終的に Ageia も買収して、NVIDIA のグラフィック カードで直接実行できるようにソフトウェアを更新し、現在PhysXエンジンと呼ばれるものになりました。今日では、 Unity、Unreal Engine 、または AAA スタジオでゲームが構築されているかどうかにかかわらず、ゲーム内の物理演算は、2002 ~ 2004 年のオリジナルの NovodeX と同じ数学によって駆動されています。[ 21 ] [ 22 ] [ 23 ]
2008年、Ageia自体がグラフィックス技術メーカーのNvidiaに買収されました。[ 24 ] NvidiaはGeForceグラフィックスカードのラインナップでPhysXハードウェアアクセラレーションを有効にし始め[ 25 ]、最終的にAgeia PPUのサポートを終了しました。[ 26 ]
Nvidia PhysX SDK 3.0は2011年5月にリリースされ、SDKの大幅な書き換えが行われ、より効率的なマルチスレッド処理や、サポートされているすべてのプラットフォーム向けの統一されたコードベースなどの改善がもたらされました。[ 2 ]
GDC 2015で、Nvidia はPhysX のソースコードをGitHubで公開しましたが、developer.nvidia.com での登録が必要でした。[ 27 ]独自のSDK は、 Windows、Linux、macOS、iOS、Androidプラットフォームでの商用および非商用利用の両方で開発者に無料で提供されました。[ 28 ]
2018年12月3日、PhysXは3条項BSDライセンスの下でオープンソース化されたが、この変更はコンピュータおよびモバイルプラットフォームにのみ適用された。[ 29 ]
2022年11月8日、オープンソース版はPhysX 5にアップデートされ、同じ3条項BSDライセンスが適用された。[ 30 ]
2025年2月、 GeForce RTX 50シリーズでは32ビットCUDAアプリケーションのサポートが廃止され、32ビットタイトルではGPUアクセラレーションによるPhysXが機能しなくなりました。[ 31 ]これにより、GPU PhysXオプションが有効になっている場合、CPUによって処理されるようになり、Mirror's EdgeやBorderlands 2などのタイトルでパフォーマンスが低下しました。[ 32 ]
2025年12月4日、Nvidiaは32ビットGPUアクセラレーションPhysXオプションを備えた一部のゲームのサポートを実装しました。[ 33 ]
PhysX エンジンと SDK は、Microsoft Windows、macOS、Linux、[ 29 ] PlayStation 3、[ 34 ] [ 35 ] PlayStation 4、[ 36 ] Xbox 360、[ 37 ] Xbox One、[ 38 ] Wii、[ 39 ] iOS および Android で利用可能です。[ 29 ]
PhysXはマルチスレッド対応の物理シミュレーションSDKです。剛体ダイナミクス、軟体ダイナミクス(布のシミュレーション、布の破れや加圧など)、ラグドールとキャラクターコントローラー、車両ダイナミクス、パーティクル、体積流体シミュレーションをサポートしています。

物理処理ユニット(PPU)は、CPUの計算負荷、特に物理演算に関連する計算負荷を軽減するために特別に設計されたプロセッサです。PhysX PPUは、ASUS [ 40 ]、BFG Technologies [ 41 ] [ 42 ]、Dell [43]、ELSA Technology [ 44 ]によってPCIまたはPCIeカードの形で消費者に提供されました。
PhysX SDK のバージョン 2.8.3 以降、PPU カードのサポートは終了し、PPU カードは製造されなくなりました。[ 26 ] Ageia が設計した PhysX PPU スタンドアロン カードの最後のバージョンは、専用の9800GTX とほぼ同じ PhysX パフォーマンスでした。[ 45 ]
NvidiaがAgeiaを買収した後、PhysXの開発はPPU拡張カードから離れ、最新のGPUのGPGPU機能に重点を置くようになった。
最新のGPUはコンピュータグラフィックスの操作と表示において非常に効率的であり、その高度に並列化された構造により、PhysXを用いた物理シミュレーションの高速化において汎用CPUよりも効果的である。
CUDA対応のGeForceグラフィックカード(8シリーズ以降のGPUで、最低32コア、最低256MBの専用グラフィックメモリ[ 46 ] )であれば、専用のPhysXカードをインストールしなくてもPhysXを利用できます。
Nvidia APEX テクノロジーは、PhysX SDK をベースに構築されたマルチプラットフォームのスケーラブルなダイナミクス フレームワークです。2010年 8 月にMafia IIで初めて導入されました。 [ 47 ] Nvidia の APEX は、APEX Destruction、APEX Clothing、APEX Particles、APEX Turbulence、APEX ForceField、そして 2011 年に開発が停止された APEX Vegetation というモジュールで構成されています。[ 48 ] [ 49 ]
バージョン1.4.1以降、APEX SDKは非推奨となりました。[ 50 ]
FleX は、リアルタイムの視覚効果のための粒子ベースのシミュレーション技術です。従来、視覚効果は、剛体、流体、衣服などに特化したソルバーを使用して作成された要素の組み合わせを使用して作成されていました。FleX はすべてのオブジェクトタイプに統一された粒子表現を使用するため、異なるシミュレーションされた物質がシームレスに相互作用できる新しい効果が可能になります。このような統一された物理ソルバーは、 Autodesk Mayaの nCloth やSoftimageの Lagoaなどのツールが広く使用されているオフライン コンピュータ グラフィックスの世界では定番です。FleX の目標は、GPU のパワーを使用して、これらのオフライン アプリケーションの機能をリアルタイム コンピュータ グラフィックスにもたらすことです。[ 51 ]
2010年7月5日、Real World TechnologiesはPhysXアーキテクチャの分析[ 52 ]を発表しました。この分析によると、当時PhysXアプリケーションで使用されていたコードのほとんどは、マルチスレッド最適化のないx87命令に基づいていました。そのため、CPU上でPhysXコードを実行すると、パフォーマンスが大幅に低下する可能性がありました。この記事では、 SSE命令を使用したPhysXの書き換えにより、CPU PhysXとGPU PhysXのパフォーマンスの差を大幅に縮小できる可能性があると示唆しています。
Real World Technologies の分析に対し、PhysX のプロダクト マネージャーであるMike Skolones 氏は[ 53 ] 、ほとんどのゲームはまずコンソール向けに開発され、その後 PC に移植されるため、SSE のサポートが遅れていると述べた。その結果、現代のコンピュータは、最適化がほとんどまたはまったくなくても、コンソールよりもこれらのゲームを高速かつ良好に実行できる。NvidiaのシニアPR マネージャーである Bryan Del Rizzo 氏は、マルチスレッドは CPU PhysX 2.x ですでに利用可能であり、それを利用するかどうかは開発者次第であったと説明した。また、自動マルチスレッドと SSE は PhysX SDK のバージョン 3 で導入される予定であるとも述べた。[ 54 ]
PhysX SDK 3.0は2011年5月にリリースされ、SDKの大幅な書き換えが行われ、より効率的なマルチスレッド処理や、サポートされているすべてのプラットフォーム向けの統一されたコードベースなどの改善がもたらされました。[ 2 ]
PhysXテクノロジーは、 Unreal Engine(バージョン3以降)、Unity、Gamebryo、Vision(バージョン6以降)、Instinct Engine、[ 55 ] Panda3D、Diesel、Torque、HeroEngine、BigWorldなどのゲームエンジンで使用されています。[ 46 ]
数少ない主要な物理エンジンの一つとして、『ウィッチャー3 ワイルドハント』、『ウォーフレーム』、『キリングフロア2』、『バットマン:アーカム・ナイト』、『プラネットサイド2』、『ボーダーランズ2』など、多くのゲームで使用されています。これらのゲームのほとんどは、CPUを使用して物理シミュレーションを処理しています。
ハードウェアアクセラレーションによる PhysX をオプションでサポートするビデオゲームには、破れる布、動的な煙、シミュレートされた粒子破片などの追加効果が含まれていることが多い。[ 56 ] [ 57 ] [ 58 ]
PhysXをサポートするその他のソフトウェアには、以下のものがあります。