オススメ機能
Twitter
お気に入り
記事履歴
ランキング
お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
[CEDEC 2019]スクエニが開発したパストレーシングベースのリアルタイム技術デモ「Back Stage」を実現する仕組みとは?
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2019/09/05 18:59

イベント

[CEDEC 2019]スクエニが開発したパストレーシングベースのリアルタイム技術デモ「Back Stage」を実現する仕組みとは?

 まずは下に掲載した動画を見ていただきたい。これは,スクウェア・エニックス・グループの開発スタジオであるLuminous Productionsが,NVIDIAの技術協力を得て開発したリアルタイム技術デモ「Back Stage」を動画にしたもので,「CEDEC 2019」の初日である9月4日に行われたNVIDIAとLuminous Productionsの共同セッション「Luminous Engineへのリアルタイムレイトレーシング実装事例の紹介」に合わせて公開となったものだ。


 YouTubeで公開中の動画は,当然ながら映像が流れていくだけであるが,セッション会場では,「GeForce RTX 2080 Ti」を1基搭載したWindows PCによるリアルタイム動作を披露していた。デモでは,視点を動かしたり,レイトレーシングと従来のラスタライズ法によるレンダリングを一瞬で切り換えたりする様子を披露している。

 覚えている人もいると思うが,Luminous Productionsは,スクウェア・エニックスの先端技術研究開発チームからスタートしたグループで,実質的な「FINAL FANTASY XV」(以下,FFXV)開発チームを経て,2018年に完全子会社となったゲーム開発スタジオである。
 Luminous Productionsのコアメンバーは,2012年にスクウェア・エニックスが発表したリアルタイム技術デモ「Agni's Philosophy」の開発にも携わっていた。Agni's Philosophyは,事実上,FFXVを開発するための技術実験プロジェクトであったと言えよう。

関連記事

[E3 2012]スクウェア・エニックスの独自開発エンジン「Luminous Studio」による,驚異のリアルタイム技術デモ「AGNI'S PHILOSOPHY」が公開

[E3 2012]スクウェア・エニックスの独自開発エンジン「Luminous Studio」による,驚異のリアルタイム技術デモ「AGNI'S PHILOSOPHY」が公開

 スクウェア・エニックスは,E3 2012開催中のロサンゼルスコンペンションセンターでレセプションを開催し,同社が開発中のゲームエンジン「Luminous Studio」を使って制作された技術デモムービーを公開した。まるでプリレンダリングCGのようだが,実はリアルタイム処理が行われているという驚きの映像を4Gamerにも掲載しよう。

[2012/06/06 19:55]


 そう考えると,今回のBack Stageで活用している技術は,今後,次世代ゲーム機向けに登場するであろう次世代ファイナルファンタジーに応用される可能性が高いと考えていいだろう。本稿では,開発メンバーによるBack Stageの解説について,その概要をレポートしたい。


FFXVを生み出した開発メンバーの新たな挑戦とは?


 セッションは,前半がLuminous Productionsで開発部長兼スタジオヘッドを務める荒牧岳志氏が,後半はBack Stageにおけるノイズ低減フィルタの開発を担当したNVIDIAの竹重雅也氏が担当した。

Luminous Productions開発部長兼スタジオヘッドの荒牧岳志氏
画像(002)[CEDEC 2019]スクエニが開発したパストレーシングベースのリアルタイム技術デモ「Back Stage」を実現する仕組みとは?
 前半を担当した荒牧氏は,Back Stageの開発コンセプトから話を始めた。
 リアルタイムレイトレーシング関連デモには様々なものがすでにあるので,「あとから挑戦するならば,他社が試みていないことに挑戦したい」(荒牧氏)という気概を持っていたようだ。開発に当たっては,「反射(鏡像),AO(環境光遮蔽),影生成だけではなく,すべての表現要素をレイトレーシングで描画する」という目標を掲げたうえで,さらに「ラスタライズ法を一切使わない」という縛りまで課したという。
 ちなみに,Back Stageの開発が始まったのは2019年6月だそうで,わずか3か月で制作したというのには驚かされる。

Back Stageの開発は,リアルタイムレイトレーシングのみで,ラスタライズ法は使わないという方針を立てた。Luminous Productions提供のスライドより引用(以下同)
画像(003)[CEDEC 2019]スクエニが開発したパストレーシングベースのリアルタイム技術デモ「Back Stage」を実現する仕組みとは?

 Back Stageデモは,シーン全体で400万ポリゴン程度を使ったそうで,近年におけるゲームグラフィックスでは,一般的なジオメトリ量と言ったところ。光源数は,狭い室内シーンとしては多めの17個。逆に,マテリアル(材質)の総数は76で,やや少ない印象だ。これも狭い室内シーンだからだろう。

