Fahrenheitは、 Direct3DとOpenGLを統合するために、3Dコンピュータグラフィックス用の統一された高レベルAPIを作成しようとする取り組みでした。主にマイクロソフトとSGIによって設計され、 HPとマイクロソフトの共同開発による成果も含まれていました。
Direct3DとOpenGLは、3Dレンダリングパイプラインのレンダリング処理に重点を置いた低レベルAPIです。これらのAPIを使用するプログラムは、パイプラインの残りの部分を処理するためにかなりの量のコードを用意する必要があります。Fahrenheitは、この処理の大部分を担い、最後のステップでDirect3DまたはOpenGLを呼び出す単一のAPIを提供することを目指しました。
当初のFahrenheitプロジェクトの大部分は放棄され、MicrosoftとSGIは最終的に協力関係を断念した。結局、Fahrenheitシステムのシーングラフ部分であるXSGのみがリリースされ、その後まもなく開発が中止された。
1990年代、SGIのOpenGLは3Dコンピュータグラフィックスの事実上の標準でした。90年代半ば以前は、さまざまなプラットフォームで独自のソリューションが使用されていましたが、グラフィックス市場におけるSGIの力とOpenGLアーキテクチャレビューボード(ARB)の努力により、グラフィックスワークステーション市場の大部分でOpenGLが急速に標準化されました。1990年代半ば、マイクロソフトはWindows NTオペレーティングシステムの主要な3DシステムとしてOpenGLのライセンスを取得しました。マイクロソフトはNTをワークステーションクラスのシステムとして位置付けており、この分野で真の競争相手となるためにはOpenGLが必要でした。最初のサポートは1994年のWindows NT Workstationバージョン3.5でリリースされました。[ 1 ]
事態を複雑にしたのは、マイクロソフトが1995年2月にRenderMorphicsを買収したことだった。[ 2 ]彼らのReality Lab製品は、主に「ローエンド」市場をターゲットとした、ゲーム専用に書かれた3Dライブラリだった。MicrosoftはこれをDirect3D 3.0と改名し、 Windows 95とゲームプログラミングの主要な3D APIとしてリリースした。これにより、Microsoft社内外で、2つのAPIの利点とDirect3Dを推進すべきかどうかについて、大規模な議論が巻き起こった。[ 3 ] [ 4 ] [ 5 ]
1990年代半ばまで、SGIはプログラミングを容易にするためにOpenGLの上に高レベルAPIを提供する一連の取り組みを行っていた。1997年までに、これはOpenGLの上に構築された保持モードC++ APIであるOpenGL++システムへと発展した。彼らは、OpenGLまたはMicrosoftが開発中であることが知られていた新しい高性能低レベルAPI(Reality Labに基づかない)の上に、単一のAPIとして修正版を使用することを提案した。これにより、実装の詳細が隠蔽され、OpenGL/DirectX戦争が不要になるだけでなく、より堅牢なオブジェクト指向開発環境のための、はるかに優れた高レベルインターフェースが提供されることになる。
OpenGL++ の取り組みは、1997 年まで ARB で長引いた。SGI はサンプル実装を提供するためにプロジェクトにリソースを投入したが、全体的な進捗状況に不満を抱いていたようで、「作業はたくさんあったが、コミュニケーションは比較的少なかった」と不満を漏らした。[ 6 ]特に Microsoft は、この取り組みを支援しないことを明確に表明しており、SGI は今後の取り組みには Microsoft の支援が不可欠だと感じていた。
1997 年 12 月に共同プレスリリース[ 7 ]が発表し、続いて 1998 年初頭に SGI が ARB 会議で発表[ 8 ] OpenGL++ の開発は中止され、SGI は Microsoft と提携してコードネーム「Fahrenheit」という新しいシステムを開発することになった。SGI は、ほとんどのアプリケーションで使用される主要な「中規模」 API であるFahrenheit Scene Graph [ 9 ]と、CADアプリケーションからの非常に大きなモデルを処理するための修正版であるFahrenheit Large Modelを提供する予定だった。Microsoft は、Windows 用の新しい低レベルレンダリング エンジンであるFahrenheit Low Levelを提供する予定で、これは基本的に Reality Lab ベースの Direct3D の代替となるものだった。[ 10 ]このプロジェクトはSIGGRAPH 1998で正式に発表され、1999 年後半または 2000 年初頭にリリースされる予定だった。 [ 11 ]
SGI では Fahrenheit が開発の主軸となった。同社のMIPSベースのワークステーションは、1990 年代初頭に持っていた性能上の優位性を急速に失いつつあり、平均的な PC が徐々にではあるが確実にハイエンドグラフィックス市場に侵食していく中で、同社は深刻な問題を抱えていた。SGI は Fahrenheit を出口戦略と捉えていた。完成すれば、PC ベースの製品ラインナップに移行しつつ、現在では普遍的な API に対する最高の開発ツールを提供し続けることができる。移植作業は開始されなかったものの、Open InventorやOpenGL Performerなどのツールキットは将来的に Fahrenheit 上に重ねて使用される予定であり、Fahrenheit の出荷時に、既存の顧客と新規顧客の両方をサポートする単一の完全な機能を持つ開発システムを提供できることを意味していた。[ 10 ]
1999 年までに、マイクロソフトが Low Level を提供するつもりがないことは明らかでした。公式には作業中でしたが、実際にコードを作成するためにリソースが投入されることはほとんどありませんでした。[ 11 ]同時に、マイクロソフトは DirectX 7.0 (3.0 と名前以外はほとんど同じ) に大規模な投資を行っていました。Low Level がなければ Fahrenheit を Windows で提供することはできず、プロジェクトは停滞しました。最終的に SGI は Fahrenheit の作業を放棄し[ 12 ]、一連の同様のプロジェクトの最後となる他の Scene Graph 製品の計画を開始しました。
2000 年までに DirectX 7.0 が市場に出回り、非常に人気を博しました。DirectX は 1990 年代後半の 3D ゲームの台頭時に主要な API となりました。Microsoft は同年、Fahrenheit Scene Graph を XSG としてリリースしましたが、サポート対象外であるという注記を添えました。XSG の新しいバージョンはリリースされず、Microsoft と SGI の Web ページ上の Fahrenheit または XSG に関連するすべてのページはその後削除されました。ハードウェア アクセラレーションによる OpenGL サポートは、Windows XPに含まれるビデオ ドライバから削除されましたが、ほとんどのビデオ カードメーカーは独自の実装を提供しています。
Open InventorやIris Performerと比較すると、XSGの設計にはいくつかの斬新なアイデアが含まれていました。構成プリミティブと走査メソッドにより、アプリケーションは視覚化対象データの構造に最適な方法でシーンを構築できるだけでなく、シーングラフオプティマイザを適用してシーンの外観を変えることなく、より効率的なレンダリングのためにシーンを再構成することができました。開発者は自然に思える操作を行うだけで、システムがそれを迅速に処理してくれたのです。
パイプラインレンダリングにより、マルチスレッドアプリケーションは、シーンの構築、プリミティブの抽出、およびレンダリングを異なるスレッドで実行できるようになりました(Performerのapp-cull-drawパイプラインを参考にしています)。プリミティブシーンデータの表現は、スレッドごとにデータを完全に複製することを避けるため、保存されるデータ量を最小限に抑えるように最適化されています。
XSGのユニークな機能の一つは、グラフを走査するための組み込みメソッドのほとんどを独自のバージョンに置き換えることができる点でした。開発者は、XSG内にデータを格納する既知の方法を迅速に走査するための新しい関数を作成し、それを既存のレンダリングパスに連結することができました。
SGIでFahrenheitの主要設計者であったデビッド・ブライスは、2010年までマイクロソフトでDirectXの開発に携わっていた。また、インテルではチーフグラフィックスソフトウェアアーキテクトも務めていた。