PhysX
From Wikipedia, the free encyclopedia
PhysX(フィジックス/フィジクス[1])とはNVIDIAが開発・提供している、リアルタイムの物理演算エンジン。
|
| |
| 開発元 | NVIDIA Corporation |
|---|---|
| 最新版 |
9.18.0907
/ 2018年9月18日 |
| リポジトリ | |
| プログラミング 言語 | C++, C言語 |
| 対応OS | Microsoft Windows, macOS, Linux, PlayStation 2, PlayStation 3, PlayStation 4, Xbox 360, Xbox One, Wii, iOS, Android |
| 種別 | 物理演算エンジン |
| ライセンス | 3条項BSDライセンス |
| 公式サイト | Nvidia PhysX developer site |
概要
ソフトウェアがPhysXのハードウェアアクセラレーションに対応している場合、CUDAが使用可能なGeForce(8シリーズ以降の製品)のうち、32以上のコア、256MB以上のグラフィックスメモリを搭載する製品でハードウェアアクセラレートが可能である[2]。
PhysXのハードウェアアクセラレーションは、日夜進化を続けるコンピュータゲームにおける物理演算をCPUから肩代わりする事で動作スピードの上昇を目指したものである。汎用プロセッサであるCPUのパフォーマンスでは不可能に近い「爆発によって飛び散った破片を毎回ランダムに演算する」等の複雑かつ高負荷な描写を、事前作成済み動画の読み出しなどではなく、実際にその場で演算してリアルタイムに描写することが可能になるとされている。対抗とされる物理演算システムとしてはHavokが挙げられる。
PhysXは様々なプラットフォームで500以上のゲームに使われている[3]。
歴史
対応プラットフォーム
PhysXは以下のプラットフォーム上で動作する[6]。
いずれのプラットフォーム用SDKも無料で配布されている。これらのうち、PC用のSDKはNVIDIA社のPhysX SDK ダウンロードページ[7]より直接入手する事ができる。NVIDIA社スタッフによるサポート及び開発支援ツールが有償で提供されているが、これらを利用しない限りは商用利用を含めて無料である。
PhysXはUnreal EngineやUnity (ゲームエンジン)にも統合されている。
PhysXの機能
PhysXでは2023年、以下の機能がサポートされている。
- 剛体物理
- 衝突判定
- 各種関節
- ラグドール
- 摩擦力の考慮
- 衝突の検知
- オブジェクトをグループ化し、衝突判定のON・OFF切り替え
- 1軸方向のみに物理作用を限定
- 接触通知
- 先進的なキャラクタコントロール
- 乗り物のための動力学
- マルチスレッド・マルチプラットフォーム
- 流体シミュレーション
- 布シミュレーション
- 軟体の表現
- フォースフィールドの表現
問題点と今後
PhysXの発表当初、以下のような問題があった。
- 導入しても対応しているゲームの挙動に影響があるだけでPC自体のパフォーマンス向上には関係ないこと
- ゲームが対応していなければPhysXチップの導入には意味が無いこと
- ゲームはPhysXに「対応している」以上のことができないこと
たとえば、PhysXによって爆発の破片によるダメージ判定なども出来るが、それはネット対戦などにおいては全てのプレーヤーがPhysXを導入していなければ対応が難しい。(ゲームソフトとは別に物理演算ボードを購入する必要があった。)
- 限られたユーザーしか利用可能でないため、デベロッパは安易にPhsyXを必須動作条件に入れることができない。
これらの問題点はNVIDIAがAGEIAを買収した事により一定の解決を見る。ただしそれによって新たなデメリットも生じた。
- メリット
- デメリット
- 本来、グラフィック描画に用いられるはずのユニファイドシェーダーの一部を物理演算に割く事になるため、結果としてグラフィックパフォーマンスが低下する。また、NVIDIA社が提唱するPhysXエフェクトの採用はそのまま破片、水滴など描画対象の爆発的増殖と一体である。その為、物理効果が現れれば同時に膨大な描画負荷やリソース消費が発生する事になり、やはりパフォーマンスは大きく低下してしまう。以上の点から、現実問題として、単独VGAでのPhysX利用はフレームレート維持の観点から実用的ではない(演算専用のサブグラフィックスデバイスを別途用意しなければならない)。これはPhysX本格採用タイトルのCryostasis等で特に顕著である。
- AGEIA買収当時においても、NVIDIA社とAMD社の関係上、またPhysXとHavokの関係上AMD RadeonのようなAMD製GPUに対応する可能性は著しく低かったが、AGEIA社のPPU、或いは8X00以降のNVIDIA製VGAを別途搭載する事により、ハードウェアPhysXをAMD社製VGA搭載機でも利用する事が出来た。だが、同社がリリースした186番台以降のデバイスドライバは、AMD社製グラフィックシステムを検知すると、たとえPhysX対応ハードウェアがPCにインストールされていても、それらの物理演算機能を強制的に停止させてしまう 。これにはAGEIA社のPPUも含まれる。
- 2009年10月現在、MODドライバーや非公認パッチによって、AMD系VGA搭載システムでもPhysXの利用は変則的にではあるものの、可能となっている。
しかし、AMDはIntel社のHavokと提携し 、なおかつ独自にオープンソースベースの物理エンジンBullet Physicsにも着手している為 、物理エンジンにおけるAMDとNVIDIAの歩み寄りは、既に非現実的なものとなりつつある。
en:List of games with hardware-accelerated PhysX supportのリストのとおり、ハードウェアによるPhysXアクセラレーションに対応したゲームタイトルの数はソフトウェアによるPhysX利用タイトルの数に比べると限定的である。
2025年に発売されたGeForce RTX 50シリーズのGPUでは、32bitのCUDAアプリケーションのサポートが廃止された。これにより、それらの製品では32bitアプリケーションのPhysXハードウェアアクセラレーションを使用することができなかった[8]が、2025年12月4日より配信が開始されたGame Ready Driver 591.44にて復活[9]し、一部タイトルで32bitのPhysXハードウェアアクセラレーションが再び利用できるようになった。
APEX
APEX (Applied PhysX Extension) はツールによるオーサリングを前提としたPhysXの拡張であり[10]、その APEX SDK では Clothing(布)、Destruction(破壊)、Particles(パーティクル)、Turbulence(乱流)、ForceField(力場)のモジュールを搭載していた[11]。APEX は Unreal Engine などの一般的なゲームエンジンにも採用されていた[12](現在は独自のChaos Destructionなどに移行)。
その後 APEX SDK は1.4.1で非推奨となり[13]、GameWorks PhysXも解体され、破壊は NVIDIA Blast に、布は NVIDIA Clothに、パーティクルは NVIDIA FleX と NVIDIA Flow に置き換えられた[14]。
APEXのオーサリングツールには破壊モジュール向け単体ツールの APEX FractureTool[15]及び APEX PhysXLab [12]、布モジュール向け単体ツールの APEX Clothing Tool[16]、DCC統合プラグインの PhysX DCC Plug-Ins が存在した[17]。PhysXLab の後継には NVIDIA Blast 向けの Blast Authoring Tool がある[18]。