Back Stageデモのシーン構成
画像(004)[CEDEC 2019]スクエニが開発したパストレーシングベースのリアルタイム技術デモ「Back Stage」を実現する仕組みとは?

 光源数が多いと,レイトレーシングの描画負荷は高くなるはずだが,後述する大胆な最適化でなんとかしのいだと,荒牧氏は述べていた。
 また,シーンには半透明のオブジェクトを多く配置しており,たとえば髪の毛や睫毛なども含むという。このような半透明オブジェクトを構成するポリゴンにレイがヒットすると,そのたびにテクスチャを読んで不透明か半透明かのテストを行わなければならず,これもまた負荷の高い処理系なのだが,あえて挑戦したそうである。

多数の光源や半透明オブジェクトが登場するシーンを,どこまでレイトレーシング(パストレーシング)オンリーで描画できるのかに挑戦した
画像(005)[CEDEC 2019]スクエニが開発したパストレーシングベースのリアルタイム技術デモ「Back Stage」を実現する仕組みとは?

 とはいえ,何もかもきまじめにレイトレーシングで描画していては,とてもリアルタイムでは動かせないので,いくつもの妥協を盛り込んだという。たとえば,肌表現の場合,皮下に無数のレイを投げる皮下散乱シミュレーションは行わず,近年のゲームグラフィックスで採用事例が多い簡易型の表面下散乱技法「Screen Space Subsurface Scattering」と同様の処理で代行したそうだ。
 また,Back Stageでは女性が体を動かしたときの衣服の動きに,NVIDIA製の布シミュレーションライブラリ「NvCloth」を利用したそうである。

リアルに見える人肌は,簡易的な皮下散乱再現手法のScreen Space Subsurface Scatteringを用いている
画像(006)[CEDEC 2019]スクエニが開発したパストレーシングベースのリアルタイム技術デモ「Back Stage」を実現する仕組みとは?

鏡をシーンの重要なところに配置。なお,鏡の中の鏡像にも被写界深度表現が効く
画像(007)[CEDEC 2019]スクエニが開発したパストレーシングベースのリアルタイム技術デモ「Back Stage」を実現する仕組みとは?

 このような目標を掲げて開発した最初のバージョンは,わずか5fps前後のフレームレートしか出なかったそうだ。しかし,最終的には30fps程度にまで引き上げたと荒牧氏は述べている。

パフォーマンスグラフを見る限り,平均的40fps程度は出ているように見える。なお,Back Stageデモは,GeForce RTX 2080以下のGPUで動かしたことはないそうだ
画像(008)[CEDEC 2019]スクエニが開発したパストレーシングベースのリアルタイム技術デモ「Back Stage」を実現する仕組みとは?


Back Stageにおけるグラフィックスエンジンの仕様


 続いて荒牧氏は,Back Stageデモで用いたグラフィックスエンジンの実装を説明した。Luminous Productionsは,自前のゲームエンジンとして「Luminous Engine」(ルミナスエンジン)を持っており,FFXVは,これを用いて開発したゲームだ。

 Back Stageデモは,Windows上で動作するデモとして開発を進めたので,リアルタイムレイトレーシングの実装にあたっては,必然的にWindows 10向けのリアルタイムレイトレーシングフレームワークである「DirectX Raytracing」(以下,DXR)を使うこととなった。
 しかし,Luminous Productionsとしては,Windows PC以外の据え置き型ゲーム機への対応も考慮しなければならない。しかも,次世代PlayStationや次世代Xboxこと「Project Scarlett」は,レイトレーシングに対応することが予告済みだ。
 現行のXbox Oneシリーズと同様に,Windows×DirectXベースとなることが確実視なProject Scarlettはともかく,次世代PlayStationは,独自のリアルタイムレイトレーシングフレームワークを採用すると思われる。

 そこでLuminous Engineでは,レイトレーシング処理を行う機能ブロックを,DXRだけを前提とした仕様にはせず,あえて抽象化を行ったと荒牧氏は述べる。すなわち,Luminous Engine側でレイトレーシング処理用のAPIや関数を規定して,ここからDXRを制御する仕組みにしたわけだ。これで,たとえば次世代PlayStationに対応するためには,抽象化レイヤーを入れ替えるだけで同じグラフィックスを描画できることになる。

Luminous Engineは汎用エンジンであるため,Windows PC環境以外でのレイトレーシング対応を考慮sたアーキテクチャとなっている
画像(009)[CEDEC 2019]スクエニが開発したパストレーシングベースのリアルタイム技術デモ「Back Stage」を実現する仕組みとは?

 また,マテリアルなどの処理,すなわちライティングやシェーディングを行う処理系は,Luminous Engine上で従来のラスタライズ法によるグラフィックス用のシェーダエディタで制作したコードを,そのまま利用できる仕組みを採用した。これにより,事実上は,レイトレーシング対応ハードウェアと非対応ハードウェアで共通したシェーダコードが利用できるようになるので,プラットフォームのレイトレーシング対応,非対応を問わずにタイトル開発の効率化や,既存のシェーダコード資産の流用を可能にする。

