PhysX(フィジックス/フィジクスASCII.jp:アキバで恥をかかないための最新パーツ事情2009【ビデオカード編】 (4/7)|アキバで恥をかかないための最新パーツ事情2009)とはNVIDIAが開発・提供している、リアルタイムの物理演算エンジン。
概要 ソフトウェアがPhysXのハードウェアアクセラレーションに対応している場合、CUDAが使用可能なGeForce(8シリーズ以降の製品)のうち、32以上のコア、256MB以上のグラフィックスメモリを搭載する製品でハードウェアアクセラレートが可能である。
PhysXのハードウェアアクセラレーションは、日夜進化を続けるコンピュータゲームにおける物理演算をCPUから肩代わりする事で動作スピードの上昇を目指したものである。汎用プロセッサであるCPUのパフォーマンスでは不可能に近い「爆発によって飛び散った破片を毎回ランダムに演算する」等の複雑かつ高負荷な描写を、事前作成済み動画の読み出しなどではなく、実際にその場で演算してリアルタイムに描写することが可能になるとされている。対抗とされる物理演算システムとしてはHavokが挙げられる。
PhysXは様々なプラットフォームで500以上のゲームに使われている。
歴史 開発元は米カリフォルニア州に本拠を置いていた社。2008年2月4日に、NVIDIA GeForceシリーズを開発するNVIDIAがAgeiaを買収し、PhysXとGeForceシリーズの統合が発表されたNVIDIA,「PhysX」のAGEIA Technologiesを買収。NVIDIAによる買収後は、専用チップおよび専用ボードは生産されていない。
PhysX SDK 2.8.3から(PPU)のサポートが打ち切られた。
対応プラットフォーム PhysXは以下のプラットフォーム上で動作するPhysX SDK | NVIDIA Developer。 PC (Windows/Linux/macOS) PlayStation 3 PlayStation 4 Xbox 360 Xbox One Wii Android iOS
いずれのプラットフォーム用SDKも無料で配布されている。これらのうち、PC用のSDKはNVIDIA社のPhysX SDK ダウンロードページPhysX SDK Downloads,PhysX SDK ダウンロードページより直接入手する事ができる。NVIDIA社スタッフによるサポート及び開発支援ツールが有償で提供されているが、これらを利用しない限りは商用利用を含めて無料である。
PhysXはUnreal EngineやUnity (ゲームエンジン)にも統合されている。
PhysXの機能 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にインストールされていても、それらの物理演算機能を強制的に停止させてしまう 。これには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ハードウェアアクセラレーションを使用することができなかったが、2025年12月4日より配信が開始されたGame Ready Driver 591.44にて復活し、一部タイトルで32bitのPhysXハードウェアアクセラレーションが再び利用できるようになった。
APEX APEX (Applied PhysX Extension) はツールによるオーサリングを前提としたPhysXの拡張でありGDC 2009#08 - NVIDIA,PhysXの可能性を広げる「APEX」の現状とデモを公開 4Gamer 2009年3月26日、その APEX SDK では Clothing(布)、Destruction(破壊)、Particles(パーティクル)、Turbulence(乱流)、ForceField(力場)のモジュールを搭載していたNVIDIA APEX SDK Documentation NVIDIA。APEX は Unreal Engine などの一般的なゲームエンジンにも採用されていたAPEX - Unreal Engine Documentation Epic Games(現在は独自のChaos Destructionなどに移行)。
その後 APEX SDK は1.4.1で非推奨となりAPEX 1.4.1 - Release Notes (APEX has been deprecated) NVIDIA、GameWorks PhysXも解体され、破壊は NVIDIA Blast に、布は NVIDIA Clothに、パーティクルは NVIDIA FleX と NVIDIA Flow に置き換えられたGameWorks PhysX Overview NVIDIA。
APEXのオーサリングツールには破壊モジュール向け単体ツールの APEX FractureToolFractureTool NVIDIA及び APEX PhysXLab 、布モジュール向け単体ツールの APEX Clothing ToolClothing Tool NVIDIA、DCC統合プラグインの PhysX DCC Plug-Ins が存在したPhysX DCC Plug-Ins NVIDIA。PhysXLab の後継には NVIDIA Blast 向けの Blast Authoring Tool があるBlast Authoring Tool Quick Start NVIDIA。
脚注
関連項目 NVIDIA GeForce Graphics Processing Unit GPGPU
外部リンク ゲーマー向けPhysX公式サイト(英語) 開発者向けPhysX公式サイト(英語) (英語) (英語) (英語) Projects using PhysX SDK(英語)