西川善司の3Dゲームファンのためのグラフィックス講座・E3特別編その7

次世代ゲーム機での動作を想定したUnreal Engine“4”が登場
事前計算なしの驚愕のフルダイナミック・リアルタイム大局照明レンダリングシステムを搭載


6月5日~7日開催(現地時間)

会場:Los Angeles Convention Center


 今世代のプレイステーション 3、Xbox 360に代表されるDirectX 9世代プログラマブルシェーダ3.0仕様(Shader Model3.0)ベースの3Dゲームグラフィックス開発において、非常に大きな影響を与えたのはEPIC GAMESのUnreal Engine3(UE3)だった。

 UE3は、PS3、Xbox 360の黎明期におけるプログラマブルシェーダーベースのゲームグラフィックスのベンチマーク的存在になっただけでなく、「ゲームエンジンがもたらす開発効率の向上」というものを世界中の開発者に布教した。

 UE3は、PS3が登場する2年以上前(Xbox 360が登場する1年以上も前)の2004年春に初お披露目があり、この時は、そこで見せていたものが本当に実機でリアルタイムに実現されるのかが、半信半疑だったものだ。しかし、後に同社が発売した「Gears of War」シリーズなどで、それが実際に実現されていることを目の当たりにして「確かに本当だった」と恐れ入ったものだ。


200万ポリゴンで元モデルをデザインこれを5,000ポリゴンにまで削減
数百万ポリゴン相当のディテールは法線マップに落とし込んでジオメトリ負荷は5,000ポリゴン状態でレンダリングするこうしたパイプラインは現在のPS3、Xbox 360世代のゲームグラフィックスでは当たり前となったわけだが、当時はこれがリアルタイムレンダリングでグリグリ動くことが信じられなかった

 そんな「次世代ゲームグラフィックスの予言者」であるEPIC GAMESが、次世代ゲームエンジン「Unreal Engine4」を今回のE3で公開したのだ。実際には、3月のGDC2012にて、UE3ライセンシーには見せていたようなのだが、今回のE3では、めでたく一般メディアへの公開が解禁となったのだ。




■ UE4もフルDeferred系レンダリングエンジンに移行

 まずは映像を見て頂こう。

エンジンのエッセンスを映像作品風にまとめたシネマティック動画

解説付きの動画

 UE4では、レンダリングシステムがフルDeferredベースになったと説明されている。

 Deferred系のレンダリングメソッドについては本連載「KILLZONE2」編が詳しいのでそちらを参照して欲しいが、簡単に解説すると、先にジオメトリをレンダリングし、その際にライティングやシェーディングに必要な中間パラメータ群をテクスチャに出力してしまう。DirectX 9世代以降のGPUは、1回のレンダリングパスで複数バッファ(テクスチャ)に出力できるMRT(マルチ・レンダー・ターゲット)の機能があるので、これを有効活用するのだ。DirectX 9世代は4出力の4MRTまで、DirectX 10世代以降のGPUだと8MRTまでが可能だ。そして、MRTで出力した複数の中間パラメータが記録されているテクスチャを参照しながら最終的なレンダリングフェーズを動かす。その際には、光源をポストエフェクトのようにレンダリングしていくようなアプローチを取る。シェーディングやライティングを“後回し”にするからDeferred(遅らせた)系レンダリングメソッドと言われるのだ。これに対し、従来のレンダリングメソッドはForward系と呼ばれる。


デカールテクスチャを投射マッピングするのではなく、マテリアル特性を投射マッピングする「Deferred Decals」

 Deferred系の特長は、通常のレンダリングメソッドでは有限個に限られる動的光源の数を、パフォーマンスが許す範囲で無制限に置けるということ。このため、非常にリッチなビジュアルが実現できるのだ。

 UE4では、フルDeferred系エンジンになったことで、ユニークなライティング表現、マテリアル表現ができるようになったとしている。

 その1つが「Deferred Decals」だ。

 これは、リアルタイムにマテリアル特性をシーンに投射マッピングするもので、デモでは、氷でできた球体を転がして石畳の床にこすりつけて、その氷の質感が石畳の質感とミックスされる様を見せていた。

 「Emissive Materials」(発光体)のような、自らが発光している素材表現も、Deferred系の得意とするところだ。デモでは溶岩から出てきたようなハンマーを、溶鉱炉から取り出して、部屋の中がちゃんと鈍く照らせていることを示していた。


自発光オブジェクトの表現。もちろんその光は他者をライティングすることができる




■ UE4のレンダリングエンジンの最大の強みは事前計算なしのスペキュラ対応のリアルタイムGI