材質(Material)の処理に組み込むシェーダは,ラスタライズ法グラフィックスで使わっていたシェーダを流用できる
画像(010)[CEDEC 2019]スクエニが開発したパストレーシングベースのリアルタイム技術デモ「Back Stage」を実現する仕組みとは?


Back Stageデモはパストレーシングベース


 続いて荒牧氏が説明したのは,Back Stageデモで採用したレイトレーシングパイプラインの概要と,最適化方針だ。下に示したスライドは,Back Stageデモにおいて,どのようなレイを射出しているかを示したものである。

Back Stageデモで採用したパストレーシングの概念図
画像(011)[CEDEC 2019]スクエニが開発したパストレーシングベースのリアルタイム技術デモ「Back Stage」を実現する仕組みとは?

 Back Stageデモのグラフィックスは,レイトレーシングで描画しているわけだが,Luminous Productionsでは,あえて「パストレーシングで描画」という表現している。
 パストレーシングとは,視点から視界方向へ画面解像度に相当するだけのレイを放ち,レイとオブジェクトが最初に衝突する場所(=画面上のピクセル)から,無限数のレイを放つレイトレーシングを究極の目標とする手法だ。しかし,当然ながら無限のレイを放つことはできないので,リアルタイムで映像を描画するためには,投射レイ数を大胆に削減しなくてはならない。とはいえ,あまり省略しすぎると,パストレーシングとはいいがたいものになってしまう。

 Back Stageデモの場合,まず直接光によるライティングとして各ピクセルからレイを1本放つ。これが何かのオブジェクトに遮蔽されているなら,影生成を兼ねることになる。
 さらに,その起点となるピクセルの材質によっては,鏡像(リフレクション)生成用レイや大局照明(GI)処理用レイ,半透明・屈折レイも放つ。これらのレイは,衝突先の材質次第で,さらに別のレイを放つこともある。こうしたたび重なるレイの射出は,ワーストケースだと10以上になるとのこと。

半透明オブジェクトは屈折率のパラメータを持つ
画像(012)[CEDEC 2019]スクエニが開発したパストレーシングベースのリアルタイム技術デモ「Back Stage」を実現する仕組みとは?

 ところで,あるピクセルにおける直接ライティングおよび影生成を正確に行うには,本来ならシーンにあるすべての光源方向にレイを飛ばす必要がある。だが,それは負荷的に無理と判断したうえで,当該ピクセルに最も影響が大きいと見込んだ1つの光源に向けてレイを放つようにしたと荒牧氏は説明した。

直接ライティングおよび影生成に用いる光源は,影響度の強弱に配慮して確率的に1つだけを選択した
画像(013)[CEDEC 2019]スクエニが開発したパストレーシングベースのリアルタイム技術デモ「Back Stage」を実現する仕組みとは?

光源に対して複数のレイを投げることでソフトシャドウを表現できるが,Back Stageの場合,影生成(と直接光ライティング)用に投げるレイは1本だけだ。それでもソフトシャドウを表現できるのは,後述する鏡像生成や大局照明処理用に追加のレイを投げているためである
画像(014)[CEDEC 2019]スクエニが開発したパストレーシングベースのリアルタイム技術デモ「Back Stage」を実現する仕組みとは?

 鏡像生成用レイや大局照明処理用のレイは,本来なら多数のレイを放たないと正しい描画結果を得られない。

パストレーシングでは,このように無数のレイを投げるのが理想的である
画像(015)[CEDEC 2019]スクエニが開発したパストレーシングベースのリアルタイム技術デモ「Back Stage」を実現する仕組みとは?

 しかし,放つレイが多くなればなるほど負荷が高くなり,リアルタイム描画の実現は難しくなるので,ここでも大胆に,鏡像生成用レイや大局照明用レイは1本ずつしか放たないようにしたと荒牧氏は説明する。しかも,放つレイの方向はランダムで決めているという。もちろん,ある程度は意味がありそうな方向に限定するよう配慮はしている。ここで言う配慮とは,たとえば,レイの射出起点における材質パラメータを考慮するといったことだ。

※反射特性パラメータ,たとえば双方向反射率分布関数(Bidirectional Reflectance Distribution Function,BRDF)などのこと。

Back Stageでは,乱数で方向を決めた1本ずつしか投げない
画像(016)[CEDEC 2019]スクエニが開発したパストレーシングベースのリアルタイム技術デモ「Back Stage」を実現する仕組みとは?

