[CEDEC 2018]ゲーム開発マニアックス:レイトレでゲームはどう変わっていくのか?

[CEDEC 2018]ゲーム開発マニアックス:レイトレでゲームはどう変わっていくのか?
 今年のCEDEC,ひいてはゲーム業界でのひとつのトピックが「レイトレーシング」なのは間違いないだろう。まだ一般人の手の届くところにはきていないわけだが,すでに既存のPCゲームでのレイトレーシング対応が行われるなど,欧米のゲーム企業はレイトレーシングに向けて舵を切り始めている。
 残念ながら日本はまだそういった流れの蚊帳の外だ。そんなレイトレーシングはゲームどう変えていくのかについて考えるパネルディスカッションが行われた。

 モデレーターを担当したバンダイナムコスタジオの?高橋誠史氏は,同社で先端的な技術を扱う部署に所属しており,今後はレイトレについても深くかかわっていくことになる人物だろう。
 NVIDIAの竹重雅也氏は,国内でのゲーム開発のサポートを担当する部署にいるが,レイトレ対応GPUメーカーからの出席者であり,現状のテクノロジーについて国内で最も精通した人物の一人といえるだろう。
 AMDの原田隆宏氏は,GPUメーカーに所属していることもさることながら,GPUを使った最先端の双方向パストレーサー「Radeon ProRender」の開発者であり,今回の出席者の中でも群を抜いたレイトレーシングの専門家だ。
 諸事情で参加が危ぶまれた(本来の主催者である)西川善司氏もパネラーとして参加している。

左上から,高橋誠史氏,竹重雅也氏,原田隆宏氏,西川善司氏

 原田氏が開発しているRadeon ProRenderがどういったものかを示すために会場で上映された動画が下に掲載したものだ。粗い点の集合がだんだんと完成形に近づいていく様子が確認できる。現在のGPUによるリアルタイムレイトレーシングの状況を示すものではあるが,CGでのレンダラとして使える品質のものなので,ゲームで要求される品質と単純に比べることはできない。それでもちゃんと1画面に数十秒はかかりそうなことは分かるだろう。ゲームで使えるようにすること,つまりこれを1/60秒ないし1/30秒にするというのは相当に大きなチャレンジだ。


 さて,こういった非常に濃いメンバーによる,まだほとんどの人が手にしたこともないテクノロジーの話であり,「辛口」難度指定にされていたこともあるが,予備知識がそれなりに必要なセッションであったようにも思われる。ここではCEDECでのレイトレーシングの話題を総括しつつ紹介してみたい。

[CEDEC 2018]ゲーム開発マニアックス:レイトレでゲームはどう変わっていくのか?


レイトレの時代はやってくるのか?


 まず,確認を兼ねて竹重氏からDirectX Raytracingの概要についての説明が行われた。DXRは,これまでのDirectXで扱っていたバッファなどをそのまま使ってレンダリングできるレイトレーシングシステムだ。画面全体をレイトレで処理しようというのではなく,既存のラスタライズでいけるところはラスタライズで処理し,部分的にレイトレを使うハイブリッドレンダリングを前提としたシステムとなっている。従来のゲームアセットをそのまま使ってレイトレーシングができるのだ。

 (リアルタイムではないが)GPUを使ったレイトレーサには,NVIDIAのOPTiXやAMDのRadeon Raysなどがあり,すでにゲームスタジオでも使われていると高橋氏は語り,ではAPIとしてDXRはそれまでのDirextXとどう違うのかを竹重氏に確認した。

[CEDEC 2018]ゲーム開発マニアックス:レイトレでゲームはどう変わっていくのか?

 それに対して竹重氏はターゲットとするパフォーマンスの差を挙げた。
 OPTiXではパストレーシングで1枚あたり1秒2秒でプレビューでき,もう少し時間をかけるとさらに綺麗なレンダリング結果が手に入るといったところが目標である。一方のDXRはミリ秒の一桁のところを目指しており,住んでいる場所がそもそも異なる。つまりリアルタイムのレイトレーシング専用のAPIとなっていることだという。

 原田氏によると,実は,Radeon Raysはオフラインのレンダリングだけでなくリアルタイムでのレイトレーシングにも対応しており,実際,SIGGRAPHではハイブリッドレンダリングのデモも行われていたのだという。会場では1/30秒とか1/60秒といったパフォーマンスでデモが実行されていたそうだが,APIはDXRとは異なるとのこと。


 処理内容の比較ができないのでパフォーマンスは分からないが,これだけ聞くと(専用ユニットを持たない)Radeonでもある程度DXRに対応できそうな雰囲気は感じられなくもない。とはいえ,先行するNVIDIAがPascal以前を切り捨てている意味を考えると楽観はできない。


