【PR】ゲームグラフィックスをAAAにするリアルタイムGIミドルウェア「Enlighten」とは


 グローバルイルミネーション(大域照明:Global Illumination,以下GI)というのは,一時期からゲームグラフィックスの優劣を見分ける最重要な要素になってきているように思われる。
 ひとつの転機は2011年くらいだろうか。4月にクライシス2が発売され,「ここまでやる?」と思わせるような多彩な処理で従来のゲームとは一段違うレベルでのゲームプレイを実現して見せた。CryENGINE 2の威力を示す,動くテクニカルデモとでもいうべき代物だったといえるだろう。
 しかし,ゲームシーンをより驚かせたのは同年11月に発売されたBattlefield 3のほうだったかもしれない。「実写レベル」という形容が飛び交い,ゲームグラフィックスもここまできたのかと思わせるリアルなデキだった。新エンジンFrostbite 2の実力もあったのだろうが,グラフィックスにこだわった実力派スタジオであるDICEがリアリティの要となるGI表現に外部ミドルウェア「Enlighten」を採用したというニュースは業界を震撼させたものだった。

Battlefield 3
【PR】ゲームグラフィックスをAAAにするリアルタイムGIミドルウェア「Enlighten」とは

【PR】ゲームグラフィックスをAAAにするリアルタイムGIミドルウェア「Enlighten」とは
 Enlightenとは何者か? 英Geomericsが開発したリアルタイムGIミドルウェアである。Enlighten以前にも,Beastなど,間接光を含むリアルな陰影を焼き込む手法は存在していたのだが,シーンや光源の変化は苦手としていた。静止画レベルでは綺麗なのだがインタラクションに乏しく,リアルな書割の中でキャラクターが動くような感じになる。Enlightenが実現した「自然さ」は新次元のものだったのだ。当時,その原理としてラジオシティ法が使われていることは謳われていたものの,従来のラジオシティではリアルタイムゲームなどにはまったく不向きであり,EnlightenはAAAクオリティのゲームグラフィックスを実現する謎の超技術として存在していた。

●ラジオシティ法
 熱の輻射モデルから生み出されたレンダリング方式で,シーンを構成するオブジェクトを細かなパッチに分割し,それぞれのパッチ間で,熱を光に置き換えて相互の輻射量を計算しておき,それをもとに陰影を生成する。事前計算ですべての陰影を求めるので,静的なシーンでは複数の視点を変更しても非常にリアルな陰影のレンダリング結果を素早く得ることができる。オブジェクトが動いたり,光源が変化すると再計算が必要になる。事前計算は非常に重いので静的シーン限定になるが,建築シミュレーションなどではリアルなウォークスルーアニメーションを手軽に作成できるなどのメリットがあった。

【PR】ゲームグラフィックスをAAAにするリアルタイムGIミドルウェア「Enlighten」とは
 その後,Enlightenを開発したGeomericsはARMに買収され,そして今年5月,そのARMからEnlightenの開発・販売権などがシリコンスタジオに委譲されることになった。
 電撃的に発表された「IP自体はARMに残しつつ開発と販売権を移す」というかなり特殊な形態の技術移転から半年,シリコンスタジオによると,日本国内でもEnlightenの引き合いがかなり増えてきているという。

 今回はシリコンスタジオ代表取締役社長の寺田健彦氏と元Geomericsの技術者で現シリコンスタジオ Head of Engineering, EnlightenのWilliam Joseph氏にそんなEnlightenについていろいろ話を聞くことができたので,さっそく紹介してみたい。


どうしてEnlightenはシリコンスタジオにやってきたのか


GamesIndustry.biz:
 本日はよろしくお願いします。
 さっそくですが,そもそもどういう経緯でEnlightenの獲得に至ったのでしょうか。

寺田氏:
 以前からEnlightenの技術は高く評価しており,弊社のリアルタイムレンダリングエンジン「Mizuchi」への導入も検討していました。GDC2017でGeomericsによるEnlighten製品の販売終了を知り,弊社から買収の提案をさせていただいた次第です。

GamesIndustry.biz:
 IPを残したまま開発と販売権を移すというのは聞いたことがないやり方なのですが,どうしてそういう形になったのでしょうか。

寺田氏:
 ARMはそれまでIPを手放したことがなかったらしいんです。それで話がややこしくなりそうだったのですが,先方がかなり急いでいたこともあって,既存ユーザーへのフォローを優先してIPは残したままの委譲という形で進めました。実質的には買収と変わりありません。

GamesIndustry.biz:
 なるほど。すでにEnlightenを導入している企業へのサポートなどで変化はありますか?

寺田氏:
 基本的には従来と変わらないサポートを提供していきたいと考えています。

GamesIndustry.biz:
 分かりました。ここからは技術的な話中心で聞かせてください。まず,Enlightenとはどういうものかから説明してください。

