オススメ機能
Twitter
お気に入り
記事履歴
ランキング
4Gamer.net
お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
NVIDIAとEpicが「Unreal Engine 4」で採用された新世代グローバルイルミネーション技法を解説。その威力を直撮りムービーでチェックする
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2012/08/03 00:00

ニュース

NVIDIAとEpicが「Unreal Engine 4」で採用された新世代グローバルイルミネーション技法を解説。その威力を直撮りムービーでチェックする

 2012年8月2日,NVIDIAは都内にある同社の日本オフィスで報道関係者向け説明会「Technologies in Games of Tomorrow」(近い将来のゲーム技術)を開催した。2011年10月に同社はゲームグラフィックス技術を解説する説明会を開催しているが,実質的にその第2回と考えていいだろう。
 先の説明会で主題として取りあげられたのは「Battlefield 3」(以下,BF3)だったが,今回の主役はEpic Gamesの最新型ゲームエンジン「Unreal Engine 4」(以下,UE4)だ。


変化するオブジェクトに対応可能な

GI技術を求めて


竹重雅也氏(Developer Technology Engineer, NVIDIA)
 今回の説明会では,まずNVIDIAでデベロッパーテクノロジーエンジニアを務める竹重雅也氏が最新のグラフィックス技術を紹介し,さらに同社のSteven Zhang(スティーブン・ザン)テクニカルマーケティングエンジニアがデモを行ったうえで,Epic Gamesが実際にUE4を動かすという順になっていた。
 UE4にはSIGGRAPH 2011でNVIDIAの発表した新しいグローバルイルミネーション(Global Illumination,以下 GI)技術が採用されているのだが,それがどんなものなのかというのが説明会の主題である。

 さて,GIというのは,間接光を含めたライティング計算を行う手法のことだ。
 下に示したスライドは,GIの有無で何が異なるのかを端的にまとめたもの。従来は,直接光だけとなっている左の画面に対してアーティストが周囲の明度を上げたりライトマップ(=影や反射光などを記録したテクスチャ)を用いたりして,右の画面に近づけるよう調整を行ってきたが,動的なシーンにおいてはどうしても嘘くさくなりがちだった。実際,映画レベルのグラフィックスとゲームグラフィックスの質における大きな違いの1つにGIの有無が挙げられてしまうほどだ。

同じ部屋をレンダリングした例。左が直接光のみ,右が間接光を含めた場合だ。現実世界には間接光があるので右のような感じになるが,間接光を計算できない場合は左のようなイメージになってしまう
Unreal Engine

 竹重氏は2011年の説明会で,BF3によってGIが本格的に実装され,グラフィックスのレベルが一桁上がったという話をしていた。詳しくはそのときのレポート記事を参照してもらえればと思うが,BF3では「ラジオシティ」(Radiosity)ベースの「Enlighten」(エンライトゥン)というGIミドルウェアが用いられていたのを記憶している読者も少なくないのではなかろうか。

 ラジオシティ法では面と面との関係――「互いがどれくらいの間接光を飛ばすか」の情報のことで,「フォームファクタ」と呼ばれる――を事前に計算して保存しておき,レンダリング時には保存されている結果と光線とを乗じて(≒掛けて)間接光を計算している。「レンダリング時には,フォームファクタをライトの情報に乗じるだけで済む」(竹重氏)ため,リアルタイムの計算ができるというわけだ。

Enlightenも使っているラジオシティ法(Finite Element Method:FEM法ともいう)。面を細かく分割して面と面との反射光の関係を予め計算しておき,レンダリング時には計算結果にライトを乗じて間接光を計算する
Unreal Engine

 ただし,ゲーム的に見た場合,本技法には「たとえば壊れる壁などといった,動的なオブジェクトに対応できない」(竹重氏)という弱点がある。フォームファクタは面と面との位置関係で決まるため,面と面との距離などが変わってしまう場合は再計算が必要になり,リアルタイムのレンダリングを行えなくなるわけだ。ゲームでは壁が壊れるようなシーンが十分にありえるので,大きな制限といえる。

 続いて竹重氏が「動的オブジェクトに対応できるGI技法」として名を挙げたのは,Crytekが2010年に発表した「Light Propagation Volumes」(ライトプロパゲーションボリューム)という手法だ。これは,空間を小さなボクセル(Voxel,立方体)に分割して,隣あうボクセルに反射光の情報を書き込むことでGIを実現するというものである。

