【PR】ゲームグラフィックスをAAAにするリアルタイムGIミドルウェア「Enlighten」とは
![]() |
![]() |
ひとつの転機は2011年くらいだろうか。4月にクライシス2が発売され,「ここまでやる?」と思わせるような多彩な処理で従来のゲームとは一段違うレベルでのゲームプレイを実現して見せた。CryENGINE 2の威力を示す,動くテクニカルデモとでもいうべき代物だったといえるだろう。
しかし,ゲームシーンをより驚かせたのは同年11月に発売されたBattlefield 3のほうだったかもしれない。「実写レベル」という形容が飛び交い,ゲームグラフィックスもここまできたのかと思わせるリアルなデキだった。新エンジンFrostbite 2の実力もあったのだろうが,グラフィックスにこだわった実力派スタジオであるDICEがリアリティの要となるGI表現に外部ミドルウェア「Enlighten」を採用したというニュースは業界を震撼させたものだった。
![]() |
●ラジオシティ法
熱の輻射モデルから生み出されたレンダリング方式で,シーンを構成するオブジェクトを細かなパッチに分割し,それぞれのパッチ間で,熱を光に置き換えて相互の輻射量を計算しておき,それをもとに陰影を生成する。事前計算ですべての陰影を求めるので,静的なシーンでは複数の視点を変更しても非常にリアルな陰影のレンダリング結果を素早く得ることができる。オブジェクトが動いたり,光源が変化すると再計算が必要になる。事前計算は非常に重いので静的シーン限定になるが,建築シミュレーションなどではリアルなウォークスルーアニメーションを手軽に作成できるなどのメリットがあった。
熱の輻射モデルから生み出されたレンダリング方式で,シーンを構成するオブジェクトを細かなパッチに分割し,それぞれのパッチ間で,熱を光に置き換えて相互の輻射量を計算しておき,それをもとに陰影を生成する。事前計算ですべての陰影を求めるので,静的なシーンでは複数の視点を変更しても非常にリアルな陰影のレンダリング結果を素早く得ることができる。オブジェクトが動いたり,光源が変化すると再計算が必要になる。事前計算は非常に重いので静的シーン限定になるが,建築シミュレーションなどではリアルなウォークスルーアニメーションを手軽に作成できるなどのメリットがあった。
![]() |
電撃的に発表された「IP自体はARMに残しつつ開発と販売権を移す」というかなり特殊な形態の技術移転から半年,シリコンスタジオによると,日本国内でもEnlightenの引き合いがかなり増えてきているという。
今回はシリコンスタジオ代表取締役社長の寺田健彦氏と元Geomericsの技術者で現シリコンスタジオ Head of Engineering, EnlightenのWilliam Joseph氏にそんなEnlightenについていろいろ話を聞くことができたので,さっそく紹介してみたい。
どうしてEnlightenはシリコンスタジオにやってきたのか
GamesIndustry.biz:
本日はよろしくお願いします。
さっそくですが,そもそもどういう経緯でEnlightenの獲得に至ったのでしょうか。
寺田氏:
![]() |
GamesIndustry.biz:
IPを残したまま開発と販売権を移すというのは聞いたことがないやり方なのですが,どうしてそういう形になったのでしょうか。
寺田氏:
ARMはそれまでIPを手放したことがなかったらしいんです。それで話がややこしくなりそうだったのですが,先方がかなり急いでいたこともあって,既存ユーザーへのフォローを優先してIPは残したままの委譲という形で進めました。実質的には買収と変わりありません。
GamesIndustry.biz:
なるほど。すでにEnlightenを導入している企業へのサポートなどで変化はありますか?
寺田氏:
基本的には従来と変わらないサポートを提供していきたいと考えています。
GamesIndustry.biz:
分かりました。ここからは技術的な話中心で聞かせてください。まず,Enlightenとはどういうものかから説明してください。
Joseph氏:
![]() |
動作を図で示しますと,赤いレンガの大きな壁などがあったとしましょう。そこに太陽から光が当たっています。このような直接光の当たった部分の計算はゲームエンジンが行いますのでEnlightenは関与しません。壁からの照り返しなどで道に赤みがかった光が落ちるなどのエフェクト処理を行います。
![]() |
GamesIndustry.biz:
GI関連の技術にはいろいろありますが,なぜEnlightenが選ばれているのでしょうか。
Joseph氏:
Enlightenを使うことには2つの利点があります。
まず,ワークフローを短縮できることです。EnlightenではGIの事前計算はベイク(画像への陰影焼き込み)とは違って非常に高速です。計算時間が短縮されて作業効率が上がります。
もう一つは,事前計算したあとでもライトを変更できるということです。エディタの中でもライトの動きを変更してすぐに反映ができます。ライトを動かすことができますので,太陽の動きなどもシミュレート可能ですし,動いた光に応じたライトブリーディング(Light Bleeding:色の照り返し)などもリアルタイムで反映できます。
![]() |
![]() |
GamesIndustry.biz:
Enlightenではどこまで事前計算で処理をしているのでしょうか。
Joseph氏:
Enlightenでは事前計算でシーンの情報を取得しています。シーンの大きさやディテール,クオリティなどで変わってきます。複数のPCで分散して演算できますので時間の短縮は可能です。
GamesIndustry.biz:
普通のラジオシティではオブジェクトの変更などはできないはずなのですが,Subwayのデモを見るとダイナミックなシーンの変更や光源の移動に対応します。あれはいったいどうやっているのでしょうか。
Joseph氏:
Enlightenでは背景オブジェクト自体は動かせません。しかし,オブジェクトには透過率を設定できるので,Subwayでは破壊された部分の透過率を変更してダイナミックなシーンを作っているわけです。透過率を設定すると追加の計算処理が入りますが,うまく使えばこのようなこともできるわけです。
![]() |
![]() |
GamesIndustry.biz:
そういう仕組みだったんですね。ジオメトリの移動などはやはりできないわけでしょうか。
Joseph氏:
![]() |
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氏:
![]() |
![]() |
![]() |
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の導入を検討してみてはいかがだろうか。