後藤弘茂のWeekly海外ニュース

プロセッサ化へと向かうシェーダアクセラレータ時代のGPU


●シェーダアクセラレータへの進化が次のステップ

 GPU(グラフィックスチップ)は“プロセッサ”になる。つまり、ハードワイヤード実装の固定機能のチップではなく、CPUのようにプログラマブルなプロセッサへと変化して行く。それによって、複雑なシェーダ(3Dグラフィックス処理プログラム)を、CPU上ではなくGPU上で実行する“シェーダアクセラレーション”を実現する。逆を言えば、シェーディング言語で書かれた複雑なシェーディングプログラムを実行するためには、GPUがプログラマブルなプロセッサが必要となる。

 DirectX 7世代までのGPUのほとんどは、(例外もあったが)プログラマビリティを持っていなかった。つまり、ハードウェアで実装された限定されたグラフィックス機能しか備えていなかった。DirectX 8で多少のプログラマビリティは加わったが、それは限られたものでしかなかった。

 しかし、RADEON 9700から始まるDirectX 9以降のGPUは、プログラマブルなプロセッサへと移行して行く。GPUの機能はハードに限定されたものではなくなり、プログラム(シェーダ)によって無限に機能を加えていくことができるようになる。言い換えると、GPUは、CPUと同じように充実した命令セットを備えた演算ユニットを内蔵し、高等言語を使ってプログラミングができるプロセッサへと変貌しつつある。

●シェーダセントリックへと向かうグラフィックス

 GPUがプログラマブルなプロセッサへと変化し、シェーダアクセラレータ化して行く。前回のコラム「DirectX 9世代のGPUは“シェーダアクセラレータ”だ」で説明した通り、これは、グラフィックス業界のトレンドからすると当然の流れらしい。というのは、グラフィックス業界が、“シェーダセントリック”へと向かっているからだ。すでにハイエンドのオフラインCG(CGムービー制作)では、シェーディング言語で書かれたシェーダを使うことが当たり前になっている。

SGI Shawn Underwood氏

 「数年前まで、(グラフィックス)アプリケーション開発者のIP(知的所有物)の多くは、レンダリングコアにあった。レンダリングのためのコアテクノロジを開発し、レンダラーの働きを定義することに集中していた。しかし、今はもう違う。開発者たちは、ライブラリやシェーダのIPを開発している。レンダリングコアに努力を費やすかわりに、彼らはシェーダの開発に努力を費やしている」とSGIでグラフィックスを担当するShawn Underwood氏(Director, Visual Computing Product Management)は説明する。

 つまり、レンダリングエンジン自体ではなく、レンダリング過程で様々な効果を加えるシェーダの開発へと焦点が移っているのだという。そして、次はこの波がリアルタイムCGにもやってくると見られている。それは、そうしなければ、これ以上リアルタイムCGの品質を向上させ、差別化することができないからだ。


3Dlabs Bob Sharp氏

 「VPU(=GPU)のトレンドが、プログラマビリティへ向かっているのは、開発者が望んでいるからだ。例えば、ゲームビジネスで開発者が自分たちの製品を差別化しようとしたら、プログラマビリティが欲しくなる。固定パイプラインのVPUでは、新しいゲームも古いゲームも同じように見えてしまうからだ。開発者がどんなに創造的でも、違いが出ない。しかし、新しいシェーディングアルゴリズムを創造できれば、『おい、俺たちのゲームは他のヤツらのとはちょっと違うぜ』と言えるようになる。だから、プログラマブルVPUとOpenGL 2.0のような高等シェーディング言語が必要になる」と3DlabsのBob Sharp氏(Business Manager, Asia-Pacific & Japan)は説明する。

 つまり、オフラインCGだけでなく、リアルタイムCGでも、今以上に高度なグラフィックスを実現しようと思ったら、複雑なシェーダを使う以外に方法はなくなりつつあるのだ。

 これは当然な話で、これまでのGPUアーキテクチャだと、ハードワイヤード実装した機能しか使えない。しかし、プログラマブルなGPUならシェーダ次第で、これまでにない複雑な表現が可能になる。求められる機能が、あるしきい値を超えると、ハードワイヤード実装よりもプロセッサの方が適してくる。3Dグラフィックスは、今、そのしきい値に達したところだ。

 こうした変化により、今後はGPUアーキテクチャの方向も変わる。「これまでのグラフィックスカードはシンプルだった。こっちが速い、こっちが安い、こっちの方がメモリが多い。そういった程度の違いしかなかった。しかし、これからはProgramable Shader(プログラムを実行するGPU内の演算ユニット)のプログラマビリティが重要となる」とATI TechnologiesのEd Huang氏(Director, Workstation)は語る。

 つまり、これまでのGPUは単純に速さ比べをしていたが、今後は、どれだけ複雑なシェーダ(プログラム)を処理できるかへと移って行く。その結果、GPUのフォーカスは、パフォーマンスから、どれだけ複雑で高品質なグラフィックスを作り出すことができるかへと移って行く。リアルタイム処理できる範囲内で、どこまで大きなシェーダプログラムを実行できるかが鍵となる。リアルタイムCGのパラダイムシフトと呼んでもいい、大きな変化が起きるわけだ。

