イベント
[GDC 2018]「RTX」一色のNVIDIAブースで,ゲームにおけるレイトレーシング技術の活用アイデアをチェック
GDC 2018では,Microsoftがゲームグラフィックスにレイトレーシングパイプラインを統合する「DirectX Raytracing」(以下,DXR)を発表したことで注目を集めた。しかし,GDC会場でDXRの実動デモが見られるのは,Volta世代のNVIDIA製GPUを搭載するハードウェアを使用し,NVIDIAのDXR対応ランタイムモジュール「RTX Technology」(以下,RTX)が動作している環境のみ。そしてその環境があるのはNVIDIAブースだけだったからだ。
NVIDIAブースは展示スペースの6〜7割がRTX関連の展示となっていたのだが,その1つ1つに,Volta世代の数値演算アクセラレータ「Tesla V100」を4基搭載する「DGX Station」が動いていた。1台あたり15万ドル,日本円にして約1700万円以上のマシンによるRTXのデモが見られるのはもちろんここだけなので,注目されるのも当然のことだろう。
多くのグラフィックス関連開発者が,連日,NVIDIAブースに押し寄せており,その中には,日本で著名なゲームスタジオに所属する開発者の姿もあった。
そんなNVIDIAブースのRTX関連展示を簡単にレポートしたい。
Star Warsのレイトレーシングデモを24fpsで動かすには,15万ドルのDGX Stationが必要
NVIDIAブースで一際大きい人だかりを集めていたのは,「Star Wars」(スター・ウォーズ)を題材としたRTXの技術デモ「Project Spotlight」だ。筆者はすでに別の記事で一度このデモを紹介しているが,あらためて下に掲載しておこう。
Project Spotlightは,Unreal Engine 4でお馴染みのEpic Gamesと,Star Warsフランチャイズの製作会社であるLucasfilmにおいて没入型エンターテインメント開発部門として機能しているILMxLAB(関連記事)が共同で開発したものだ。NVIDIAは,ハードウェアのDGX StationとソフトウェアのRTXおよびGameWorksで開発チームに協力したという。
Project Spotlightの目標は,DXRを駆使し,毎秒24コマのリアルタイム動作をUnreal Engine 4上で実現することだったそうだ。レイトレーシングのランタイムはRTXで,実行するハードウェアは当然ながらDGX Stationとなる。
デモのテーマは「従来型のラスタライズ法によるレンダリングではリアルな描画が困難だった『大きさや形状を持った光源からのライティング』」とのこと。だからこそ,舞台上の一点を照らすための照明器具をプロジェクト名として採用したというわけだ。
テーマの実現に当たっては,従来型のラスタライズ法をレンダリングのメインとしつつ,レイトレーシングで環境遮蔽(Ambient Occlusion,アンビエントオクルージョン)や,影生成,映り込みの鏡像(Reflection,リフレクション)を生成しているという。
NVIDIAブースでは,このデモを無限ループで再生しておき,立ち止まった来場者にNVIDIAスタッフが声をかけて,「リアルタイム映像なんですよ」と,ワイヤーフレームモードに切り替えるという見せ方をしていた。
ただ,今回のデモ版は,[Space]キーでレンダリング状態とワイヤーフレーム状態を切り替えることしかできず,リアルタイムデモの醍醐味とも言える「視点操作」は行えなかった。
NVIDIAによると,Project Spotlightで環境遮蔽や影生成,映り込みの鏡像を生成するとき,それぞれ数本分のレイしかキャスト(※レイを放つこと)していないそうだ。ただそのままだと生成した映像はかなりノイジーなものになってしまうので,GameWorks用ソフトウェア開発キットである「GameWorks SDK」の1つとして提供予定の「Raytracing Denoiser」を使ってリアルタイムで演算処理し,ノイズの低減を図っているという。
このノイズ低減処理(=デノイズ処理)は,画面座標系でボカしているわけではないため,ジオメトリの微細な凹凸が消失するようなことはないそうだ。
デモ映像をよく見ると,時間方向にチラチラとしたノイズの存在も確認できるが,実のところこれは,「アナログ撮影したフィルムを現像したときに発生するノイズ」である「フィルムグレイン」(Film Grain)を,ポストエフェクトで後から付与した結果である。つまり,レイ数の少ないレイトレーシングを行うことによって生じたノイズをRaytracing Denoiserで除去したところに,擬似的なフィルムグレインを適用してわざわざ“汚して”いるのである。このあたりは映像世界の奥深さといったところか。
レイトレーシングをライトマップ作成や間接光情報の計算に使うデモに注目
「レイトレーシングを使ったゲームグラフィックスを24fpsで動かすには,15万ドルのマシンが必要」と聞けば,「なんだ,やっぱりリアルタイムのゲームでレイトレーシングなんて夢じゃないか」と思うかもしれない。将来的にはGPUの性能強化で解決できるはず……と期待したいところだが,現状のハードウェアでレイトレーシングを活用するソリューションも存在する。一例としては,GDC 2018でFuturemarkが提案していた「レイトレーシングでしか実現できない表現にだけレイトレーシングをピンポイントで使う」というものが挙げられよう。
それに対してNVIDIAが提案していたのは,「ライトマップの高速度更新にレイトレーシングを使う」というアイデアだ。
ライトマップ(Light Maps)とは,間接光などの影響にも配慮した大局照明を事前計算してテクスチャなどに焼き込んでしまう技術のこと。昔は結果を画像テクスチャとして“焼き出し”て,それらをそのまま3Dモデルに適用するのが主流だったが,最近では,2Dテクスチャだけでなく3Dテクスチャ(≒テクスチャ配列)に「方向と大きさ」を持った間接光のベクトル情報を描き出し,それを用いてランタイム時に間接光ライティングを施すこともある。
最近のゲームタイトルで,法線マップによって表現された岩肌の微細な凹凸や機械の微細モールドなどで「視線角度に依存した間接光によるスペキュラハイライト」が出る場合は,いま述べたような新しいスタイルのライトマップによるものであるケースが多い。
具体的には,ゲームエンジンの「Unity」におけるライトマップ焼き込み機能をRTXで処理する。デモを実行すると,舞台となる「宇宙船の佇むドック」に対するライトマップ生成がものの数秒で完了した。
「ゲームエンジンやコンテンツ制作ツールなどで処理時間のかかる,ライトマップ作成や,間接光情報の事前計算のアクセラレーションにもDXRおよびRTXは使えますよ」とアピールするためのデモというわけである。
ライトマップ作成は,かなり計算量の多いヘビーな工程だが,3Dシーンの各点に置いた間接光情報を持つプローブごとについて計算するだけなら,もっと負荷は少ないはずだ。その程度であれば,リアルタイムに近い早さで計算できるだろう。たとえば,複数のキャラクターが動き回ったりするシーンで,キャラクター同士による影響に配慮した間接光情報のリアルタイム更新は,DXRやRTXが効果的に活躍できる分野となるかもしれない。
DXRやRTXが登場しても,全部の描画をレイトレーシングで行うのは,かなり難しいことが分かってきた。一方で,レイトレーシングを限定的かつ効果的に使う用途がありそうというのは,Futuremarkのデモと今回のデモから見えてきた気もする。
「Metro Exodus」がリアルタイムレイトレーシングに対応
RTXに関連した展示では,2018年第3四半期発売を目指して開発中というFPS「Metro Exodus」(PC
ちなみに,Metroシリーズの開発元である4A Gamesは,NVIDIAのGameWorksを積極的に活用するゲームスタジオなので,ゲームにおける新技術の採用事例としてよく登場する。
さて,すでに開発終盤にあるという本作では,メインのレンダリング法として従来どおりのラスタライズ法を採用しつつ,レイトレーシングをワンポイントリリーフ的に活用しているそうだ。その意味ではFuturemarkの技術デモと同じアプローチだと言えるだろう。
Futuremarkの技術デモは,リフレクション生成にのみレイトレーシングを使っていたが,Metro Exodusでは,環境遮蔽の生成にのみ活用する実装となっていた。NVIDIAブースで披露されていたデモの動画がYouTubeに上がっていたので,下に示しておきたい。
この動画はシーン全体をレイトレーシング法による環境遮蔽(Raytraced AO)で描いているが,ブースでのデモだと,1つのシーンの左側を従来手法の画面座標系(Screen Space)による環境遮蔽である「Screen Space Ambient Occlusion」(以下,
SSAOとRaytraced AOの違いは「正しい環境遮蔽が出ているか」や,「視点の動きに依存せずに,安定的な環境遮蔽を表現できているか」といったところに現れる。
SSAOは,描画を終えて残るZバッファの凹凸具合を探査し,凹部に陰色をつけるだけなので,視線が移動するとZバッファの凹凸具合が変わり,結果として時間方向に陰色領域の遷移が起きてしまう。陰色がうねうねと動くような見映えになってしまうのだ。「SSAOは静止画だとキレイだが,動画になると気持ち悪い」などとよく言われるが,その原因はここにある。
レイトレーシング法による環境遮蔽の場合,実際にそのシーンがどう遮蔽されているかレイトレーシングで検証して影を付けているため,視線の動きに影響を受けることなく,安定した陰色を付けることができる。上掲の動画で再生開始後32秒あたりに出てくる「スクラップとなったクルマの内部」は,SSAOで描画すると明るくなってしまうところ,Raytraced AOでは安定して暗く描けている。
なお,Metro Exodusでは,レンダリング結果のフレームから鏡像を生成する画面座標系の疑似リフレクション(Screen Space Reflection,SSR)でリフレクションを生成している。そのため,カメラがパンすると途端に鏡像が消失する現象が見て取れた。動画でも40秒あたりから先で左側に見える水面の映り込みを観察すると分かるだろう。
GPU負荷的に,レイトレーシングで描ける要素は1つか2つ程度というのが当面の制限になるはずなので,「何をレイトレーシングで描くか」は,グラフィックスエンジニアの悩みどころになりそうだ。もちろん,当該ゲームタイトルにおいてどんな表現要素を重視するかによっても変わってくることだろう。
RTXは,本当にVolta世代のGPUでしか使えないのか
Volta専用となった理由の1つとしてNVIDIAは,「RTXの動作には,Voltaコアにしか搭載していない機械学習アクセラレータ『Tensor Core』も使っているため」と理由を挙げている。
では,この制約が取り払われて,Volta世代以前のGPUに対応したRTXが出るのかというと,今のところはまったく分からない。
このあたりは,技術的に可能か不可能かというより,NVIDIAがどの世代のGPUをどれだけ売りたいかというマーケティング戦略によるところが大きいだろう。それゆえ,DXRが正式リリースとなる2018年秋以降になってみないことには,予想がつかないというのが正直なところである。「競合のAMDやIntelの出方も見て……」という側面もあるはずだ。
NVIDIA公式BlogにおけるRTXについてのポスト(英語)
4GamerのGDC 2018記事一覧
- 関連タイトル:
Volta(開発コードネーム)
- この記事のURL: