PhysX

PhysX（フィジックス/フィジクス）とはNVIDIAが開発・提供している、リアルタイムの物理演算エンジン。 ソフトウェアがPhysXのハードウェアアクセラレーションに対応している場合、CUDAが使用可能なGeForce（8シリーズ以降の製品）のうち、32以上のコア、256MB以上のグラフィックスメモリを搭載する製品でハードウェアアクセラレートが可能である。 PhysXのハードウェアアクセラレーションは、日夜進化を続けるコンピュータゲームにおける物理演算をCPUから肩代わりする事で動作スピードの上昇を目指したものである。汎用プロセッサであるCPUのパフォーマンスでは不可能に近い「爆発によって飛び散った破片を毎回ランダムに演算する」等の複雑かつ高負荷な描写を、事前作成済み動画の読み出しなどではなく、実際にその場で演算してリアルタイムに描写することが可能になるとされている。対抗とされる物理演算システムとしてはHavokが挙げられる。 PhysXは様々なプラットフォームで500以上のゲームに使われている。 開発元は米カリフォルニア州に本拠を置いていたAgeia（英語版）社。2008年2月4日に、NVIDIA GeForceシリーズを開発するNVIDIAがAgeiaを買収し、PhysXとGeForceシリーズの統合が発表された。NVIDIAによる買収後は、専用チップおよび専用ボードは生産されていない。 PhysX SDK 2.8.3からPhysics processing unit（英語版）(PPU)のサポートが打ち切られた。 PhysXは以下のプラットフォーム上で動作する。 PC (Windows/Linux/macOS) PlayStation 3 PlayStation 4 Xbox 360 Xbox One Wii Android iOS いずれのプラットフォーム用SDKも無料で配布されている。これらのうち、PC用のSDKはNVIDIA社のPhysX SDK ダウンロードページより直接入手する事ができる。NVIDIA社スタッフによるサポート及び開発支援ツールが有償で提供されているが、これらを利用しない限りは商用利用を含めて無料である。 PhysXはUnreal EngineやUnity (ゲームエンジン)にも統合されている。 PhysXでは2023年現在[いつ?]、以下の機能がサポートされている。 剛体物理 衝突判定 各種関節 ラグドール 摩擦力の考慮 衝突の検知 オブジェクトをグループ化し、衝突判定のON・OFF切り替え 1軸方向のみに物理作用を限定 接触通知 先進的なキャラクタコントロール 乗り物のための動力学 マルチスレッド・マルチプラットフォーム 流体シミュレーション 布シミュレーション 軟体の表現 フォースフィールドの表現 PhysXの発表当初、以下のような問題があった。 導入しても対応しているゲームの挙動に影響があるだけでPC自体のパフォーマンス向上には関係ないこと ゲームが対応していなければPhysXチップの導入には意味が無いこと ゲームはPhysXに「対応している」以上のことができないこと たとえば、PhysXによって爆発の破片によるダメージ判定なども出来るが、それはネット対戦などにおいては全てのプレーヤーがPhysXを導入していなければ対応が難しい。(ゲームソフトとは別に物理演算ボードを購入する必要があった。) 限られたユーザーしか利用可能でないため、デベロッパは安易にPhsyXを必須動作条件に入れることができない。 これらの問題点はNVIDIAがAGEIAを買収した事により一定の解決を見る。ただしそれによって新たなデメリットも生じた。 メリット 広いシェアを持つGeForceシリーズのグラフィックボードで動作するようになったため、利用可能ユーザーが爆発的に増加した。 専用ボードを別途購入する必要がなくなった。 古いビデオカードの更新、再生支援やHDCPを利用してブルーレイや地デジを楽しむといった別の用途で購入したとしてもPhysX対応となる。 デメリット 本来、グラフィック描画に用いられるはずのユニファイドシェーダーの一部を物理演算に割く事になるため、結果としてグラフィックパフォーマンスが低下する。また、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にインストールされていても、それらの物理演算機能を強制的に停止させてしまう [1]。これにはAGEIA社のPPUも含まれる。 2009年10月現在、MODドライバーや非公認パッチによって、AMD系VGA搭載システムでもPhysXの利用は変則的にではあるものの、可能となっている。[2] しかし、AMDはIntel社のHavokと提携し [3]、なおかつ独自にオープンソースベースの物理エンジンBullet Physicsにも着手している為 [4]、物理エンジンにおけるAMDとNVIDIAの歩み寄りは、既に非現実的なものとなりつつある。 en:List of games with hardware-accelerated PhysX supportのリストのとおり、ハードウェアによるPhysXアクセラレーションに対応したゲームタイトルの数はソフトウェアによるPhysX利用タイトルの数に比べると限定的である。 APEX (Applied PhysX Extension) はツールによるオーサリングを前提としたPhysXの拡張であり、その APEX SDK では Clothing（布）、Destruction（破壊）、Particles（パーティクル）、Turbulence（乱流）、ForceField（力場）のモジュールを搭載していた。APEX は Unreal Engine などの一般的なゲームエンジンにも採用されていた（現在は独自のChaos Destructionなどに移行）。 その後 APEX SDK は1.4.1で非推奨となり、GameWorks PhysXも解体され、破壊は NVIDIA Blast に、布は NVIDIA Clothに、パーティクルは NVIDIA FleX と NVIDIA Flow に置き換えられた。 APEXのオーサリングツールには破壊モジュール向け単体ツールの APEX FractureTool及び APEX PhysXLab 、布モジュール向け単体ツールの APEX Clothing Tool、DCC統合プラグインの PhysX DCC Plug-Ins が存在した。PhysXLab の後継には NVIDIA Blast 向けの Blast Authoring Tool がある。