SIGGRAPH 2009 Report 8/3(Day1) "3D Graphics and Games"

Advances in Real-Time Rendering in 3D Graphics and Games 1 and 2 に参加してきました。

このセッションはCoursesと呼ばれ、授業のような形で実際のゲームで使われた手法を開発者が解説してくれるというものです。 1では導入とHalo3に利用されたライティングやシャドウを中心としたレンダリング手法を中心の解説が行われました。

その内容について各章ごとに簡単に説明をしつつ今回の紹介を行いたいと思います。

・導入

ゲームハードウェアやアルゴリズムは年々ものすごい速度で進歩していっており、ここ近年特にGPU、マルチコアCPUによるアクセラレータの登場により 非常に目覚しい進歩をするとともに要求されるグラフィックスやAIの質も重視されています。 去年との主だった違いは、登場したばかりであったGPGPUの利用法がいろいろ場面での利用を考えられているといったところです。

・Real-Time Lighting

リアルタイムライティングセッションではHalo3に利用されたライティング技術について紹介されました。 特に私が興味を持ったものは大気に関するライティング処理です。 アンビエント光(厳密には違いますが、太陽からの直接光)は大気に触れることで散乱(scattering)します。 その散乱した光によって生み出される空気感をいかにしてライティング処理を行うかといった問題を扱っていました。 具体的な処理として ・Real-Time Lighting ・Pre-Rendered GPU Lighting ・Texture Mapping 等があり、普通に処理をするだけではとてもコストの高いscatteringを用いた大気感の演出を行っています。 特に日没付近での、日光が地球の表面を覆うように散乱するようなシーン、上の層から下の層にかけて大気の色が変化しているシーンの再現も行っていました。

・Real-Time Shadowing

リアルタイムシャドーとは、シャドーマッピングをリアルタイムで計算してシーンに反映させることです。 一般に簡易なシャドーマップはエッジがきっちり出てしまうので、ガウシアンブラーを適用することによって影らしさを表現します。 しかしながら、それを行うと拡大縮小に弱く、フォトリアリスティックとは言いにくいものになります。 他にもさまざまな問題があるのですが、これらの問題をガウシアンKDTreeなどを利用してその問題を解決しようとしています。

こちらもGPUを利用したPreComputing、リアルタイムを組み合わせ、先ほどのReal-Time Lightingと合成することで非常にフォトリアリスティックなシーンを 作り上げることができるとのことです。

・個人的な感想

GPGPUを利用した高速演算は確かに魅力的な手法の一つなのですが、ディスプレイへの出力を行っている装置でもあるため、資源を利用しすぎると画面がストールする原因 となることが多いです。

今回もGPGPU利用はプリレンダリングに利用されているといった内容が多く(GPUによるレンダリングではなく)、ゲームでリアルタイムで利用するにはコストが高すぎる点が 伺えます。(なぜならゲームは16msに1回の頻度で画面を更新する必要があるため、GPGPUを使用するためのメモリ確保や転送時間は非常にコストとして重い) しかしながら、GIによるフォトリアリスティックイメージの生成にリアルタイムライティング、リアルタイムシェーディングの計算は欠かせないものです。

今後の新アーキテクチャの発達、新アルゴリズムの開発にも目が離せないものがありますね。

Note: こちらのプレゼンテーションスライドは後にHalo3、バンジーの各社ホームページにて公開されますので、具体的手法に関しましてはそちらをご参照ください。

Author: 松浦