Alan Willard氏(Senior Technical Artist, EPIC GAMES)

 UE4のレンダリングエンジンのキモと言えるのは、間接光(Indirect Lighting)ライティングシステムだ。これは別の言い方をすると、大局照明(Global Illumination:GI)のことである。

 UE4では、事前計算なしの、大局照明エンジンを搭載しており、これはシーンの固定を強要しない、フルダイナミックかつリアルタイムなGIシステムだと説明されている。
 Alan Willard氏(Senior Technical Artist, EPIC GAMES)にどんな仕組みなのかを訊いたところ「SPARSE VOXEL OCTREE」(SVO)法であることを明かしてくれた。

 UE4が採用したSVO法を用いたGIテクニックは、Cyril Crassin氏らがSIGGRAPH2011て発表した「Interactive Indirect Illumination Using Voxel Cone Tracing: An Insight」を実装したものといってよさそうだ。

「Interactive Indirect Illumination Using Voxel Cone Tracing: An Insight」のデモ映像より

シーンをボクセル化

 結論から言うと、これはCRYTEKが開発したLight Propagation Volume(LPV)法をよりスマートに進化させたものだといえる。

 詳細は論文の方に譲り、本稿では概念だけを解説するが、大きく分けて2つのステップでレンダリングを行なう。

 まず最初に行なうのが、これからレンダリングするシーンのジオメトリをまるごとをボクセル化するプロセスだ。ちなみにピクセルはx,y平面を構成する画素、ボクセルとはx,y,z(縦横高さ)を構成する立体画素のようなイメージだ。


八分木によるボクセル化。ここがミソ

 LPV法では、空間を等間隔で分割したボクセルの概念を利用していた。なので広いシーンで何もない空間が多いと、ほとんどのボクセルが「実体物なし」のNULLノードとなり、データとしての冗長性が大きい。

 UE4が採用したのSVO法では、シーンを八分木(Octree)で分割する。実体物があるところには最小単位のボクセルを割り当て、何もないところには少ない数の最大サイズのボクセルを割り当てる。


事前計算なしで1発でシーンを八分木ボクセル化。その処理自体もGPUだけで完結

 「ポリゴンベースのジオメトリ空間をボクセル化→八分木化」の流れは、ライティングやシェーディングなしのZバッファレンダリングのような手法とGPGPU的なアプローチを組み合わせて行なう。このあたりの発想はいかにも「次世代」という感じがする。


LPV法、レイトレーシング法との比較。2バウンスなので奥まった情景への間接光の影響はレイトレーシングには及ばないが、LVP法よりは間接光を広く影響させられている

 実際のライティングパイプラインでは、まず普通に直接光ベースのレンダリングを行なって、その面に置けるライティング結果と光源の向きを対応するボクセルに記録する。

 このままだと離散的過ぎるので、その情報を同一の八分木内でフィルタリング処理を行なって拡散させる(端的に言えばボカす)。

 最終的なライティングフェーズでは、拡散反射であれば全方位(複数方向)に向けてレイを飛ばして(実際には八分木への探索処理になる)、ボクセル内に格納されている光量を取得してライティング結果に反映してやる。

 この手法が強力なのは、これまでの疑似GI手法と違って、間接光による鏡面反射の表現までも実現できてしまうところだ。具体的には、そのレイを飛ばす(八分木への探索)方向を、視線ベクトルと法線ベクトルから求められる反射ベクトルにの方向に行なえばいいのだ。

 八分木構造なので、何もない空間における探索もNULLノードを延々となぞる必要がないため、広範囲に広がる間接光の表現も高速に行なえるメリットもある。

 アルゴリズムの都合上、2バウンス(二次反射光)までのGIにはなるが、ここまでの表現ができれば必要十分だといえよう。


512×512×512の八分木ボクセル化はGeForce GTX 480で5.5ms程度。次世代機ならばもっと短縮できるはず?

 何より強力なのが、そのシーンに人体のような変形するオブジェクトがあろうが、シーンが壊滅的に破壊しようが、そのシーンをその都度、八分木ボクセル化し直すだけで、このGIシステムが利用できるのが強力だ。GPUパワーが十分ならば毎フレーム八分木ボクセル化し直したっていいだろう。


