イベント
[SIGGRAPH]スクエニの「Luminous Studio」やEpicの「Unreal Engine 4」などに関する技術解説が行われた「Real-Time Live!」レポート(2)
Real-Time Live!とは,開発者や制作者がリアルタイムレンダリング技術を披露し,プレゼンテーションを行うイベントのことだ。SIGGRAPH 2010から開催されているので,今年で3回めの開催ということになる。
[SIGGRAPH]最先端のリアルタイムレンダリングデモが
多数披露される「Real-Time Live!」レポート(1)
「Real-Time Live!」レポート(2)では,スクウェア・エニックスの「Luminous Studio」をベースとする技術デモ「Agni's Philosophy」や,Epic Gamesの「Unreal Engine 4」を用いた「Elemental」といった,次世代ゲームグラフィックスのプレゼンテーションはもちろん,Activision BlizzardやLucasArts Entertainment Companyによる,「実は私達こんな凄いことをやってました」的なものまでを取りそろえてみた。順番に紹介していこう。
Agni's philosophy
by 橋本善久氏(スクウェア・エニックス/日本)
E3 2012で公開されたAgni's Philosophyが技術的視点から解説された |
橋本善久氏(スクウェア・エニックス) |
SIGGRAPH2012のReal-time Live!では,来場者全員がAgni's Philosophyの技術デモを見ているものと想定し,その全編映像はあえて流されておらず,要素技術の解説のみがスクウェア・エニックスの橋本善久氏によって行われた。
念のため本稿では,公式サイトで公開されているAgni's Philosophyの全編映像を下に掲載しておくが,CEDEC 2012では,「メイキングオブ『Agni's Philosophy - FINAL FANTASY REALTIME TECH DEMO』-リアルタイムCG映像の未来」と題されたセッションが行われており,橋本氏がAgni's Philosophyの開発秘話を語る様子を8月21日に掲載した記事でレポートしているので,そちらも参照してみるといいかもしれない。
さて,今回のプレゼンテーションでまず紹介されたのは,キャラクターの髪や髭の表現だ。
現行ゲームのグラフィックスにおいて髭は,短冊がジョイントされた帯状,もしくはヒレのようなポリゴンに髪の毛っぽいテクスチャを適用して表現するのが一般的だが,Agni's Philosophyでは,実際に線分として髭を植え込んでいる。さらに,それを増毛するためにジオメトリシェーダを用い,線分をテッセレーションし,幅広の帯にしてレンダリングしているとのことだ。シェーディングには,髪の毛の簡略化ライティングモデルとして著名なSteve Marschner氏の手法を採用しているという。
デモでは,Agni's Philosophyの冒頭に出てくるガイド役のおじいさんを利用。拡大画像を出してパラメータをいじって毛髪の伸び方や縮れ具合を調整し,事前に植え込まれている髭モデルではなく,リアルタイムレンダリングしているものだということをアピールしていた。
橋本氏は,もうひとつ,冒頭シーンで無数の虫(=ホタル)がドラゴンの骸骨に群がり,ドラゴンの肉片に変態していく表現についての解説も行っている。
あまりに膨大な量の虫は,一見,スプライト(ビルボード)表現に見えるかもしれないが,実は,ちゃんとモデリングされた3Dオブジェクトなのだ。この膨大な虫の大量描画は,同一3Dモデルを異なるパラメータ,つまり異なる座標や異なるアニメーションなどで描画するジオメトリインスタンシングによって実現しているという。
虫がとろけて肉片へと変異していく様子はまるでメタボール表現のようだが,これは実のところパーティクル表現だ。ただし,パーティクルを表示フレームにただレンダリングするのではなく,同時にZバッファに対して“もっこり”とした球形の深度情報を持たせて描画しているという。
Zバッファには,重なり合った球形状の深度情報が無数に書き込まれることになるが,これにブラーをかけて滑らかに(≒整地)して,深度情報から法線情報を生成する。さらに,この法線情報をもとに,ライティングを使ってブヨブヨしたものがくっつき合っているような表現を実現しているのだ。
デモでは,深度情報へのブラーを外してただの球形が重なり合っているだけの状態や,球形の半径を極端に大きくするといった様子が披露された。
Unreal Engine 4 Elemental
by Paul Oliver氏(Epic Games/アメリカ)
続いて紹介するのは,Epic Gamesの新世代ゲームエンジンであるUnreal Engine 4のプレゼンテーション,Elementalだ。こちらはReal-time Live!のラストを飾った技術デモとなる。
Paul Oliver氏(Epic Games) |
Elemental |
Unreal Engine 4では,レンダリングメソッドとしてディファード・レンダリング(Deferred Rendering)を採用しており,さらに,リアルタイム大局照明(Global Illumination,グローバルイルミネーション)エンジンを組み込んでいるのが特徴だ。
組み込まれているリアルタイム大局照明エンジンは,SIGGRAPH 2011で発表された「Sparse Voxel Octree」(スパースボクセルオクツリー,以下 SVO)法を用いたもので,レンダリング対象となるシーンを空間分割し,それにより生成されたボクセル(Voxel)を処理単位としてコーントレーシング(Cone Tracing,錐状体トレーシング)する「Interactive Indirect Illumination Using Voxel Cone Tracing」(ボクセルコーントレーシングを用いたインタラクティブインダイレクトイルミネーション,SVOGIと呼ばれることが多い)という手法が採用されている。
NVIDIAとEpic GamesによるUnreal Engine 4の解説をレポートした記事に詳しく記載しているのでそちらを参照してほしいが,ここでも軽く説明しておこう。
SVO法とは,レンダリングターゲットとしている3Dシーンのジオメトリ詳細度(密集度)に応じて適宜,疎密なボクセル化を行い,各ボクセルごとに代表平面を仮定してしまうという大胆なジオメトリ解析法である。ようするに,空間をその複雑度に応じて,適当に疎密なポリゴンに代表化してしまうのだ。
実際にピクセルレンダリングを行う場合には,SVO法によって得られた情報を使い,着目しているピクセルを通るレイを放つレイトレーシング的な処理をすることになる。
レイは,3Dシーン内をトラバースする(進ませる)のではなく,先ほどの疎密ボクセル構造を舐めるように飛ばしていく。事前に3Dシーンの解析が終わり八分木構造でボクセル化されているため,何もない空間を一気に飛ばして,密度の高い部分のみをじっくりとトラバースできるので,非常に広い空間に対して効率よく大局照明を行えるわけだ。
こうして,「代表ポリゴンにレイが到達し,そこに直接光のライティングが行われているならば,その光量を持ち帰る」という,間接照明(≒大局照明)が実現されることになる。
Unreal Engine 4のレンダリングエンジンでは,1本の線としてレイを飛ばすのではなく,トラバースするごとに参照先が広がっていく,錐状体のレイを飛ばすようになっている。これが前述したコーントレーシングである。
なお,Unreal Engine 4では,SVOGIにより,リアルタイムで大局照明を実現できるとされている。キモとなるのはSVO処理だが,こちらはリアルタイムでの部分更新が可能なので,キャラクターが動き回っていても,つじつまの合う大局照明を実現できることになる。
ただ,このSVO法による疎密ボクセル化処理では,仮想的に設定した3つの視点から3方向にレンダリングするようなプロセスを取るため,GPU側にあるラスタライザの特質上,遠方の情報が不正確になってしまう。オープンワールドのようなシーンに対しては,どの程度有効なのかまだ未知数とされているのだ。
なお,Real-time Live!では,SVOGIの解説に加えて,CPU支援が一切不要なGPGPUベースのパーティクルシステムの解説も行われていたので,以下にスライドとムービーで紹介してみたい。
Separable Subsurface Scattering
by Jorge Jimenez氏(Universidad de Zaragoza/スペイン)
Jorge Jimenez氏(Universidad de Zaragoza) |
Activision Blizzardと併記されていたので「あれ?」と思ったのだが,氏は同社の社員になっていた。氏のWebサイトには,2012年にPhD(博士)を取得したと記載されており,SSSは在学時の研究ということから,サラゴサ大学名義で講演を行ったのだろう |
そんなJimenez氏の最新研究成果「Separable Subsurface Scattering」(以下,SSS)の技術デモがReal-time Live!にて,リアルタイムで実演された。
Jimenez氏が開発したSSSは,PlayStation 3やXbox 360といった現世代のゲーム機では実現できないかもしれないが,現行のハイエンドGPUを搭載したPC,あるいは次世代ゲーム機ならば,リアルタイムで十分実現できるという,人肌の再現手法だ。
リアルタイムレンダリングにおいて,非常に重大なテーマとなる人間の肌の質感表現だが,肌は多層構造の半透明材質でできているため,再現するのがなかなか難しい。レイトレーシング的なアプローチが最も堅実なやり方だとされているが,リアルタイムグラフィックス向きなソリューションとはいえないだろう。
SSSのアルゴリズムを図解したもの |
SSSならば,画面内に何人のキャラクターがいても,このクオリティで肌表現が行える |
一方,Jimenez氏の手法は,正確性が若干劣るものの,画面座標系のポストエフェクトという概念になるため,それこそ画面内にいるキャラクターが1人だろうと100人だろうと,処理コストはほとんど変わることなく,高速に表面下散乱処理を実現できるのだ。
Jimenez氏が2012年2月に発表した論文(※pdfファイルが開きます)では,「透過光の影響が多い部位に対しては特別な処理を適用する必要がある」と結んでいたのだが,SIGGRAPH 2012のReal-time Live!では,当時の問題解決に取り組み,特別な眼球シェーダを新規開発し,眼球表現を適用したバージョンを披露していた。
眼球シェーダオフの状態 |
眼球シェーダオンの状態 |
なお,Jimenez氏のWebサイトでは,DirectX 10世代以降のGPUでSSSを試せる実行ファイルが配布されているので,気になる人は実際に自分のPCで試してみるといいだろう。
Star Wars 1313
by Roger Cordes氏(LucasArts Entertainment/アメリカ)
現在,LucasArts Entertainmentが制作している,Star Warsシリーズの完全新作タイトル「Star Wars 1313」。LucasArts EntertainmentとIndustrial Light & Magic,Lucasfilm Animation,Skywalker SoundのLucasfilmグループ4社合同という,渾身のプロジェクトだ。Real-time Live!では,そのデモが披露された。
Roger Cordes氏(LucasArts Entertainment) |
Star Wars 1313 |
Star Wars 1313では,Industrial Light & Magicのパフォーマンスキャプチャを使って,顔と身体の演技をモーションデータとして同時に取り込み,使用している。そう,普段,Lucasfilmが行っている映画製作のコンテンツパイプラインをトップダウン式にゲーム制作へと応用しているわけだ。
この制作システムの影響か,CGキャラクター達の身振りや手振り,そして表情からは,従来のゲームグラフィックスとは異質な人間臭さが伝わってくる。
顔面には疑似表面下散乱を適用し,そのほかのオブジェクトのレンダリング技法にも物理ベースレンダリングを採用するなど,徹底したフォトリアルにこだわって制作が進められているStar Wars 1313。なお,下に掲載した公式トレイラーはリアルタイムレンダリングによるものだ。
ただ,現在公開されているゲームビジュアルのほとんどは,PC上で動作しているものとなり,PlayStation 3版やXbox 360版では,ビジュアルのスペックダウンも考えられる。
筆者の勝手な予想になるが,PlayStation 3やXbox 360に対して,ややオーバーキルなコンテンツパイプラインを採用する開発スタイルは,PC版のため,というよりは,次世代ゲーム機に向けた準備なのではなかろうか。
あるいは,ゲームエンジンを使って,映画制作の「PreViz」(プリビズ:本格的な映像制作の前に作る動くCGベースの絵コンテのこと,Pre-Visualization)をずいぶん前から行っていたようなので,本作は,そうした技術の試験的な応用成果物なのかもしれない。
Leo
講演者なし(AMD/アメリカ)
Leoは,「“剣士が龍を退治してお姫様を救う”という寸劇を,おじいさんが自宅のスタジオでストップモーション撮影している」という,劇中劇のような内容となっている。本デモのポイントは,「Forward+」(フォワードプラス)という,新方式のレンダリング技法が用いられている点だ。
Forward+を簡単に説明すると,「昔ながらの通常レンダリング方式であるFowardレンダリングに,最近はやりのジオメトリ先行レンダリングと,ライティングやシェーディングに必要なパラメータを先出ししてしまうDeferred系レンダリングとの良い点を融合させたもの」ということになるだろう。
Deferred系レンダリングの良い点は,無数の光源を取り扱えることであり,Forward系レンダリングの良い点は,MSAA(マルチサンプルアンチエイリアシング)処理や半透明処理が行いやすく,材質表現のバリエーションに融通が利くことなどが挙げられる。それらのいいとこ取りをしたのがForward+というわけだ。
Forward+では,Deferred系レンダリングと同じく,ジオメトリを先行レンダリング(=Zバッファレンダリング)するが,無数の光源が「画面内のどこに当たるか(ライティングが実行されるか)」,あるいは「当たらないか(光源をカリング=破棄)」は,DirectX 11のCompute Shaderを使ってタイルベースの処理を行っている。「どの光源がレンダリングに関わるのか」のリストを作成してしまうところが,Forward+の特徴的なメカニズムといえよう。後段のレンダリングは普通のForwardレンダリングになるが,ライティングは前段で作成した光源リストデータを参照しながら行うことになる。
そのほかLeoでは,物理ベースレンダリングの採用や,材質表現に「Bidirectional Reflectance Distribution Function」(BRDF,双方向反射率分布関数)が用いられている点も特徴といえるだろう。
AMDの開発者向けサイトでは,Leoの実行ファイルが公開されているので,Radeon HD 7000シリーズのユーザーは,自分のPCで実行することが可能だ。
Brigade: Real-Time Photorealistic Rendering with GPU Path Tracing
by Samuel Lapere氏(OTOY/ベルギー)
Samuel Lapere氏(OTOY) |
OTOYの主要メンバーには,HDRレンダリングの父(?)ともいえるPaul Debevec氏の名前もある |
パストレーシングとは,“きまじめな”レイトレーシングといったイメージで,視線から飛ばしたレイが何かのオブジェクトに当たると,再帰的にレイを飛ばして,その場所の素材表現に必要な情報を求めていく手法である。
レイトレーシングをリアルタイムで,というのが最近話題になりつつあるが,パストレーシングをリアルタイムで,というのは「さらにその先」の話だ。
しかしLapere氏らは,今回のReal-time Live!にて,GPUクラウドシステム上で走らせたパストレーシングシステム「Brigade」を使って,ゲームライクなオープンワールドを1280×720ドット解像度で構築し,60fpsでウォークスルーしてみせていた。
上の映像では,解像度,フレームレートもそれほど高くないが,これは実行環境が実際のデモとは異なるため。もっとも実際のデモでも,フレームレートを優先し,再帰的に飛ばすレイをある程度制限しているためか,ビジュアルはノイジーだった。
一方で,下に掲載したスクリーンショットで,そうしたノイズが出ていないのは,十分に時間を掛けて膨大なレイを飛ばし,レンダリングを行ったためだ。
なお,Lapere氏のWebサイトには,パストレーシングのより詳細な情報が記載されているので,興味のある人はそちらを参照してほしいとのことだった。
[SIGGRAPH]最先端のリアルタイムレンダリングデモが
多数披露される「Real-Time Live!」レポート(1)
- 関連タイトル:
Unreal Engine
- 関連タイトル:
Brigade
- この記事のURL: