先月開催されたゲーム開発者向けカンファレンス「CEDEC 2007」に伴い、GPUのGeForceなどで有名なNVIDIA社のテクノロジーエバンジェリスト Kevin Bjorke氏、ディベロッパーテクノロジーエンジニア Bryan Dudash氏にインタビューする機会を得ました。今回は、同社が提供するGPUを使ったアプリケーション開発にフォーカスして、一歩踏み込んだ内容に迫ってみたいと思います。
はじめに
先月開催されたゲーム開発者向けカンファレンス「CEDEC 2007」に伴い、GPUのGeForceなどで有名なNVIDIA社のテクノロジーエバンジェリスト Kevin Bjorke氏、ディベロッパーテクノロジーエンジニア Bryan Dudash氏にインタビューする機会を得ました。
今回は、同社が提供するGPUを使ったアプリケーション開発にフォーカスして、一歩踏み込んだ内容に迫ってみたいと思います。
左から、Bryan Dudash氏、Kevin Bjorke氏
FX Composerについて
高橋
PCゲームやPS3のシェーダ開発者向けにFX Composerをリリースしていますが、今後の開発のロードマップなどをお聞かせください。 例えば、Direct3D 10やCg 2.0への対応予定はあるのでしょうか?
K. Bjorke
Direct3D 10対応は、社内で既に完了しており内部で試している段階です。Cg 2.0に関してはCg 2.0自体がβ版のため、正式版がリリースされてからの対応になると思います。
FX Composer
「
FX Composer」とは、NVIDIAが提供するプログラマブルシェーダエフェクトの統合開発環境のこと。ゲーム開発者やデザイナーがシェーダプログラムの開発やテストを行うのに利用する。MicrosoftのHLSLと、NVIDIAのCg(PlayStation 3でも利用されている)に対応しており、一般の開発者には2.02が公開されている(本稿執筆時点)。
なお、CEDEC 2007初日のBjorke氏のセッション「みんなのためのシェーダー作り」では、FX Composer 2.4が紹介された。現在のところPlayStation 3向けに先行公開がされており、このバージョンではCgを使ったプログラムのデバッグ機能が搭載されている。
高橋
FX Composer 2から「mental mill」が付属するようになりましたが、mental images社のツールをFX Composerにバンドルさせた狙いはなんでしょうか?
K. Bjorke
元々、mental images社とはよい関係を築いていることもあって、新しいツールとしてバンドルしました。特に、CGエンジニアの方にはmental images社の製品「mental ray」はおなじみではないでしょうか。
mental mill
FX Composer 2よりバンドルされることになった
mental images社のソフトウェア。3DCG業界で有名な同社の製品として、オフラインレンダラの「mental ray」がある。mental millは、グラフィカルな環境でシェーダエフェクトを作成できるのが特長で、シェーダ内の各種処理がビルディングブロック化されており、それらを組み合わせてエフェクトを作る。
mental millの画面(Parallax mappingの例)
ドライバ開発のオープンソース化
高橋
先日、AMD(旧ATI)が、Linuxなどのオープンソースコミュニティへのドライバ開発の支援を発表しましたが、ドライバ開発のオープンソース化や開発者支援などについてNVIDIA社ではどう考えてるのでしょうか?
B. Dudash
他社のことは、ちょっと分かりませんが(笑)、彼らがドライバに関する技術情報のすべてを公開しているわけではないと思いますし、実際には公開できない多くの情報があるはずです。
NVIDIAでは、オフィシャルでないドライバによって生じる不具合などをサポートすることはできませんし、限定的に情報を公開して開発してもらうよりも、オフィシャルできっちりとしたサポート体制を作っていく方が重要だと考えています。そのため、現時点でドライバの開発情報の公開などは考えていません。
シェーダ言語の互換性
高橋
シェーダモデル 3.0の世代まではCgやHLSLは比較的構文が近く、相互のコンバートが容易でしたが、Direc3D 10のシェーダモデル 4.0からは、HLSLとCg 2.0で、例えばジオメトリシェーダの部分で大きく違いが出てきていると思います。
実際、Microsoft社ではSIGGRAPH 2006の「
The Direct3D 10 System」(リンク先のページよりダウンロードが可能)でCgとフォークしていくという話だったと思いますが、今後はCgとHLSLで別々の道を進むと考えてよいのでしょうか?
K. Bjorke
シェーダプログラミングに限らず、プログラミング言語は、C++やC#、Javaというように数多くあります。これらは互いに文法が異なりますが、同様にプログラムを作成することができます。同じように、シェーダプログラミングにも複数の選択肢があってもよいと思います。
高橋
HLSLは、Microsoftの環境以外(例えば、MacやPS3)で利用できないので、そうした環境では特にCgの役割が重要になりそうですね。
Havokとの関係
高橋
先日、IDFにおいてIntelがHavokを買収しましたが、Havok FXなどへの協力関係などに影響はありますか?
K. Bjorke
Havokとは、仲良くやっています。特に変わることはないですよ(笑)。
Windows Vistaへの対応
高橋
Windows VistaのSP1では、Direct3Dが10から10.1にバージョンアップします。それに伴いHLSLにもシェーダモデル4.1が登場しますが、これに合わせてCg 2.0のアップデートなども予定しているのでしょうか?
K. Bjorke
Cg 2.0自体はまだβバージョンなので、現段階ではまだ予定はありません。必要になればアップデートするでしょう。
Direct3D 10.1
Direct3D 10.1のシェーダモデル 4.1では、GPU内での演算において倍精度のサポートやキューブマップ配列などがアナウンスされている。
高橋
CUDAのWindows Vista対応版のリリース時期について教えてください? 例えば、CUDAを実行できるGeForce 8シリーズは、Direct3D 10を動かしたいということでWindows Vistaでの利用が多いと思います。
B. Dudash
これは、私も利用してみたいです(笑)。
K. Bjorke
CUDAは、我々と担当部署が異なるため、現時点でリリースに関しては言えることはありません。
CUDA(compute unified device architecture)
CUDAとは、NVIDIAが提供するGPU向けのプログラミング環境のこと。従来のGPUのプログラムは、OpenGLやDirect3Dといった3DグラフィックスのAPIから、GPU専用のシェーダ言語を使ってアクセスしていた。CUDAでは、内部をC言語で記述できるため、グラフィックスプログラマでなくともGPUの計算能力を利用できる。さらに、グラフィックスAPIからGPUにアクセスをしないため、汎用計算で不要な処理が行われず、効率がよいとされている。
FX Composer 2とスクリプト言語
高橋
FX Composer 2ではスクリプト言語としてPython(Iron Python)が利用できます。ゲーム開発の分野では、同じくスクリプト言語のLuaも人気がありますが、Pythonを選択した理由は何でしょうか?
K. Bjorke
FX Composer 2が.NET Frameworkで作られているので、それに親和性の高いスクリプト言語としてIronPythonを採用しました。また、Python自体がMotionBuilderやMayaといったツールでもよく使われてるのも一つの理由です。他にも.NET Frameworkとの親和性の高いスクリプト言語への対応を検討するかもしれません(インタビューではIronRubyなどの話題も出ました)。
FX ComposerでのPythonスクリプトの利用
おわりに
NVIDIAというとハードウェアメーカーの印象が非常に強いですが、実はソフトウェアのエンジニアがハードウェアのエンジニアの2倍くらいいるらしく、意外でした。
NVIDIAでは、GameDev.netとSoftImageとの共同でのシェーダコンテストの後援を行っており(募集は既に締切)、今後は今回の話にあがったツールの提供以外にも、イベントなどで開発者やコミュニティへの支援を積極的に行っていくそうです。