間接光で明るく照らされる屋内

 今回のデモでは、動的光源がほとんどないにも関わらず、太陽に照らされた強い間接光が存在するために、シーン全体がほのかに明るくなる様子が示された。

 さらに、これが動的にかつ、リアルタイムに行なわれることを示すために、グルグルと回転する太陽系儀が置かれている部屋での間接光ライティングのデモも示された。ここも「太陽が床を照らしている」という状況自体は先ほどのシーンと同じだが、この床には赤/緑/青に色が変わる絨毯が敷かれており、屋内のあらゆるオブジェクトが、太陽の光を受けて鈍く輝く絨毯の色の間接光で照らされる。

 続いて、光源自体が動いても、間接光が正しく発生して、他者をライティングすることを示すために、この太陽系儀の部屋でスポットライトを移動させながら照らす実験を披露。スポットライトをカーテンに向けると、そのカーテンの反射光が、今度は部屋を照らすようになり、そのスポットライトの向きを変えると、その反射光の出る位置も変わっていた。


絨毯の色を変えれば、部屋はちゃんとその色の間接光でライティングされる
スポットライトで天井の赤いカーテンに光を照射。その間接光が壁に広がる

 この間接光ライティングシステムは、UE4において基本的なライティングエンジンとして機能しているので、パーティクルシステムにもちゃんと影響を与えられる。デモではパーティクルで表現される煙が、直接光と間接光の両方にライティングされ、なおかつ、柔らかい影までを地面に投射する様が示された。

間接光ライティングはパーティクルシステムにも影響を及ぼす



■ UE4ベースのゲームが実際に動作するのはいつか?

 UE4では、GPGPUの活用が積極的に行なわれている。

 その応用先の1つが「GPUパーティクル」と呼ばれる技術だ。

 これは、パーティクル自体の発生、物理シミュレーション、最終的な描画にいたるまで、すべてをGPU内で完結して実行する仕組みだ。

 処理にCPUが一切介入しないため非常にパフォーマンスが高く、今回のデモでは100万個以上のパーティクルを出現させ、その全てに特定の力場の影響を受けさせて動かす様子を見せていた。銃弾が壁にヒットしたときの火花や火炎、雨や雪のような気象現象など、それほどゲームの本筋には関わりのない、「賑やかし目的」「演出効果目的」のエフェクトには有効だろう。


GPUパーティクルのデモ。火の粉
GPUパーティクルのデモ2。氷の粒子

 この他、デモでは、光学的理論に比較的正確なポストエフェクト、天球シミュレーションによる昼夜の表現と、リアルタイム影生成なども紹介された。


UE4では、光学的に正確な各種レンズエフェクトをポストエフェクトの形で搭載する。例えば、レンズフレアは、フレーム内のどんなに小さい物でも、高輝度であれば、虚像に何らかの影響を及ぼす
同一シーンにおける昼夜の表現。ここでも間接光ライティングの威力の片鱗がうかがい知れる
「表面下散乱技術も実装ずみ」とアピールされたが、これは3Dモデルの裏面と表面の深度値の差から厚みを求め、その厚みに基づいて透過光を決定するような疑似的な手法によるものだと推察される

 今回のデモは、Shuttle製の小さな筐体の64bit Windows 7ベースのPCで動作しており、ハードウェアスペック的には、CPUにインテルCore i7、GPUにNVIDIAのGeForce GTX 680、メインメモリは16GBといったところで、いわゆる今世代のハイエンドPCで動作していたという感じだ。

 UE4は、DirectX 11世代以上のグラフィックスプロセッサ、そして64bitシステムを前提とした設計になっており、この要件に適合する家庭用ゲーム機は現状は存在しない。従って、EPIC GAMESとしては、当面、UE4は、「ハイエンドPC向け」という位置付けにするそうで、家庭用ゲーム機への対応に関しては次世代機のスペックが明らかになったときに、「UE4がどのように対応するか」等の方針を改めてアナウンスするそうだ。なお、Wii Uは、DirectX 10世代のグラフィックシステムなので、UE4ではなく、必然的にUE3での対応となる(実際にUE3はWii Uに対応済み)。

 UE3との互換性については、スクリプト関連の機能の一部で互換性はなくなるが、コンテンツ・ワークフローはほぼそのままで、メッシュモデルはそのまま利用できるとのこと。

 ユーザー側の立場として気になるのは、このUE4をベースにしたゲームがいつ出てくるのかと言うことだが、現在、EPIC GAMESでは、UE4の開発と並行して、UE4ベースのゲーム開発も行なっているという。ただし、こちらもリリース時期などについては明言されず「然るべき時にアナウンスする」というコメントに終始していた。

 まだ多くの部分で謎が多いUE4ではあるが、EPICは、着々と“次世代”に向けて準備を始めている事だけは間違いない。




(2012年 6月 10日)

[Reported by トライゼット西川善司]