まず,「直接光の当たったボクセル」にその強さを書き込み,続いて周囲のボクセルに反射光の情報を書き込み,さらに周囲のボクセルに……という流れで,間接光の情報をボクセルに伝達させていくのがLight Propagation Volumesの仕組み
Unreal Engine

ピクセル(pixel)とボクセルの違い
Unreal Engine
 この方法なら動的オブジェクトに対応できるが,竹重氏は問題が2つあると指摘する。1つはボクセルの解像度を上げると,使用するメモリ容量と計算量が大幅に増える点。ボクセルが3次元なので,必要なメモリ容量は解像度の3乗倍で増える(※縦×横×高さ)形になる。そのため,どうしてもボクセル解像度には限界が生じてしまう。
 もう1つは,光の方向情報が失われるという点だ。ボクセルの隣から隣へと伝達しているうちに方向がぼやけていくためだと,竹重氏は述べている。

 そして,ここからが本題だ。ここまでに挙げたような問題点をある程度クリアできる手法としてNVIDIAが発表したのが,「Interactive Indirect Illumination Using Voxel Cone Tracing」(ボクセルコーントレーシングを用いたインタラクティブインダイレクトイルミネーション)である。びっくりするほど長いが,「『Sparse Voxel Octree』(スパースボクセルオクツリー)を使うGI」,略してSVOGIと呼ばれることが多い。

 なので本稿でも以下,SVOGIと表記するが,下のスライドで示されているとおり,SVOGIでは空間を八分木(Octree)で分割するのが大きな特徴だ。まず空間を大きな立方体に分割し,それを基にしてさらに8分割し,さらに8分割……という風に枝分かれさせて空間を小さなボクセルに分けていく。このとき「何もない空間」には枝を作らないため,Light Propagation Volumesに比べると使用するメモリ容量はかなり抑えられるというわけである。

八分木を使って空間をボクセル分割するのがSVOGIのキモだ
Unreal Engine

 さらに竹重氏は,GPUで分割の処理をすべて行うため,高速に処理できるのがSVOGIのメリットだと述べていた。ボクセルをすべて再構成するのに20ms――これはおそらくGeForce GTX 680を用いる場合だろう――という話なので,相当に速い。

SVOGIの処理の概要を記したスライド。まず,ボクセルに直接光の情報を書き込み,それを1つ上の階層に集めて平均化。さらに1つ上の階層に集めて平均化するような処理を行うのだという
Unreal Engine
 ……と,このようにして分割したボクセルを使ってGIを実現するのだが,その方法は少々ややこしい。
 まずボクセルに直接光の情報を書き込む。ボクセルに書き込まれる情報はジオメトリや色,ガウスローブ関数(どの方向にどれくらいの強さがあるかを示す関数)だそうだ。そのうえで,1つ上の階層に光の情報を集めて平均化し,その情報を書き込んで,さらに上の階層へといった具合に情報を埋めていく。こうすることで,八分木の枝を上るごとに,1段階粗い情報が書き込まれることになるわけである。
 竹重氏はMIP-MAP(テクスチャの階層)に喩えていたが,たしかに「光に関する粗い情報」を,八分木を使って持っておくというのは,MIP-MAPに近い。

八分木を使って,光に関する階層を作っていく。テクスチャのMIP-MAPのように,上の階層へ上るほど粗い情報が得られるようになる
Unreal Engine

 そしてSVOGIでは,以上のような情報を基に,「Voxel Cone Tracing」(ボクセルコーントレーシング)という手法でレンダリングを行う。間接光の計算にあたって,光を1つ1つ追跡して計算するのは負荷が高いため,表面から離れるにしたがってコーンの半径を大きくする。そしてそれに合わせて,八分木の階層から,より粗い情報を用いて間接光を計算していくというわけだ。
 カメラ位置から見える反射光は,下のスライドで「Specular Cone」(スペキュラコーン,反射コーン)と記されている細いコーンを使って計算するとのことだった。

間接光の計算にあたっては,コーンを使って計算量を抑える。表面から離れるにしたがって,八分木の「1つ上の階層」を使うことで計算量を抑える仕組みだ
Unreal Engine

Unreal Engine
 というわけで,このあたりは前述のとおり,Zhang氏がリアルタイムデモを披露してくれたので,下に示した直撮りムービーを見てほしい(※手持ちで撮影しているため,やや手ブレているのはご了承を)。動くオブジェクトや,いきなり現れるオブジェクトにもGIが対応できていることが分かるはずだ。さらに,表面の質感を変えたときの反射といったものがリアルに表現できていたりもするので,そのあたりはZhang氏の日本語解説をどうぞ。