リフレクション(鏡像)生成はフレネル反射にも配慮しているとのこと
画像(017)[CEDEC 2019]スクエニが開発したパストレーシングベースのリアルタイム技術デモ「Back Stage」を実現する仕組みとは?

 配慮するとは言っても,放たれるレイの方向はランダムなので,レイが持ち帰った情報で描画する映像フレームは,ザラザラとしたランダムな輝度を含んだ砂絵のようなノイジーなものになる。これを見られるレベルの映像に修正するのが,竹重氏が解説する「ノイズ低減フィルタ」の役目だ。

 話を戻すとBack Stageデモのパストレーシングエンジンでは,表示用の映像フレームを直接は生成しない。以下のスライドをもとに説明していこう。

Back Stageのレンダリングエンジンによる処理の流れ
画像(018)[CEDEC 2019]スクエニが開発したパストレーシングベースのリアルタイム技術デモ「Back Stage」を実現する仕組みとは?

 Back Stageにおけるパストレーシングエンジンでは,まず,青色で示す中間パラメータバッファを生成したうえで,中間バッファを複数組み合わせてノイズ低減フィルタ用となるオレンジの後処理用バッファを生成する。そのうえで,複数の後処理用バッファを参照して,ノイズ低減フィルタで表示用の最終フレームを生成するのだという。
 余談だが,パストレーシングエンジンのスライドをよく見ると,レイトレーシング非対応ハードウェアでラスタライズ法により描画した結果を,同じパイプラインで処理できる仕様にしている様子がうかがえるのは興味深い。


ゲームグラフィックスにおけるパストレーシングの普及は,2035年よりも早そうだ


 このセッションで興味深かったのは,30fpsでBack Stageのリアルタイムグラフィックスをパストレーシングで描画するためには,レイの射出数を大幅に減らさなければならないという点だった。
 Back StageデモはフルHD解像度で描画したそうだが,1ピクセルあたりの基本レイ射出数は2本だけだ。上述したように,実際には起点となるピクセルの材質や,そこから放ったレイが衝突したオブジェクトの材質によっては,さらなるレイの射出を余儀なくされるのだが,それでも,1ピクセルあたり20レイを超えることはあまりないようである。

Back Stageでは,フルHD解像度において1ピクセルあたり2本のレイを放つのが基本。最終的には10を超える
画像(019)[CEDEC 2019]スクエニが開発したパストレーシングベースのリアルタイム技術デモ「Back Stage」を実現する仕組みとは?

 むしろ,レイの数を増やさないように,大局照明の解像度を3分の1に縮小したり,シーン内における調度品のレイアウトや構成を変えたりといった方向で調整したそうである。

大局照明の解像度は負荷低減のためにフルHD解像度の3分の1とした
画像(020)[CEDEC 2019]スクエニが開発したパストレーシングベースのリアルタイム技術デモ「Back Stage」を実現する仕組みとは?

 ところで,かつて筆者はGeForce RTXシリーズが登場したときに,各GPUが1秒あたり何本のレイを射出できるかの公称値をもとに,フルHD解像度の各ピクセル(約207万ピクセル)から何レイ射出できるのかを試算したことがあった(関連記事)。
 その計算結果は以下のとおり。

  • Quadro RTX 8000&Quadro RTX 6000:約80レイ
  • GeForce RTX 2080 Ti:約80レイ
  • GeForce RTX 2080:約64レイ
  • Quadro RTX 5000:約48レイ
  • GeForce RTX 2070:約48レイ

 射出したレイが何かに衝突したとき,衝突先の材質に対応したシェーダプログラムが走って処理負荷がかかるので,計算した値のレイ数を実際に射出できるわけはないと思っていたが,まさか,「数レイを放つだけでけっこうキツキツ」というのは意外であった。今回のセッションで,まだまだ現実は厳しいのだなと実感した次第だ。

 逆に言えば,そこまで少ないレイ数でBack Stageほど説得力のある映像が得られるというのも驚きであった。これだけ少ないレイ数のパストレーシングでも,これだけのリアルタイムグラフィックスが実現できるのであれば,NVIDIAのMorgan McGuire氏による「2035年には,ゲームグラフィックスはパストレーシングベースとなる」(関連記事)という予測も,Back Stageデモを見たあとでは,むしろもっと前倒しになる可能性もあるのではないだろうか。

[SIGGRAPH]2035年,ゲームグラフィックスはパストレーシングへ。NVIDIA技術者が語る未来予想図

Luminous Productions公式Webサイト

  • この記事のURL:
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
企画記事
トピックス
スペシャルコンテンツ
注目記事ランキング
集計:09月19日〜09月20日
タイトル評価ランキング
81
KENGOHAZARD2 (PC)
76
鬼ノ哭ク邦 (PC)
76
Days Gone (PS4)
74
2019年03月〜2019年09月