レイトレはゲームでどう使われるのか


 SIGGRAPHやgameescomでTulingアーキテクチャのGPUが発表されたが,現地での印象はどうかと聞かれた西川氏は,現状では比較的簡単なアンビエントオクルージョン(AO)や影の生成にレイトレーシングを使っている実装が多く,Battlefield Vでは反射,MetroではGIが使われているという。ラスタライズオンリーのものを合わせると,3段階くらいでの実装が行われるのではないかという予想をしていた。
 それに対し原田氏は,ゲームでレイトレーシングを使う場合の困難さとして,計算負荷が一様ではないことを挙げていた。キャラクターがたくさんいるシーンと何もないシーンとの差が激しい場合でも,フレームレートを落とすわけにもいかず,どう対処するのかが課題になるだろうとしており,格闘ゲームなど,フレームレートに厳しいゲームを扱っている高橋氏は,GPUの演算ユニットをレイトレで共用しなければならなくなるのか,共用部分を作らないようにどうやっていくのかが興味深いと語っていた。

 そういった問題があるので,比較的予算が見通しやすい影生成やAOが多く使われているのではないかとする西川氏に対して,とはいえAOや影生成ではちょっと地味ではないかという意見が高橋氏から上がった。
 既存技術でもある程度綺麗にできている部分でレイトレーシングをアピールしても見た目にはほとんど変わらなかったりすることもある。AOや影などは見る人が見れば分かる(かもしれない)程度の差しか出ないので,地味すぎると感じているようだ。「プロデューサーを説得するビジュアル効果」としてはもっと夢がある形のものが望ましいと高橋氏は語っていた。これは開発現場からの切実な声かもしれない。
 gamescomでのNVIDIAの発表会で,それは顕著だったと西川氏。Tomb Raiderのデモではレイトレの影とラスタライズでの影の比較などが行われたのだが,一般の来場者は皆ポカンとしていたという。Battlefield Vでは反射なども行っており,こちらのデモでは悲鳴が上がるほどの盛り上がりになったという(まあ反射もリフレクトマッピングなどと見分けられる人がどれくらいいるのかは疑問だが)。



10G Rays/sのパフォーマンスとは


 RT Coreがなにをしているのかについて,竹重氏はどこまで話していいのかなどの摺り合わせが社内で終わっていないのでなにも話せず,代わりにNDA範囲のはっきりしている西川氏が話せる範囲で説明を行った。

 曰く,RT Coreはレイを生成する部分とレイを直進させる部分から構成されているという。レイの交差を取る部分については,BVHベースで行っていることはすでに公開されている。DXRの説明で出てくる図そのものだと語っていた。
 しかし,DXRでは,トップレベルとボトムレベルの「Acceleration Structure」という形でDXRで使うオブジェクトを定義しているが,その実装はハードウェアに一任されているので,DXR自体ではなにをどうするということまでは規定されていない。原田氏はその内容が気になっているようだった。データ構造としてはBVHを使わない実装も可能だと竹重氏も語っている。

