PHIGS (Programmer's Hierarchical Interactive Graphics System)とは
PHIGS(フィグス)は、3次元
コンピュータグラフィックスのレンダリングを行うための標準化されたAPIです。
1990年代には3次元グラフィックスの標準とみなされていましたが、機能と性能を兼ね備えた
OpenGLの台頭により、事実上の標準としての地位を失い、現在ではあまり利用されていません。
PHIGSは、
ディジタル・イクイップメント・コーポレーションのDEC PHIGS、
IBMのgraPHIGS、
サン・マイクロシステムズのSunPHIGSなど、独立した実装が存在していました。また、
X Window Systemでは、PEX(PHIGS Extension to X)を通じてサポートされていました。PEXはXの拡張として構成され、レンダリングのためにXサーバからPEXシステムへコマンド群を転送します。PHIGSによって抽象化される
ワークステーションは、通常ウィンドウを対象としますが、全画面やプリンタ出力デバイスにも対応できます。
PHIGSは、1970年代後半の
Graphical Kernel System(GKS)の概念を取り入れ、1980年代に設計されました。1989年には、ANSI規格(ANSI X3.144-1988)、連邦情報処理標準(FIPS 153)、ISO規格(ISO/IEC 9592およびISO/IEC 9593)として標準化されました。初期の設計であるため、標準では基本的なジオメトリやメッシュ、
グーローシェーディング、ドット、
フォンシェーディングによるシーンのレンダリングなど、基本的な3次元グラフィックスのみがサポートされ、
テクスチャマッピングといった現代では標準的な機能はサポートされていません。
技術的詳細
PHIGSの名前にある「hierarchical(階層的)」という言葉は、その特徴的な機能を表しています。一般的なグラフィックスシステムとは異なり、PHIGSはシーングラフシステムを基本標準としています。モデルは、描画
プリミティブとその属性(色、線スタイルなど)を含む「ワールド」を保持するCentralized Structure Store(CSS)と呼ばれる
データベースで構築されます。PHIGSは抽象化された
ワークステーションとして動作し、CSSは複数の表示領域で共有できます。
PHIGSで画面にグラフィックスを表示するには、3つの手順が必要です。まずCSS内にモデルを構築し、次に抽象
ワークステーションを作成して開き、最後にモデルを抽象
ワークステーションに関連付けます。
ワークステーションはモデルを即座にレンダリングし、モデルに加えられた変更は即座に
ワークステーションの表示領域に反映されます。
オリジナルのPHIGSは、照明されたシーンをレンダリングする機能が不足していたため、PHIGS+へと拡張されました。PHIGS+は基本的に同様の動作をしますが、3次元シーンを照明する機能が追加され、PHIGS PLUS("Plus Lumière Und Shading")とも呼ばれています。PHIGS+では、NURBS曲面のような高度なグラフィックス
プリミティブも追加されています。
OpenGLはPHIGSとは異なり、レンダリングのために送信されたオブジェクトを保持しない、イミディエイト・モード(即時モード、直接モード)のレンダリングシステムです。モデルに変更が加えられた場合、シーン全体をシステムに再送信して再レンダリングする必要があるため、
プログラマの作業負担が増えます。シンプルなプロジェクトにはPHIGSの方が使いやすく、負担も少ないとされています。
しかし、
OpenGLの低水準APIは、データをグラフィックスハードウェアに送信する前に
CPU側で前処理を行うことで、レンダリング効率を大幅に向上させることが可能になりました。例えば、各オブジェクトが実際のシーンで可視であるかどうかを調べ、最終的に画面に映るオブジェクトのみを送信することで、カリング処理を行うことができます。PHIGSではこのような処理は非公開とされており、パフォーマンスの最適化が困難でした。
高性能なレンダリングの需要が増すにつれて、
OpenGLはより強力な3次元プログラミングAPIとして認識されるようになり、PHIGSは徐々に使われなくなりました。PEXプロトコルのバージョン6.0では他の3Dプログラミングモデルもサポートされていますが、人気を回復することはありませんでした。PEXは
XFree86 4.2.x(2002年)で大部分が削除され、X11 R6.7.0(2004年4月)版の
X Window Systemからは完全に削除されています。
注釈・出典
参考文献
comp.windows.x.pex FAQ(1994年3月28日)
* An Introduction to PHIGS(実質的にはPHIGS+)