●オフラインCGとリアルタイムCGの垣根をなくす

 ではプログラマブルなシェーダアクセラレータとなるDirectX 9世代以降のGPUでは何ができるのか。究極の目的の1つは、オフラインCGとリアルタイムCGの境界をなくすことだ。CGムービーをリアルタイムに動かすと言い換えてもいい。

 ただし、“オフラインCGとリアルタイムCGの境界をなくす”というのは、GPU業界のうたい文句で、唱えられたのは今回が初めてではない。どころか、新GPUが登場するごとに毎回同じことが言われてきた。そして、常にリアルタイムCGはオフラインCGに引き離されてきた。

 しかし、今回は、これまでと違ってある程度の真実味がある。それは、GPUがプロセッサ化して、シェーダをアクセラレートできるようになるからだ。そうすれば、これまではオフラインCGだけのものだった様々なCG表現が、リアルタイムでも得られるようになる。

 つまり、オフラインCGとリアルタイムCGの本質的な違いがなくなるため、かなり肉薄できると思われる。

 例えば、NVIDIAのDavid B. Kirk(デビッド・B・カーク)氏(Chief Scientist)は次のように説明する。

 「NV30(NVIDIAの次世代GPU)は、映画『ファイナルファンタジー』のキャラクタを、リアルタイムに処理できるだろう。少なくとも、非常に近いレベルには行けると考えている。我々は、昨年のSIGGRAPHで(GeForce3を使って)ファイナルファンタジーのキャラクタを、本物の約4分の1の速度で処理してみせた。その4倍というのは、そう遠い話ではない」

 1シーンに何10分もかけてレンダリングするオフラインレンダリングでしか実現できなかった複雑なシェーダを使うCGを、リアルタイムにレンダリングできるようにすること。それが、シェーダアクセラレータ時代のGPUの目標だ。

 もっとも、ファイナルファンタジーのような、映画並みのフォトリアリスティックなCGはむしろ出発点に過ぎない。むしろ、これからはリアルさの追求だけではなく、これまで見たことがない非リアルな新しい表現へリアルタイムCGも向かうと思われる。シェーダのアルゴリズム次第で、誰も見たことがなかった面白い表現がいくらでもできるからだ。

 実際、7月に米サンアントニオで開催されたコンピュータグラフィックスカンファレンス「SIGGRAPH 2002」では、非フォトリアリスティックなCGがトレンドで、素描画のようなCGなど様々な試みが登場していた。そして、GPUがシェーダアクセラレータ化する今後は、SIGGRAPHで見られるオフラインCGに見られるアルゴリズムが、リアルタイムCGへとシームレスに移植されて行くと見られる。

バックナンバー

(2002年9月4日)

[Reported by 後藤 弘茂]

【PC Watchホームページ】


PC Watch編集部 pc-watch-info@impress.co.jp
個別にご回答することはいたしかねます。

Copyright (c) 2002 Impress Corporation All rights reserved.