Acceleration Structure(竹重氏の講演資料より)
[CEDEC 2018]ゲーム開発マニアックス:レイトレでゲームはどう変わっていくのか?

 原田氏は,DXRのAcceleration Structureについて不満を漏らしていた。一般的なCGのレイトレではシーンによってデータ構造を変えることで高速化ができる場合もあるようで,そのあたりの柔軟性に欠けるらしい。DXRではこれまでのゲームで使っていたようなポリゴンデータの塊を投げてやれば勝手にBVHなりの構造にしてくれるので,使い方は簡単な半面,投げたあとはまったくいじれないというブラックボックスになっている。そのあたりに不満が出るのだろう。
 竹重氏はそれに同意しつつも,ハードウェア化することを前提に考えると,現状ではその部分に柔軟性を持たせるのは難しいという考えを示した。

 高橋氏からは,新GPUで強調されていた「10G Rays/s」というパフォーマンスについての話題が出され,その数値がゲームで出るのか,使いきれるのかといった疑問が提示された。
 これは竹重氏もよく聞かれる質問だそうで,RT Coreは空間の中で衝突判定のためにレイをトラバースする部分をアクセラレートしているものであり,10G Raysというのはレイのトラバーサルユニット(RT Core)の最高性能値として考えてほしいと語っていた。

 どういうシーンで10G Rays/s秒出るのかという質問も出ていたが,竹重氏は,これはおそらく実際には出ない数字だが,近い数字にはできる,性能の指標となるものだという考え方を示した。シーンとしては,「DXRだとHit Shaderは飛ばせるので,Miss Shaderだけ使ってコヒーレンシを上げたのではないか」というのが竹重氏の予想だ。
 レイトレはコヒーレンシがあるとないとないとでまったく性能が違ってくると自身の経験を語る原田氏は,2次レイのバウンスなどは凄く遅くなるので,そのへんはどうなのだろうかと疑問を呈していた。
 竹重氏は,そのあたりについては楽観視しているわけではないが,しっかりプロファイリングすることで改善は可能という立場のようだ。
 氏が行ったDXRのセッションでも,GPUは仕組み上,同じ処理を大量に行うときに効率が上がるようにできており,最初のレイを飛ばすところまではよいのだが,ヒットやミスで処理が分かれていくと効率が落ちていくだろうとしていた。

 なお,コヒーレンシの問題はGPUを使う場合に必ずついて回る問題であって,そろそろ脱却してもいいのではないかというのが氏の意見だ。効率が悪ければいずれ工夫して改善される問題であって,現段階でのレイトレーシングの導入については「改善が早まる」としていた。

 一方,gamescom会場でNVIDIAの技術者との会話で,RT Coreの「10G Raysというのは凄いですね」と言った西川氏は,「レイを生成するというのは,パラメータのメモリを確保して値をセットすることであり,レイのトラバースはメモリ空間をサーチしていくだけのことで,専用ハードウェアを作ったらそんなに難しいことでもないんだよ」と語られたという。

 結局のところ,竹重氏が挙げていたMissシェーダの処理というのは,Acceleration Structureを下っていかない1回の交差判定を前提としたのではないかという推測だ。つまり,BVHとレイの検索1回分の処理時間ということになる。理論性能としては妥当だろう。
 BVH内のバウンディングボックス1個とレイの交差判定が1Rayの意味だとすると,多重構造の場合(普通多情構想だろうが),ポリゴンに到達するまでに軽く10Raysくらい費やしている可能性もありそうだ。


AMDはどうするのか?


 ここでひと段落入れてネットを通じての質問が取り上げられた。
 ずらりと並んだ質問には当然ながら「AMDのDXRへの対応」についてのものもあり,これは全世界的な関心事ということでピックアップされた。これに対し,どこまで言っていいのか分かりませんがと前置きしつつ,AMDの原田氏は「いずれ出てくるはずですね」とだけ回答していた。まあ,当然の対応というところだろうか。DirettXの拡張なので対応しないわけもなく,実際,対応するというコメントだけは公式に発表されている。時期などについてはまったく発表されていないというだけの話だ。
 なお「PS5についてはソニーさんに聞いてください」ということで簡単に流された。

[CEDEC 2018]ゲーム開発マニアックス:レイトレでゲームはどう変わっていくのか?

 また,Epic GamesのCEO Tim Sweeney氏は,数年でPC,コンシューマ,モバイルといったすべてのゲームプラットフォームがレイトレ対応になるだろうとの予測をしていた(関連記事)。Project Spotlightなどで,DXRではNVIDIA,Microsoftと並んで中心的な位置にいた氏の発言だけに気になるところではある。モバイルはTegraやShield Tabletで実現される可能性がないではないかもしれないのだが……。


レイトレはなにが苦手なのか


 次に,レイトレはどういうところに導入しやすく,どういう部分は難しいのかというお題だ。
 対応が難しそうな項目として挙げられたのは,

  • ボリューム
  • 動的メッシュ
  • 半透明

