Game Developers ConferenceレポートMicrosoft DirectX Day開催、次世代ゲームグラフィックスの姿とは?
開催地:San Jose McEnery Convention Centerなど
MSDXDayは、プレス向けの情報開示というよりは、完全にゲーム開発者のための技術講習的な意味合いが強く、主催はMicrosoft、聴者はゲーム開発者が中心、壇上に上る講師もゲーム開発者であるため、まさに「開発者の、開発者による、開発者のためのカンファレンス」といったコンセプトになっている。具体的には以下の題目による講演が行なわれた。
■空間的レンダリングとライティング効果~幽霊や竜巻もお手の物に 空間を表現するレンダリング技術に関するセッションでは、フォトリアリスティックなビジュアルを実現するための具体的なテクニックが提示された。 まず、3Dグラフィックスは基本的に表示されているすべてのオブジェクトにフォーカスが合ってしまっているため、被写界深度の概念がない。これをプログラマブルシェーダを活用して実行しようという例が示された。これはフォーカスが合っているか合ってないかを数値化したアルファマップを用意し、これをもとにプログラマブルシェーダでフィルタリング処理をしていくことで実現する。 具体的にはプログラマブルピクセルシェーダを用いてドット単位にアルファマップを参照し、フォーカスがあってないところはブラー処理を大きく行なってぼやけさせ、フォーカスがあっているところはブラー処理をあまりせずに普通のレンダリング結果が残る……という感じに処理される。
3dfxのVoodoo5のようにレンダリングした各フレームをアルファ合成するのではなく、プログラマブルシェーダを活用しているのが現代的(もしくはDirectX8.x的?)だといえる。
そしてドアの隙間から漏れる光や、霧の表現に役に立つと思われる、明確な立体的な形状を持つ半透明空間のレンダリングテクニックも示された。従来はこうした表現は半透明オブジェクトでごまかしていたのだが、「まやかし」なので3Dオブジェクトと交差した場合に、嘘が露呈する。今回示された例は、ジオメトリレベルで矛盾が出ない方法だった。 直感的にはプログラマブルピクセルシェーダを用い、ドット単位にフォグ量を計算していくアプローチを取る。少々難しいので解説すると、Wバッファ(バックバッファ)にレンダリングしたいボリュームの最後面をレンダリングする。続いて、最前面を別のWバッファにレンダリングし、先のWバッファで引き算をしてやると、ドット単位ごとの、ボリューム量(霧の層の厚さ)が求められる。あとはこれを先ほどの被写界深度の例と同じようにアルファマップ(フォグマスクマップ)として参照してやり、ドット単位でプログラマブルピクセルシェーダでアルファ合成処理してやればよい。 完全な3Dオブジェクトとして扱えるため、このボリュームにテクスチャを張ることも可能。デモンストレーションではノイズのテクスチャを張り、これをアニメーションさせることで、無数のパーティクル(粒子)が立体的な形状を形成しながら渦を巻くような表現が示された。これは竜巻などの表現、うごめく幽霊のような表現も膨大なパーティクルを使わずに比較的軽い処理で(ただしプログラマブルピクセルシェーダがあればだが)実現できることだろう。
■表面材質の物理~ワックスがけされた車はどう光る? このセッションでは表面材質が変わったときに光の反射がどう変わるか、についての技術解説が行なわれた。
基本的なライティング演算に関する話が行なわれたが、1つユニークなテクノロジが示された。ここでは、1つはオブジェクトの表面が複数の材質が重なって形成されていた場合のシミュレーションだ。たとえば、金属面にワックスを掛けた場合はどう光るのか、もっと具体的に言えばワックスがけされた車はどう光るのか……という議論だ。
■DirectXにおけるシェーダの最適化など
「Visual C++7.0におけるシェーダーデバッギング」では非常に強力なプログラマブルシェーダデバッガのβ版が公開され、これまで数学的な知識と、物理的な理解がないとなかなか難しかったこのシェーダープログラミングを、カット&トライによるプロトタイピングが可能になることを明らかにした。その際に用いられるラスタライザはソフトウェアベースのリファレンスラスタライザで、1命令単位のステップ実行ができる。 「DirectXにおけるシェーダー高級言語」という講義では、これまでアセンブラ(機械語)ライクな低級言語で記述していたプログラマブルシェーダを、C言語ライクな高級言語で記述しよう、という提案のセッションで実際に、その開発環境のβ版が公開された。 「再起構造が使えない」、「ポインタ変数が使えない」という制限はあるものの、ほぼ完全なC言語スタイルの文法を採用しているのが特徴。ハードウェアごとに微妙に違うプログラマブルシェーダの違いを吸収する意味合いもあるようだ。これは、DirectX 8.1になってATI系とNVIDIA系でプログラマブルシェーダの仕様が分極化してしまったことへの対応の意味合いもあるのかもしれない。
□GDCのホームページ (2001年3月21日) [Reported by トライゼット 西川善司] |
I |
|
GAME Watchホームページ |