Joseph氏:
 EnlightenはリアルタイムGIのミドルウェアです。Beastの販売が終了しましたので,現在販売されているGI用ミドルウェアとしては唯一のものになります。特徴は,業界では最先端の技術が使われており,非常にダイナミックなGIのシステムが構築されていることですね。
 動作を図で示しますと,赤いレンガの大きな壁などがあったとしましょう。そこに太陽から光が当たっています。このような直接光の当たった部分の計算はゲームエンジンが行いますのでEnlightenは関与しません。壁からの照り返しなどで道に赤みがかった光が落ちるなどのエフェクト処理を行います。

Color Bleedingの模式図
【PR】ゲームグラフィックスをAAAにするリアルタイムGIミドルウェア「Enlighten」とは

GamesIndustry.biz:
 GI関連の技術にはいろいろありますが,なぜEnlightenが選ばれているのでしょうか。

Joseph氏:
 Enlightenを使うことには2つの利点があります。
 まず,ワークフローを短縮できることです。EnlightenではGIの事前計算はベイク(画像への陰影焼き込み)とは違って非常に高速です。計算時間が短縮されて作業効率が上がります。
 もう一つは,事前計算したあとでもライトを変更できるということです。エディタの中でもライトの動きを変更してすぐに反映ができます。ライトを動かすことができますので,太陽の動きなどもシミュレート可能ですし,動いた光に応じたライトブリーディング(Light Bleeding:色の照り返し)などもリアルタイムで反映できます。

Enlightenの効果の例。左はUnreal Engine 4の動的光源で構成されたシーン,右は同じシーンでEnlightenを使用したもの
【PR】ゲームグラフィックスをAAAにするリアルタイムGIミドルウェア「Enlighten」とは 【PR】ゲームグラフィックスをAAAにするリアルタイムGIミドルウェア「Enlighten」とは

GamesIndustry.biz:
 Enlightenではどこまで事前計算で処理をしているのでしょうか。

Joseph氏:
 Enlightenでは事前計算でシーンの情報を取得しています。シーンの大きさやディテール,クオリティなどで変わってきます。複数のPCで分散して演算できますので時間の短縮は可能です。

GamesIndustry.biz:
 普通のラジオシティではオブジェクトの変更などはできないはずなのですが,Subwayのデモを見るとダイナミックなシーンの変更や光源の移動に対応します。あれはいったいどうやっているのでしょうか。


Joseph氏:
 Enlightenでは背景オブジェクト自体は動かせません。しかし,オブジェクトには透過率を設定できるので,Subwayでは破壊された部分の透過率を変更してダイナミックなシーンを作っているわけです。透過率を設定すると追加の計算処理が入りますが,うまく使えばこのようなこともできるわけです。

【PR】ゲームグラフィックスをAAAにするリアルタイムGIミドルウェア「Enlighten」とは 【PR】ゲームグラフィックスをAAAにするリアルタイムGIミドルウェア「Enlighten」とは

GamesIndustry.biz:
 そういう仕組みだったんですね。ジオメトリの移動などはやはりできないわけでしょうか。

Joseph氏:
大きなオブジェクトが移動した場合,再計算しないとエフェクトがおかしくなる(模式図)
【PR】ゲームグラフィックスをAAAにするリアルタイムGIミドルウェア「Enlighten」とは
 先ほどの図でいうと,壁全体を動かすような大きな変更では事前計算からやり直す必要があります。陰影が残ったままになるなどの矛盾が出てきてしまいますので。

GamesIndustry.biz:
 なるほど。では光源の動きについてはどうなのでしょうか。太陽の動きなどはあらかじめすべて計算しておくわけでしょうか。

Joseph氏:
 光源については事前計算は必要ありません。

GamesIndustry.biz:
 ベースになっているのはラジオシティ法ですよね? 光源の事前計算は必要なのでは?

Joseph氏:
 事前計算で行うのはジオメトリの計算のみで,ライティングやエフェクトについては実行時に計算しています。ですので,通常のラジオシティのような光源についての事前計算はやっていないのです。GIをベイクでやっているミドルウェアではライトの移動のたびにデータの更新が必要ですが,Enlightenではそういったことは必要ありません。

GamesIndustry.biz:
 ああ,そういうことだったんですね。てっきり最近話に出ることの多いPRT(Precomputed Radiance Transfer)と同じようなものなのだろうかと思っていたのですが。

Joseph氏:
 確かに「Radiance Transfer」ですが「P」は付きません。よく言っているのは,EnlightenはLightmassの制限をなくすものだという考え方です。ここでは光源に関しての制限をなくしています。

※LightmassはUnrealEngineで光表現を扱うもの。間接光はフォトンマッピングベースの手法でレンダリングされるが,ビルド時間は長い

GamesIndustry.biz:
 RRT(Realtime Radiance Transfer)ですね。
 しかし,ジオメトリ情報を事前計算しておき,リアルタイムで光源情報を計算しているわけですよね。ラジオシティの輻射計算ですからかなり重くありませんか。

Joseph氏:
 負荷はシーンによりますね。通常は1スレッドを使って影響のある範囲についてバックグラウンドで再計算させていますが,スレッド数や使用率を上げることで遅延を減らすことは可能です。