だった。

 それに対して,竹重氏はボリュームレンダリングと半透明は導入が難しいだろうというのは素直に認めていた。動的メッシュについては,メッシュの生成などをうまくマネジメントすれば大きな問題にはならないだろうという見通しだ。
 一方で,導入が簡単なものは,やはりすでに行われているリフレクション,シャドウ,AOといったものが挙げられた。これらはディファードレンダリングの過程で,処理用のバッファが作られているので,それを利用して処理を差し替えれば十分可能だろう。

 ボリュームレンダリングは難しいというのは,まあ,どの手法を使っても簡単ではないだろう。ボリュームレンダリングにもいろいろあるのだが,とくに半透明なもやもやしたもののレンダリングのことを指すことが多い。あえてそういうものをレンダリングするときには,レイキャスティングやレイマーチングが使われることが多いと思うので,レイトレが苦手とするテーマというのではなく,そもそも処理が重いだけという気はする。

 処理系としては,やはりディファードレンダリング系からのほうが楽なのかという質問が高橋氏から行われた。竹重氏はDXRではディファードで作られる各種バッファを利用でき,シャドウを作る際のデノイジングでもデプスマップやノーマルマップのバッファが有用であり,ディファード系の相性がよいとしていた。


ノイズ対策はリアルタイムレイトレの生命線


[CEDEC 2018]ゲーム開発マニアックス:レイトレでゲームはどう変わっていくのか?
 ここで高橋氏からノイズについての質問が挙がった。
 レイの数を増やすとパフォーマンスが落ち,減らすとノイズが増えるという「特有の問題」について,どう対処すればよいのかという質問だ。
 これについては原田氏から回答があり,現在のDXRのデモではレイが多くなくてもノイズが出にくい用途に限ったデモが行われているようだとの見解を示していた。

 ちょっと話を外れるが,ここでは「レイの本数が少ないとノイズが出る」ということが半ば常識のように語られている。これは少しだけレイトレーシングを知っている人だと意味が分からない表現かもしれない。レイトレーシングでは通常1点に1本のレイしか飛ばさない(途中で増えることはあるが)。
 硬い絵のクラシックなレイトレーシングが,表現力の大きな分散レイトレーシングや確率的にGIを実現できるモンテカルロレイトレーシングに移行し,さらにパストレーシングが出てきてようやく意味を持つ表現である。最近ではレイトレの話の多くがパストレーシングを前提に話されているように思われる。今後の話でもそれを念頭に置いておくのがよいだろう。
 パストレーシングとはどんなものか? いろんな手法があって私も正確に把握していない可能性が高いのだが,ざっくりと言って,レイが拡散反射体にぶつかったときに反射方向に幅を持たせて2次レイをたくさん飛ばして柔らかい影を出すのが分散レイトレーシング,全方向にランダムに2次レイをたくさん飛ばすのがモンテカルロレイトレーシングという感じだ。どっちも3次レイ,4次レイと分散していくと複雑なシーンではもの凄く時間がかかりそうだというのは分かるだろうか。
 パストレーシングはモンテカルロと同様にランダムに反射するのだが(手法にもよる),たくさんのレイはばらまかない。1本で2次反射3次反射を繰り返す。それだと絵にならないのでは? と心配する向きもあるだろうが,1ピクセルについてそれを何度も繰り返すことで,確率的に正しい絵を出そうというアプローチになる。そう,1ピクセルに何本もレイを放つのだ。
 その結果どんな感じになるのかは,冒頭のRadeon ProRenderのムービーを見てもらうのが分かりやすいだろう。あんな感じでレイが増えるほど画面が綺麗に出来上がっていくのだ。

 NVIDIAの出しているサンプルでは,1本のレイでレンダリングしたものに対してデノイズをかけて……といったものがいくつか見受けられるのだが,Radeon ProRenderの様子に比べると,ぱっと見て1本でもそこそこ綺麗な絵が出ている状態なのが分かる。原田氏がノイズの出にくい部分で使っているというのはそういうことだろう。

 だからハイブリッドでやらないといけないのだろうと原田氏は見ている。それに対し,ノイズが消えるまでレイを飛ばすのは現実的ではないので,デノイズなどのフィルタリングでカバーするという実装が主流になるだろうと竹重氏は語った。
 GDCではレイトレ関連のセッションもいくつか行われていたのだが,レイトレの話は10分くらいで終わって,あとは全部デノイズの話になっていたと原田氏は回想していたが,デノイズの効果は認めており,リアルタイムのレイトレでは重要なトピックだとしていた。さらに,反射では前のフレームの画像を使ったり,リプロジェクションしてもよいのだが,正確でなくなったり,変なノイズが出たりすることもあるので難しいだろうと語る。

 続いてAI式のデノイズでは,タイトルごとに学習しておく必要があるのかといった質問が高橋氏から出された。竹重氏によると,やはりタイトルごとに教師データを用意するのがベストだとのこと。
 関連して西川氏からは,ディープラーニングベースのデノイザとバイラテラルフィルタベースのデノイザは両方推していくのかといった質問が行われた。
 竹重氏によると,両者の性能レンジが違い,バイラテラルなら数ミリ秒以下で実行できるので,たとえば,たくさんのライトがあってライトごとにデノイズを行いたいといった場合にはバイラテラルが使われるだろうとのことだった。
 では,画面全体に対して一定コストでAI型のデノイザをかけたほうが速くなるケースはあるのかといった西川氏に対し,これは原田氏から説明が行われた。バイラテラルもライト単位で使わなければならないものではなく,多くのライトに対して個別には使いに久野は確かだが,いろんな実装ができるので一概には言えないといったことのようだ。
 しばらく前に竹重氏はシャドウマップの影とレイトレの影の比較をしていたことがあったとのことで,レイトレの影は小細工や調整が必要ないのがよいと語っていた。シャドウマップでもクオリティを上げるとそこそこよい影は出るようなのだが,それは個別に調整を施したあとのこととなるようで,なにもしなくても理想的な影が出るというのはすばらしいことだ。
 原田氏は,なにをレイトレで処理するべきかを考えるときに,竹重氏のような視点が重要だと語っていた。既存の手法でも破綻が少ない部分にレイトレを使ってもあまり嬉しくない。生産性を上げる意味でも,手間の少ないレイトレは重要だとしていた。


