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

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

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

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

LINEで4Gamerアカウントを登録
[GDC 2018]西川善司の3DGE:DirectX Raytracingにおける最適解は「レイトレーシングを行わないこと」!? Futuremarkが語るその真意
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2018/03/24 00:00

連載

[GDC 2018]西川善司の3DGE:DirectX Raytracingにおける最適解は「レイトレーシングを行わないこと」!? Futuremarkが語るその真意

 GDC 2018における3Dグラフィックス関連の話題は,ほぼ「レイトレーシング」で埋め尽くされている。というのも,MicrosoftがWindows環境下のマルチメディアコンポーネントAPIであるDirectXにレイトレーシングパイプラインを統合すると発表したからだ(関連記事)。

 Microsoftはこの技術を「DirectX Raytracing」(略称「DXR」,以下略称表気)と名付けたが,GDC 2018の会期中にはEpic GamesにElectronic Arts,Remedy Entertainment,そしてFuturemarkの4社が早くもDXRベースの技術デモ,もしくはそのムービーをお披露目していたりもする。


Futuremarkによるセッションのタイトル
 「3DMark」などで知られるFuturemarkはGDC 2018でレイトレーシング関連セッション「New Techniques for Accurate Real-Time Reflections」(正確なリアルタイム反射のための新しい技術)を実施し,さらには展示会場にもブース出展してデモを訴求するなど,DXRに相当前のめりな印象を受けた。ただ実際に取材してみると,同社のとても面白い考えに触れることができたので,本稿ではその内容をお伝えしてみたいと思う。


「ラスタライズ法レンダリングを主体として,ワンポイントリリーフでレイトレーシングを活用せよ」


 まずは,次のビデオを再生してみてほしい。これがFuturemarkによるDXRベースの技術デモである。


Maksim Aizenshtein氏(3DMark Team Lead, Futuremark)
 セッションでこのムービーを披露したのはFuturemarkで3DMarkの開発を率いるMaksim Aizenshtein氏だが,氏が強調していたのは「パフォーマンスが非常に高いこと」だった。

 では,どうしてそんなに良好なのか。
 答えは単純で,画面内におけるピクセル描画の多くで,従来型のラスタライズ法によるレンダリングを採用しているからという,シンプルかつ身も蓋もない理由による。要するに,「レイトレーシングをできるだけ行わない」実装になっているのだ。
 Aizenshtein氏は,「この手法こそが,直近のレイトレーシング導入時代におけるゲームグラフィックスの最適手法だと考える」と自信を見せている。

 DXRの発表を受け,業界はレイトレーシング熱に包まれているが,性能をできる限り重視する前提に立った場合,現行のGPUでどのレベルのレイトレーシングを行えるかと言えば,実のところは「フルHDの画面全体を占める各ピクセルで1レイずつ投げる(≒約200万本投げる)のが精いっぱい」といったところである(関連記事)。となれば当然,レイトレーシングを活用できる機会は限られた回数になる。

 ちなみに,冒頭で示したEpic Gamesのデモは,24fpsのリアルタイムで確かに動作するが,使っているハードウェアは液冷版「Tesla V100」4枚差しの「DGX Station」であって,お値段は日本円でざっくり1700万円とのこと。すごいのは間違いないが,一般のゲーマーから手の届く金額でもまったくないのである。

Epic Gamesが示している「(冒頭の)Star Warsを題材にしたリアルタイムDXRデモに用いたハードウェア」がこれ。「ゲーマーのための3Dベンチマーク」である3DMarkのデベロッパとしては,こういうハードを対象にするわけにはいかない
DirectX

 要するにAizenshtein氏は,この制限を受けて「極力レイトレーシングは使わない方針」をまず立て,「どうしても使わざるを得ない状況でのみレイトレーシングを使う」のが,今日(こんにち)のゲームグラフィックスにおけるレイトレーシング活用の現実的な落としどころだと言っているのだ。