GamesIndustry.biz:
 スレッド数などは動的に変更できるのですか?

Joseph氏:
 はい。もちろんです。

GamesIndustry.biz:
 キャラクターなどの小さなオブジェクトが動いたときにはどうなるのでしょうか。

Joseph氏:
 そういう動的なオブジェクトはEnlightenでは扱いません。事前計算などで扱うのは基本的に静的なオブジェクトだけです。ですので,赤い服を着たキャラクターの服の色が壁に反映されるといったことはありません。逆に,ゲームプログラムからライトプローブの情報は参照可能ですので,周囲の壁の色がキャラクターに反映されるといったGI処理を行うことは可能です。

GamesIndustry.biz:
 では,リアルタイム処理で光源が増えたときはどれくらい負荷がかかりますか?

Joseph氏:
Subwayデモより,ライトが点く瞬間と前後のフレーム
【PR】ゲームグラフィックスをAAAにするリアルタイムGIミドルウェア「Enlighten」とは
【PR】ゲームグラフィックスをAAAにするリアルタイムGIミドルウェア「Enlighten」とは
【PR】ゲームグラフィックスをAAAにするリアルタイムGIミドルウェア「Enlighten」とは
 これもシーンによりますが,たとえば,壁に向かってトーチライト(スポット光源)などを照らしたとしましょう。壁が明るくなる部分はゲームエンジン側で処理されます。そこからの照り返しなど,間接光の影響を描画するのはEnlightenです。ライトのスイッチを入れてから照り返しが反映されるまで,だいたい50〜100msくらいになります。

GamesIndustry.biz:
 デモなどではもっと速いような印象はあるのですが,ゲーム上で3〜6フレームですか。これを縮めるにはスレッド数などを増やせばいいんでしょうか。

Joseph氏:
 それでもいいのですが,速度に一番大きく関係するのはResolutionですね。

GamesIndustry.biz:
 つまり計算の粒度ですね。Resolutionを下げると,画質はかなり下がるのですか?

Joseph氏:
 実はそれほど大きくは変わりません。動的な要素が多いゲームではResolutionを粗めにしておくのがよいでしょう。フォトリアルを追求するような場合はResolutionを上げてください。

GamesIndustry.biz:
 Enlightenは,Unity 5からはUnityに統合されていますが,普通にUnityを使っているとEnlightenを使っていることになるのでしょうか。

Joseph氏:
 そうですね。GI部分についてはそのとおりです。ただ,Unity上のEnlightenは,Unityで使いやすいように実装されていますので,Unityでそのまま使うには適していますが,使い勝手の面で少し違いはあります。たとえば,Unityではライトプローブの設置は手動でやらなくてはなりません。Enlightenではどんな広さでどんな形の空間でも自動的にライトプローブを設置してくれます。広大なシーンを扱う場合には,かなり手間が変わってくることになるでしょう。

GamesIndustry.biz:
 では今後のEnlightenの予定などを聞かせてください。

Joseph氏:
 パフォーマンスアップなどはもちろんですが,Enlightenは,元々ケンブリッジ大学で物理や数学をやっていたようなスタッフが作ったもので,誰にでも使いやすいとは言いがたいところがありました。これをできるだけ誰にでも使いやすいものにしていくのが最大の目標ですね。

寺田氏:
 リアルタイムGI(グローバルイルミネーション)には,まだ沢山の解決すべき問題があるので,それらを率先して研究開発し,実現していきたいと思います。また,YEBISなどのポストエフェクトミドルウェアとの相性も良いため,より機能を充実させて行く予定です。もちろんEnlighten導入当初の目的であったMizuchiとの連携も行っていきます。

GamesIndustry.biz:
 本日はありがとうございました。


 登場以来,常に最先端のGI技術として存在し,多くのAAAタイトルを支えているEnlighten。今回のインタビューでそのクオリティや柔軟性の秘密が少し明らかになった気がする。 
 とはいえ,予想よりリアルタイム演算要素は多く,なぜあんなパフォーマンスが出ているのかという謎は残されている。演算はCPUでの演算のみでGPUは使っていないという(昔CUDAによる実装のデモは見たことがあるが)。ARMの系列だったので当然かもしれないが,モバイル機器にも対応している。なぜそんなことができるのか,「ライティングはリアルタイムで計算しています」と言われても,普通そういうことはできないからみんな事前計算でやったりGPUで実装しているわけであって,いまだに謎技術ではある。CPU演算だけなので,GPUはフルに描画処理に利用できるというのも嬉しい。

 ちょっと前までは夢物語だったリアルタイムGIというのがこうして実現され,ゲームの表現力は実写レベルにまで向上している。PCハイエンドからコンシューマゲーム,そしてモバイルまでサポートされており,すでにハイレベルなゲームグラフィックスの標準ミドルウェアとしての位置を確立していると言ってもいいだろう。ゲームグラフィックスを一段高品質にするためにEnlightenの導入を検討してみてはいかがだろうか。

Enlighten公式サイト