レイトレでゲーム制作は楽になるのか


 ここでまた視聴者からの質問が取り上げられ,レイトレでゲーム開発は楽になるのかといった点が話し合われた。
 高橋氏は,ゲームで使うオフラインレンダリングなどプリレンダー部分は外注に出しているとのことで,社内でレイトレーシングの絵を作れる人員がいないと語っていた。もちろん,シャドウのベイクなどは行っているが,照明の設計などは頭の痛い部分のようだ。
 原田氏は,ベイクにレイトレを使って生産性を上げる方向性を示唆しつつ,UnityではRadeon ProRenderを使ったLightMapperを紹介した。


[CEDEC 2018]ゲーム開発マニアックス:レイトレでゲームはどう変わっていくのか?
 ムービーを見てもかなり高速にライトマップが更新されていることが分かる。これは視点を動かしたときに,見えている範囲のライトマップをまず更新し,それがだいたい収束したら外側のレイを処理していくという流れだそうだ。一瞬粗くなっていてだんだん綺麗になっていくのだそうだが,よく見ないと分からないレベルだろう。

 Unityは以前から同様なアプローチは示していたのだが,Unity 5のベイクがそれになるはずだったのだが,ふたを開けてみるとそこにEnlightenが搭載されていたりした。結局Imaginationのレイトレーシングは搭載されていたかどうかよく分からない。

 それはともかく,ハイエンド環境でレイトレが使えるようになったといっても,モバイルゲームなどではまだ先の話であり,直接ゲームにレイトレが使われるようになる前に,高品質なライトマップが手軽に扱えるようになればそれはそれで有意義なことかもしれない。

 次の質問は,ポリゴン以外関数モデルなどは扱えるのかというものだった。これに対して竹重氏は,交差の処理がすべてソフトウェアに落ちてくるのであまりたくさんのものは難しいだろうが,処理自体は可能としていた。竹重氏のDXRのセッションでもポリゴン以外に完全な球体なども扱えるとしていたのだが,具体的にどう扱うかは語られていなかった。とりあえず,それが可能になったというところが重要であり,詳細はこれからの研究待ちといった感じだろうか。

 オーディオへのレイトレの要用についての質問では,AMDのTrue Audio Nextが紹介され,GPUを使ったアクセラレートは有効としていた。NVIDIAでもOptixベースのものがあり,光の処理とあまり変わらないので同様に有効としていた。話の中で出ていたのは,必要なレイの数の話だ。物理やAIだと使うレイが少なすぎてGPUには向かないだろうとしていた。物理演算処理で使うときは,さほど必要なレイは多くなく,さらにレイテンシを嫌うので,CPUでの処理がいいだろうとのこと。

 ここで西川氏から再度ボリュームレンダリングについての質問があった。 
 Battlefield Vのインパクトがあり,カメラから見えていない部分の映り込みなどは評価が高かったのだが,戦争モノなので爆発シーンなども多く,映り込んだ爆炎がスプライトぽく見えることもあったという。ボリュームのレンダリングは難しいというが,今後はこのあたりも要求されていくのではないかという内容だ。

 竹重氏は「ボリュームはやりたいけど……ちょっと」とやや言葉を濁した。ただでさえ,リフレクション内のシェーディングはノーマルの処理などがいろいろ端折られることが多いという。なんにしても現時点では難しいだろうということだ。
 これに関連して,現状ではレイトレに対応したレンダリング部分とシェーダを使ったものの2種類を用意する必要があるのではないかという原田氏の指摘に対して,竹重氏もそのようにして性能を稼ぐ必要はあるだろうとしていた。

 リフレクションなどは現状でスクリーンスペーススペースの処理でも結構やれているではないかという人もいるが,実際に自分たちの絵がレイトレースで出ると一瞬で気づけるくらいに違うので,実装するしないはともかく一度試してみてほしいと竹重氏は語っていた。

 リフレクションについては,Futuremarkなどは基本的にスクリーンスペースでやってダメなところだけレイを飛ばすという実装をしており,そのようにパフォーマンスを稼ぐ努力が必要だとうとしていた。

 さらにリフレクションに関して,Battlefield Vでも鏡面に映り込んでいる通常では見えない敵をいち早く発見するなど,プレイの有利不利につながる可能性があることが示唆された。これを利用したゲームメカニクスなども出てくるのではないかという予測だ。

 そのほか,今後ラスタライズはどうなるのかについても取り上げられた。それについては,AMDの動きを挙げてプリミティブシェーダなどのジオメトリのパイプラインをリファインが進んでいくのではないかと西川氏。今後はコンピュートシェーダとDXRに集約されていったり,DXR部分も固定機能で始まって,今後性能が上がれば自由度が求められるようになって,プログラマルになっていくのかもしれないと竹重氏は語っていた。

 最後に講演をまとめるにあたって,最後に登壇者から一言ずつコメントが挙げられた。

 竹重氏は,今回Turingという新しいGPUを発表しRT CoreとTensor Coreという2つのコアをサポートしたが,これが直ちにゲームの生産性を上げるかというと議論があるだろうとした。しかしNVIDIAとしては,これまでもプログラマブルシェーダのサポートから始まり演算ユニットのスカラ化やFP32サポートなど新テクノロジーの導入を多く進めてきており,レイトレの今後の展開にも自信を持っているようだった。DXRやフィルタリングの最適化はまだまだこれから開発されていくのだろうと,会場の開発者に協力を呼びかけた。

 原田氏は,現状は戦国時代のようだとしつつ,今回はNVIDIAが先行したがこれからどうなるかは分からないと語り,今後のAMDの追い上げに期待しているようだった。

 西川氏は,NVIDIAとAMDの戦いの中でGPUが進化してきたことを挙げ,レイトレについても戦いの中で進化していくのだろうと語り,今後のAMDのレスポンスが気になるとしていた。また,同様に家庭用ゲーム機にも注目したいとコメントしていた。

 まだまだ謎の多いDXRだが,もうじきRTX 20シリーズが発売され,その実力の一端が明かされることになる。かつては一種のジョークであったリアルタイムのレイトレが実現され,これまでできなかった処理も実現できるようになる。ゲームの表現力もさらに上がっていくだろう。来年のCEDECでは,さらに現実的なレイトレの講演が登場することに期待したい。

西川善司の3DGE:GeForce RTX 20完全理解。レイトレ以外の部分も強化が入ったTuringアーキテクチャにとことん迫る