レイトレーシングらしいレイトレーシングは極力使わない


 「そもそも論」として,3Dゲームグラフィックスの場合,「究極のフォトリアリティ」を目指すことはまずない。「説得力の高いビジュアル」さえ実現できればよく,たいていの場合,ゴールはそこに設定される。

 なら,現在のラスタライズ法でうまく実現できない領域の描画だけをレイトレーシングで補えばいいじゃないか。そういう「割り切り」の実装を提唱し,実際に披露しているのがFuturemarkの技術デモなのである。

 さて,Aizenshtein氏はセッションで,技術デモのレンダリングパイプラインが次のようなものになっていると紹介していた。

Futuremarkの技術デモにおけるレンダリングパイプライン
DirectX

 簡単に解説すると,上段はラスタライズ法によって実装したディファードレンダリング(Deferred Rendering)ベースのレンダリングパイプラインに相当する。具体的には,ライティングおよびシェーディング用のパラメータ群をレンダリングして生成したGバッファ(G-Buffer)を用い,そのうえでキューブ環境マップなどを光源と見なしてシーンをライティングするイメージベースライティング(Image Based Lighting)を行う流れだ。モダンなディファードレンダリングのパイプラインそのものといった感じである。
 下段がレイトレーシング法,すなわちDXRによって実装している部分だ。

 それを踏まえ,Futuremarkの技術デモが割り切っているポイントは2つある。

 1つは,Futuremarkの技術デモにおいて,レイトレーシング法は鏡面反射の映り込み(=リフレクション)要素を得るためだけに活用しているところ。Futuremark以外のEpic GameとElectronic Arts,Remedy Entertainmentはいずれも,リフレクション以外に影生成や遮蔽陰影(Ambient Occlusion,アンビエントオクルージョン)などの取得にもレイトレーシング法を利用している。
 ただその場合,性能に配慮する前提に立つと,どうしても大量のレイ射出は難しい。しかしリフレクションに影生成,遮蔽陰影といった要素をレイトレーシングで得ようとすると,どうしてもそれなりの数のレイは射出せざるを得ない。このジレンマを解決する策として,「ならラスタライズ法での実現が最も難しいリフレクション取得のみをレイトレーシングで実現させよう」とFuturemarkは判断したのだ。

 Aizenshtein氏によると「影は現在の手法でもそれなりの品質のものが出せる。遮蔽陰影も同様だ。それらはレイトレーシングを使って取得してもノイズが出やすい。出てしまったノイズを『演算予算を使って』後から消すくらいなら,別に今のラスタライズ法で得られるもので十分じゃないか。我々はそう考えた」そうだ。これは言われてみれば説得力のある主張だと言える。

DirectX
映り込み表現の鏡像表現であるリフレクションの実現にあたってラスタライズ法とレイトレーシング法のどちらがよいかというスライド。上の4項目がラスタライズ法によるもので,いずれも堅牢性(Robust)に乏しい。つまり悪条件で破綻しやすくなる。対して下の2項目はレイトレーシング法を用いる場合で,速度(Fast)は出ないが堅牢性は優秀だ
DirectX
何でもかんでもレイトレーシングを使うのは得策ではない。少なくとも,ここしばらくは!

 2つめは,リフレクションをレイトレーシング法で得るとして,レイが衝突した先のライティングやシェーディングにあたってはなるべく負荷のかからない方法を優先的に選択していくところである。