GIやパーティクルのリアルな表現が

可能になるUnreal Engine 4


 SVOGIそのものの説明が長くなったが,このSVOGIは夢の技術ではなく,すでにUE4上で実装されている。

下田純也氏(Support Manager, Epic Games Japan)
Unreal Engine
 説明会では,Epic Games Japanの下田純也氏が,UE4の大きな特徴として,SVOGIの実装と,GPUを使ったパーティクル(粒子)の実装を挙げていた。SVOGIは,Zhang氏が披露したNVIDIAのデモだとOpenGLベースの実装になっていて,NVIDIA専用の拡張命令も利用しているのに対し,UE4ではCompute Shaderベースの実装になっており,NVIDIA製GPU以外でも利用できるのがポイントだ。
 また,GPUパーティクルでは「『Unreal Engine 3』(以下,UE3)で実装していたパーティクルをGPUで演算するようにした」と下田氏。100万以上のパーティクルをGPU処理で表現できるようになったとのことである。

UE4にはSVOGIが実装される(左)。パーティクルはUE3でも実装されていたが,UE4ではGPU側で演算を行えるようになり,100万以上ものパーティクル表現が可能になったという(右)
Unreal Engine Unreal Engine

 UE4の威力は,YouTube上で公開されているデモムービーからも確認できる。流れる溶岩が放つ光が壁に反射したり,壊れる天井とともに光がダイナミックに変わったりする様子が,GI効果とともに見て取れるはずだ。
 また,火の粉や煙といった形で利用されているパーティクルが,光を受けて色合いや明るさを変化させるあたりもチェックしてほしい。


 説明会ではさらに,下田氏がUE4を使って“デモの続き”を披露してくれたので,こちらも直撮りしてみた。下に示したムービーは12分半もあるので,主な見どころを先に挙げておくと,2分30秒あたりの「動的に床をぬらす」のはなかなかおもしろい。UE4ではスペキュラマップやノーマルマップをテクスチャへ動的に貼り付けられるそうで,そのデモということになる。
 4分40秒あたりからの,ライトを使った間接光のデモや,5分50秒あたりから始まるパーティクルのGPU処理デモ,8分40秒あたりから始まる,目の暗順応シミュレーションやレンズフレアの解説も興味深いところだ。


 ところで,先ほど竹重氏が登場した段でボクセル分割の所要時間が20msという話が出てきたが,下田氏は,「UE4では,画面の中でオブジェクトが変化したときに,変化したところだけボクセルを作り直している」と説明していた。八分木構造を活かして,変化があった枝を切って作り直しているのだろう。

 また,煙のようなパーティクルは光に合わせて明るさや色を変えるが,GIを含めた環境光を考慮するパーティクルと,そうではないパーティクルがあるとも下田氏は語っていた。前者はかなり計算負荷が高いので,通常は後者を利用することが多くなる可能性もありそうだ。

 いずれにしても,ダイナミックなオブジェクトの変化に対応するGIとパーティクル,計2要素のおかげで,UE4の映像はまるでプリレンダリングされたビデオもかくやという美しさである。ゲームグラフィックスが,さらに1つレベルを上げたと実感させるパワーを持っていると述べていいのではなかろうか。

PhysXはUE3でも利用されていたが,UE4では衝突や干渉の計算なども含めてすべての物理シミュレーションをPhysXベースで行うようになったという(左)。さらに,PhysXの使い勝手やマルチプラットフォーム環境に向けた互換性を向上させるAPEXへの対応も進めているところだそうだ
Unreal Engine Unreal Engine

 ちなみにUE4を利用した初のゲームとしては,“ゾンビアクション”となる「Fortnite」のリリースが予定されている。
 下に示したムービーは,説明会で流れたのと同じトレイラーだ。細かく見ると,リアルタイムGIが効いているシーンを多数確認できるはずである。


先ほど掲載した直撮りムービー内でも語られているが,UE4では,「Unreal Engine Editor」上でGIがリアルタイムで計算されるのが特徴だ。下田氏は,ゲーム開発の効率が上がるとアピールしていた
Unreal Engine
 UE3は,日本のゲームデベロッパでも採用例が多かったので,おそらく,将来的には,日本でもUE4ベースのタイトルがリリースされるだろう。
 ただ,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

  • 関連タイトル:

    Fortnite

  • この記事のURL:
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
企画記事
トピックス
スペシャルコンテンツ
注目記事ランキング
集計:06月25日〜06月26日