2013年3月15日金曜日

NVIDIAとEpicが「Unreal Engine 4」で採用された新世代グローバルイルミネーション技法を解説。その威力を

 2012年8月2日,NVIDIAは都内にある同社の日本オフィスで報道関係者向け説明会「Technologies in Games of Tomorrow」(近い将来のゲーム技術)を開催した。2011年10月に同社はゲームグラフィックス技術を解説する説明会をが,実俚膜摔饯蔚?回と考えていいだろう。
 先の説明会で主題として取りあげられたのは「」(以下,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の有無が挙げられてしまうほどだ。

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

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

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

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

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

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

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

ピクセル(pixel)とボクセルの違い
 この方法なら動的オブジェクトに対応できるが,竹重氏は問題が2つあると指摘する。1つはボクセルの解像度を上げると,使用するメモリ容量と計算量が大幅に増える点,ドラゴンクエスト10 RMT。ボクセルが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のキモだ

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

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

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

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

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

 というわけで,このあたりは前述のとおり,Zhang氏がリアルタイムデモを披露してくれたので,下に示した直撮りムービーを見てほしい(※手持ちで撮影しているため,やや手ブレているのはご了承を)。動くオブジェクトや,いきなり現れるオブジェクトにもGIが対応できていることが分かるはずだ。さらに,表面の俑肖驂浃à郡趣畏瓷浃趣い盲郡猡韦辚ⅴ毪吮憩Fできていたりもするので,そのあたりはZhang氏の日本語解説をどうぞ。



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

可能になるUnreal Engine 4


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

下田純也氏(Support Manager, Epic Games Japan)
 説明会では,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万以上ものパーティクル表現が可能になったという(右)

 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ベースで行うようになったという(左)。さらに,rmt,PhysXの使い勝手やマルチプラットフォーム環境に向けた互換性を向上させるAPEXへの対応も進めているところだそうだ

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


先ほど掲載した直撮りムービー内でも語られているが,UE4では,「Unreal Engine Editor」上でGIがリアルタイムで計算されるのが特徴だ。下田氏は,ゲーム開発の効率が上がるとアピールしていた
 UE3は,日本のゲームデベロッパでも採用例が多かったので,おそらく,将来的には,日本でもUE4ベースのタイトルがリリースされるだろう。
 ただ,UE4はDirectX 11が前提となっているため,DirectX 9世代に留まる現行世代のゲーム機では使い切れない。現実的には,次世代の据え置き型ゲーム機向けゲームエンジンということになるだろう。

 また,SVOGIはGPU負荷が非常に高いため,ミドルクラス以下のGPUでは動作が厳しいことも予想される。下田氏は,「ボクセルの解像度を減らすと映像が不自然になる」として,性能が低いGPUを搭載した環境では,SVOGIを無効化するのが現実的な選択肢になるとも示唆していた。当面の間,UE4はPC向けのゲームエンジンということになるが,UE4ベースのゲームタイトルを美しいグラフィックスで堪能したいなら,ハイエンドのPC環境が必要になるはずである。

 それにしても,リアルタイムで動くUE4のデモは相当なインパクトがあった。今後のゲームグラフィックスが実に楽しみだ。

ENGTS450/DI/1GD5
配信元ASUSTeK Computer配信日2011/04/05

<以下,メーカー発表文の内容をそのまま掲載しています>


 ASUSTeK Computer Inc.(略称ASUS)は2011年4月5日、NVIDIA Corporation(以下、NVIDIA)のNVIDIA GeForce GTS 450を搭載するビデオカード「ENGTS450/DI/1GD5」を日本市場向けに発売することを発表いたしました。本日より販売を開始する予定です。


○発表製品
製品名:ENGTS450/DI/1GD5
グラフィックスコア:NVIDIA GeForce GTS 450
ビデオメモリ:GDDR5 SDRAM 1GB
コアクロック:810MHz(定格の783MHzからクロック向上)
メモリクロック:3,608MHz
出力インターフェース:HDMI×1、DVI-I×1、D-Sub 15ピン×1
価格:オープン価格(予想実売価格:12,500円前後)
予定発売日:2011年4月5日

○製品の特長
?オーバークロックに強いチップコンデンサ「POSCAP」を採用
 大変小型でありながら、抵抗が小さく(低ESR)、高温にも強く信頼性が高い、チップコンデンサのPOSCAPを採用しています。これにより、GPUへの供給電力からノイズを約30%削減しており、GPUの安定性向上と、オーバークロックのしやすさを向上しています。

?大電力を安定して供給できる「4フェーズ電源回路」を搭載
 高負荷時にもGPUに対して乱れのない安定した電力供給を行うために、4フェーズ電源回路を搭載しました。電源回路を強化することで、オーバークロック時の安定性も向上しています。

?GPU電圧を変更できる「Voltage Tweak」機能に対応
 Voltage Tweak機能は、付属のSmartDoctorソフトに搭載する、GPUの動作電圧を変更できる機能です。GPU電圧を標準の動作電圧よりも上げることができ、標準の電圧では実現できないような高いクロックでのオーバークロック動作を可能にします。使用環境にもよりますが、最高で定格の50%程度の性能向上も実現可能です。

○製品仕様

○製品情報URL
?ニュースリリースURL

?製品ページURL

※サーバーの状態によって正常に表示されない場合があります。

○お客様からのお問い合わせ先
?株式会社ユニティ(E-mail:news@unitycorp.co.jp)
?株式会社エムヴィケー(E-mail:info@mvkc.jp)

関連トピック記事:

0 件のコメント:

コメントを投稿