レイトレーシング法でリフレクションを得る場合も,より軽量な手法が使えるならそちらを優先して使っていく方針をFuturemarkは採用した
DirectX

 もちろん,リフレクションを得るためにレイは飛ばす。しかし,放ったレイが3Dオブジェクトに衝突した場合,当該3Dオブジェクトにおいて衝突した材質のライティングやシェーディングを行う処理をすぐには行わず,より負荷の低い代替手段がないか当たるのだ。
 具体的には,まず当該レイの衝突先が視点から見えているか否かを吟味し,見えている場合にはライティングやシェーディングの計算は行わず,すでに得られているレンダリング結果からサンプルして持ってくる。

 そう,これはレンダリング結果から映り込みとしての鏡像を生成する疑似手法として有名な,スクリーンスペースリフレクション(Screen Space Reflection,以下 SSR)の処理そのものである。つまり,レイの衝突先がSSRでカバーできる状況なら,SSR的な処理を行うということだ。

 では,放ったレイがどの3Dモデルにも衝突せず,描画対象の3Dシーンから飛び出てしまった場合はどうなるか。
 この場合は,スカイボックスやキューブ環境マップをサンプルして持ち帰るようにしている。なので,直接的に環境マップを適用しているのと大差ない処理系に落ちることになる。

 そうなると気になるのは「一体全体どの状況でのみ,『本物』のレイトレーシングを行うのか」だが,答えは「放ったレイが3Dモデルと衝突はすれども,衝突先3Dオブジェクトが描画フレームの中には含まれない,画面外にあるものだったりする場合」と,「画面の中にはあるが,視点から見て死角の位置となる場合」だ。「SSRの弱点が露呈する箇所にだけレイトレーシング法らしい処理を行う」と言い換えることもできるだろう。


FuturemarkのDXR技術デモにおける「レイトレーシング活用ピクセル分布」を見る


 Futuremarkのブースでは,Futuremarkで3DMarkの技術面を統括するAntti hirvonen氏が,実際に技術デモを実際に動かして技術解説をしてくれたのだが,ここで興味深い画面を見ることができた。

DirectX
Futuremarkブース
DirectX
Antti Hirvonen氏(3DMark Tech Lead, Futuremark)

 それが下の画面だ。
 ここでは桃,緑,橙,青という4つの色を確認できるが,各色は「DXR技術デモが動作しているとき,どのピクセルをどんな手法で計算して色を決定しているか」を示している。

DXR技術デモにおける女性タイムトラベラーのクローズアップシーン。上で示したデモムービーの再生開始後40秒経過時点あたりだ。この画面は,そのシーンの各ピクセルがどんな計算手法で得られたかを示している
DirectX

 桃は,ラスタライズ法だけで描画された領域だ。ライティングおよびシェーディングは物理ベースレンダリングによるものとなるが,材質が持つ面の粗さ(Roughness,ラフネス)はそれなりにあるため,ライティングも事前計算済みキューブマップベースのイメージベースライティングによって行うことになる領域ということになる。
 緑は,「レイトレーシングは行ったが,SSRもしくはキューブ環境マップ参照で代用した領域」だ。「物理的には正しくないけれども,見た目的にはそう間違えては見えない領域」と言っていいかもしれない。

Hirvonen氏が示した例と完全に同じコマではないが,参考までに。ヘルメットの上部に「天井の領域を受けたリフレクション描画」が入っている
DirectX
 橙は「レイトレーシングらしいレイトレーシングを行っている領域」で,処理負荷的には最も高い。たとえば,女性のヘルメット部で一部が橙になっているが,これは画面外にある天井の領域を受けたリフレクション描画に相当するようだ。天井の領域は画面外にあるためSSRを適用できず,そのためレイトレーシングを行っているのである。

 青は,レイを飛ばしたはものの,そのレイは3Dオブジェクトに衝突することなく当該3Dシーンを飛び出てしまった領域だ。この場合は前述のとおり,背景としての環境マップ,あるいは屋外のスカイボックスなどを参照して描画することになるため,処理負荷は最も低い。


Futuremark製DXR技術デモの見どころ


 最後にもう少しFuturemark製技術デモを深く見ていくことにしよう。
 下のスクリーンショットは,Futuremarkが公開している「DXRの有効/無効を切り換えたアニメーションGIF」だ。画像をクリックするとアニメーションGIFが開くようになっているが,いずれにせよ重要なのは,DXRの有効/無効ではなく,ラスタライズ法にレイトレーシング法をプラスしたものか,ラスタライズ法のみで処理したかの違いを示しているということである。

