ニュース
NVIDIAとEpicが「Unreal Engine 4」で採用された新世代グローバルイルミネーション技法を解説。その威力を直撮りムービーでチェックする
先の説明会で主題として取りあげられたのは「Battlefield 3」(以下,BF3)だったが,今回の主役はEpic Gamesの最新型ゲームエンジン「Unreal Engine 4」(以下,UE4)だ。
変化するオブジェクトに対応可能な
GI技術を求めて
UE4にはSIGGRAPH 2011でNVIDIAの発表した新しいグローバルイルミネーション(Global Illumination,以下 GI)技術が採用されているのだが,それがどんなものなのかというのが説明会の主題である。
さて,GIというのは,間接光を含めたライティング計算を行う手法のことだ。
下に示したスライドは,GIの有無で何が異なるのかを端的にまとめたもの。従来は,直接光だけとなっている左の画面に対してアーティストが周囲の明度を上げたりライトマップ(=影や反射光などを記録したテクスチャ)を用いたりして,右の画面に近づけるよう調整を行ってきたが,動的なシーンにおいてはどうしても嘘くさくなりがちだった。実際,映画レベルのグラフィックスとゲームグラフィックスの質における大きな違いの1つにGIの有無が挙げられてしまうほどだ。
竹重氏は2011年の説明会で,BF3によってGIが本格的に実装され,グラフィックスのレベルが一桁上がったという話をしていた。詳しくはそのときのレポート記事を参照してもらえればと思うが,BF3では「ラジオシティ」(Radiosity)ベースの「Enlighten」(エンライトゥン)というGIミドルウェアが用いられていたのを記憶している読者も少なくないのではなかろうか。
ラジオシティ法では面と面との関係――「互いがどれくらいの間接光を飛ばすか」の情報のことで,「フォームファクタ」と呼ばれる――を事前に計算して保存しておき,レンダリング時には保存されている結果と光線とを乗じて(≒掛けて)間接光を計算している。「レンダリング時には,フォームファクタをライトの情報に乗じるだけで済む」(竹重氏)ため,リアルタイムの計算ができるというわけだ。
ただし,ゲーム的に見た場合,本技法には「たとえば壊れる壁などといった,動的なオブジェクトに対応できない」(竹重氏)という弱点がある。フォームファクタは面と面との位置関係で決まるため,面と面との距離などが変わってしまう場合は再計算が必要になり,リアルタイムのレンダリングを行えなくなるわけだ。ゲームでは壁が壊れるようなシーンが十分にありえるので,大きな制限といえる。
続いて竹重氏が「動的オブジェクトに対応できるGI技法」として名を挙げたのは,Crytekが2010年に発表した「Light Propagation Volumes」(ライトプロパゲーションボリューム)という手法だ。これは,空間を小さなボクセル(Voxel,立方体)に分割して,隣あうボクセルに反射光の情報を書き込むことでGIを実現するというものである。
もう1つは,光の方向情報が失われるという点だ。ボクセルの隣から隣へと伝達しているうちに方向がぼやけていくためだと,竹重氏は述べている。
そして,ここからが本題だ。ここまでに挙げたような問題点をある程度クリアできる手法としてNVIDIAが発表したのが,「Interactive Indirect Illumination Using Voxel Cone Tracing」(ボクセルコーントレーシングを用いたインタラクティブインダイレクトイルミネーション)である。びっくりするほど長いが,「『Sparse Voxel Octree』(スパースボクセルオクツリー)を使うGI」,略してSVOGIと呼ばれることが多い。
なので本稿でも以下,SVOGIと表記するが,下のスライドで示されているとおり,SVOGIでは空間を八分木(Octree)で分割するのが大きな特徴だ。まず空間を大きな立方体に分割し,それを基にしてさらに8分割し,さらに8分割……という風に枝分かれさせて空間を小さなボクセルに分けていく。このとき「何もない空間」には枝を作らないため,Light Propagation Volumesに比べると使用するメモリ容量はかなり抑えられるというわけである。
さらに竹重氏は,GPUで分割の処理をすべて行うため,高速に処理できるのがSVOGIのメリットだと述べていた。ボクセルをすべて再構成するのに20ms――これはおそらくGeForce GTX 680を用いる場合だろう――という話なので,相当に速い。
まずボクセルに直接光の情報を書き込む。ボクセルに書き込まれる情報はジオメトリや色,ガウスローブ関数(どの方向にどれくらいの強さがあるかを示す関数)だそうだ。そのうえで,1つ上の階層に光の情報を集めて平均化し,その情報を書き込んで,さらに上の階層へといった具合に情報を埋めていく。こうすることで,八分木の枝を上るごとに,1段階粗い情報が書き込まれることになるわけである。
竹重氏はMIP-MAP(テクスチャの階層)に喩えていたが,たしかに「光に関する粗い情報」を,八分木を使って持っておくというのは,MIP-MAPに近い。
そしてSVOGIでは,以上のような情報を基に,「Voxel Cone Tracing」(ボクセルコーントレーシング)という手法でレンダリングを行う。間接光の計算にあたって,光を1つ1つ追跡して計算するのは負荷が高いため,表面から離れるにしたがってコーンの半径を大きくする。そしてそれに合わせて,八分木の階層から,より粗い情報を用いて間接光を計算していくというわけだ。
カメラ位置から見える反射光は,下のスライドで「Specular Cone」(スペキュラコーン,反射コーン)と記されている細いコーンを使って計算するとのことだった。
GIやパーティクルのリアルな表現が
可能になるUnreal Engine 4
SVOGIそのものの説明が長くなったが,このSVOGIは夢の技術ではなく,すでにUE4上で実装されている。
また,GPUパーティクルでは「『Unreal Engine 3』(以下,UE3)で実装していたパーティクルをGPUで演算するようにした」と下田氏。100万以上のパーティクルをGPU処理で表現できるようになったとのことである。
UE4の威力は,YouTube上で公開されているデモムービーからも確認できる。流れる溶岩が放つ光が壁に反射したり,壊れる天井とともに光がダイナミックに変わったりする様子が,GI効果とともに見て取れるはずだ。
また,火の粉や煙といった形で利用されているパーティクルが,光を受けて色合いや明るさを変化させるあたりもチェックしてほしい。
説明会ではさらに,下田氏がUE4を使って“デモの続き”を披露してくれたので,こちらも直撮りしてみた。下に示したムービーは12分半もあるので,主な見どころを先に挙げておくと,2分30秒あたりの「動的に床をぬらす」のはなかなかおもしろい。UE4ではスペキュラマップやノーマルマップをテクスチャへ動的に貼り付けられるそうで,そのデモということになる。
4分40秒あたりからの,ライトを使った間接光のデモや,5分50秒あたりから始まるパーティクルのGPU処理デモ,8分40秒あたりから始まる,目の暗順応シミュレーションやレンズフレアの解説も興味深いところだ。
ところで,先ほど竹重氏が登場した段でボクセル分割の所要時間が20msという話が出てきたが,下田氏は,「UE4では,画面の中でオブジェクトが変化したときに,変化したところだけボクセルを作り直している」と説明していた。八分木構造を活かして,変化があった枝を切って作り直しているのだろう。
また,煙のようなパーティクルは光に合わせて明るさや色を変えるが,GIを含めた環境光を考慮するパーティクルと,そうではないパーティクルがあるとも下田氏は語っていた。前者はかなり計算負荷が高いので,通常は後者を利用することが多くなる可能性もありそうだ。
いずれにしても,ダイナミックなオブジェクトの変化に対応するGIとパーティクル,計2要素のおかげで,UE4の映像はまるでプリレンダリングされたビデオもかくやという美しさである。ゲームグラフィックスが,さらに1つレベルを上げたと実感させるパワーを持っていると述べていいのではなかろうか。
ちなみにUE4を利用した初のゲームとしては,“ゾンビアクション”となる「Fortnite」のリリースが予定されている。
下に示したムービーは,説明会で流れたのと同じトレイラーだ。細かく見ると,リアルタイムGIが効いているシーンを多数確認できるはずである。
ただ,UE4はDirectX 11が前提となっているため,DirectX 9世代に留まる現行世代のゲーム機では使い切れない。現実的には,次世代の据え置き型ゲーム機向けゲームエンジンということになるだろう。
また,SVOGIはGPU負荷が非常に高いため,ミドルクラス以下のGPUでは動作が厳しいことも予想される。下田氏は,「ボクセルの解像度を減らすと映像が不自然になる」として,性能が低いGPUを搭載した環境では,SVOGIを無効化するのが現実的な選択肢になるとも示唆していた。当面の間,UE4はPC向けのゲームエンジンということになるが,UE4ベースのゲームタイトルを美しいグラフィックスで堪能したいなら,ハイエンドのPC環境が必要になるはずである。
それにしても,リアルタイムで動くUE4のデモは相当なインパクトがあった。今後のゲームグラフィックスが実に楽しみだ。
NVIDIA日本語公式Webサイト
Epic Games Japan公式Webサイト
- 関連タイトル:
Unreal Engine
- 関連タイトル:
GeForce GTX 600
- 関連タイトル:
フォートナイト
- この記事のURL:
キーワード
(C)2011, Epic Games, Inc. Epic, Epic Games, the Epic Games logo, Fortnite, the Fortnite logo, Unreal, Unreal Engine 3 and UE3 are trademarks or registered trademarks of Epic Games, Inc. in the United States of America and elsewhere. All rights reserved.