※スクリーンショットをクリックするとアニメーションGIFが開きます
DirectX

 両者を比較したときに最も目立つのは,DXR無効とあるほうで,鏡に女性タイムトラベラーが映り込んでいないことだと思う。
 視点から見た場合の女性は正面から描画してあるのに対し,鏡の中に映り込んでいるのは側面や背面だったりするため,SSRによる疑似手法ではリフレクションを作り得ようがないため,このような描画結果になっている。一部の背景は歪みながらも映り込んでいるが,これはキューブ環境マップの適用結果だ。歪んでいるのは,キューブ環境マップを生成した基準の視点と,本シーンのカメラ視点,そして鏡によって反射した視線とのズレが大きいためである。

 もう1つの例は,床の映り込みに注目すると違いが分かりやすい。

※スクリーンショットをクリックするとアニメーションGIFが開きます
DirectX

 DXR無効とされる例ではSSRベースで鏡像を作り込んでいるため,床に映り込んでいる景色のうち,天井に近い領域が丸ごと消失してしまっているのが分かるだろう。また,画面右側ではタンスのような調度品周辺に注目すると,ラスタライズ法のみに頼る場合は,調度品の足元に映る鏡像が途中から消失する関係で,画面外にある光源からの光がタンスを突き抜け,床を明るくライティングしてしまっている。
 後者は不自然と言うよりむしろエラーに近い印象だが,SSRベースの鏡像だけで映り込み表現を実現しているゲームグラフィックスでは,実際,こうした表示になることがままある。

 3つめは,鏡像うんぬんというより,3Dモデルが持つ材質の表面ライティングを豊かにする方向でリフレクションを活用している事例だ。左側の展示ケースにおける木材などの陰影は,DXRオンとされる例において,床の照り返しの影響を受けたかのような,間接光表現のような陰影を見せている。

※スクリーンショットをクリックするとアニメーションGIFが開きます
DirectX


現実を踏まえた現実的なレイトレ活用法提案と言える,FuturemarkのDXRデモ


 まとめよう。「リフレクション以外のレイトレーシングはやらない」「リフレクションのレイトレーシングをやるにしても,軽量な手法で代用できるときはそちらを優先」という割り切った実装にもかかわらず,デモを見るとレイトレーシング法の効能をちゃんと見て取れるというのが,FuturemarkのDXRデモにおける,真の見どころだ。

 華々しく登場したDXRをこうも消極的に使うのはどうなのかという意見はあると思うが,実際問題として,すべての3Dゲームグラフィックス要素をレイトレーシングに置き換えるのは,現状というか当面は無理と断言してしまっていい。現実的な活用路線が,むしろFuturemarkの提唱しているような消極的なものになることはまず間違いない。

 3Dゲームの場合,PCなら搭載するグラフィックスカード,据え置き型ゲーム機であればプラットフォームごとの性能に応じてグラフィックス表現の品質を抑えざるを得ないケースがままあるわけだが,その場合も,従来型ラスタライズ法のレンダリングパイプラインはほぼそのままにしておけて,かつレイトレーシング要素は容易に有効/無効を切り換えられるFuturemark的な実装のほうがチューニングしやすいはずだ。

 もちろん,このあたりはゲームスタジオごとに考えが違う部分ではあるので,今後,さまざまな実装スタイルの提案が生じるはずだが,「レイトレーシングに夢見がち」な事態に陥らないよう,最初から現実的な活用法を見せてくれたFuturemarkの功績は大きいと思う。

[GDC 2018]Futuremark,「DirectX Raytracing」ベースとなるリアルタイム技術デモのムービーを公開

[GDC 2018]ついにDirectXがレイトレーシングパイプラインを統合。「DirectX Raytracing」が立ち上がる

[GDC 2018]NVIDIA,ゲーム向けのリアルタイムレイトレーシング技術「RTX」を発表

[GDC 2018][西川善司の3DGE]DirectX Raytracingでゲームグラフィックスは何が変わるのか。「Quantum Break」のRemadyが示す,その方向性


4GamerのGDC 2018記事一覧

  • 関連タイトル:

    DirectX

  • 関連タイトル:

    3DMark

  • この記事のURL:
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
トピックス
スペシャルコンテンツ
注目記事ランキング
集計:12月18日〜12月19日
タイトル評価ランキング
82
80
OCTOPATH TRAVELER (Nintendo Switch)
75
Déraciné (PS4)
2018年06月〜2018年12月