イベント
次世代ゲーム機のグラフィックスはどうなる? CEDEC 2012 ゲーム開発マニアックス〜グラフィックス編
今回のお題はズバリ“次世代ゲーム機を見据えたグラフィックス”である。Windowsでは,DirectX 11を利用したさまざまなグラフィックスの技術が開発され,その一部はゲームでも利用が始まっている。そろそろ次世代機に載るグラフィックスハードウェアの要件も見え始めたかなという感じで,それを意識しつつ話題のグラフィックス技術に関する話題が語られた。ざっくりと内容をレポートしてみよう。
レンダリングはDiferred系? それともForward系?
カプコン 技術研究部 プログラマー 石田智史氏 |
コナミデジタルエンタテインメント 小島プロダクション制作部 テクニカルディレクション担当 高部邦夫氏 |
スクウェア・エニックス テクノロジー推進部 リードR&Dエンジニア 岩崎 浩氏 |
ここ数年で話題のグラフィックス技術というと,グローバルイルミネーション(以下,GI)が筆頭に挙げられる。GPUの高速化と新たなアルゴリズムの開発によりリアルタイムのGIが可能になってきたためで,今回のCEDEC 2012でもGIに関するセッションが数多く設定されていた。
ただ,GI関係では主要なものだけでも片手では数えられないほど多数のアルゴリズムが開発されていたりもする。
そのため,西川氏は「最初からGIを取り上げてしまうと,あれがいいこれがいいという話になってわけが分からなくなるので」と前置きしつつ,「GIなどを含め,まず次世代(ゲーム)機を見据えたレンダリングメソッドとしてDeferred系が望ましいのか,それともForward系なのかということを先に考えてみませんか」と切り出した。
ここは若干の説明が必要だろう。3Dのレンダリングは大まかに頂点シェーダやジオメトリシェーダで頂点を処理し,ピクセルシェーダでピクセルの色や陰影を描くというような流れになるが,高度な映像を得るために複雑なピクセルシェーダプログラムを使うようになるといくつかの問題が生じるようになった。それは,ピクセルシェーダの計算負荷が重くなり,さらにGPUがサポートしている動的光源の数に制限があるため動的な多数の光源には対応できないといったような問題だ。
Epic Games Japan サポート・マネージャー 下田純也氏 |
NVIDIA デベロッパテクノロジーエンジニア 竹重雅也氏 |
そこで,ジオメトリシェーダでいったんシーンをレンダリングしてしまい,そのときにピクセルシェーダ用のさまざまな中間計算を行って,結果を複数のG-Bufferに書き出しておき,その結果をもとにピクセルシェーダプログラムを走らせる方法が考案された。この手法は一種のマルチパスレンダリングであり,「Deferred(遅延) Shading」あるいはDeferred Renderingという呼び方で最近のゲームでは盛んに利用されるようになっている。
Deferredに対して従来の手法を「Forward Shading」と呼んだりするのだが,最近になって「Forwardを改良したらどうか?」という提案も出てきている。その代表が,GDC 2012でAMDが発表した「Leo」デモに使われている「Forward+」という手法だ。
Forward+では,いったんレンダリングを実行して,画面をタイルに分割したうえで光源の影響範囲をGPUのCompute Shaderで計算,その結果を基にあらためて通常のForward Shadingを行う。従来式のForward Shadingでは扱えなかった,多数の動的光源に対応できるのがこの方法の特徴となる。
やはり最近,Deferred系が実績を上げているので,こういう結果なるかなといったところだが,パネリストとして一人意見を異にした岩崎氏は「Forwardがきてほしいというのが(自分の)願い」とし,「(Deferred系は)シェーダのバリエーションが制約されるのが問題。このゲームはこういう映像だと決まっていればいいかもしれないが,我々はいろんなシェーダ(プログラム)を書いているので,Forward系のほうがやりやすい」と主張する。
ちなみに,岩崎氏が開発に携わるゲームエンジンLuminous StudioはDeferredとForwardのどちらにも対応でき,話題をさらった同エンジンの技術デモ「AGNI'S PHILOSOPHY FINAL FANTASY REALTIME TECH DEMO」は「Forwardでやっている」(岩崎氏)そうである。
ただ,最後にはどちらか一方に絞る必要もないのでは,という意見がパネリストの間で一致した見解になった。
例えば,石田氏はDeferredの弱点とされる半透明の表現を挙げ「Deferred系では半透明の処理が問題としてついて回る。半透明(のオブジェクト)はForwardにして,ハイブリッドで描画という考え方はあるだろう」とハイブリッドを提案。
また,竹重氏は,Forward+ではジオメトリレンダリングのパスが2回必要になるためテッセレータがボトルネックになる可能性があると指摘し「どちらが有利かは数字を出してみる必要があるが」としつつ「シーンによってどちらが“ハマる”かが決まるので,甲乙を決める必要はないのでは」という見方を示していた。
GI対決はSparse Voxel Octree‐Global Illuminationに軍配が上がる
という具合にレンダリング手法を議論したうえで,続く議題として取り上げられたのがGIである。ゲーム向けのGIは多数の手法が提案され百花繚乱といった雰囲気があるが,今回のパネルディスカッションでは「Sparse Voxel Octree‐Global Illumination」(以下,SVOGI)と「Virtual Point Light」(以下,VPL)が取り上げられた。
SVOGIについては,こちらの記事に詳しいので参照してほしい。
一方,VPLというのは間接光も複数光源として処理してしまおうという技術で,先に挙げたAMDのLeoデモで提案された方法である。NVIDIAが提案したSVOGI,AMDが提案したVPLということで,NVIDIA vs. AMDという構図にもなったりするが,どちらも社内の研究グループが提案した技術で,例えばSVOGIがAMDのRadeon系では使えないと言うようなことはないので,その辺は押さえておいていただきたい(VPLではCompute Shaderが活用されているので,現行世代品ならCompute Shaderがやや高速なRadeonシリーズがちょっと有利かな,とかそういうことはあるが……)。
西川氏はSVOGIとVPL,どちらが有望かと会場とパネリストに質問。結果はSVOGIが圧倒的な支持を得て,パネリストは全員がSVOGIを推すという結果になってしまった。
つまり,SVOGIではGIのためにボクセル分割するが,分割した結果をいろいろ応用できるという指摘である。例えば,AIに敵が見えているかを判定するのにもボクセルが使えるなど「いったんシーンをボクセル化するといろんな使い道がある」(竹重氏)のが大きな利点というわけだ。
ほかのパネリストがSVOGIを推すのも,この応用が効くという部分が大きいようだ。例えば,岩崎氏は「(Luminous Studioでは)VPLを実装しているが,なぜSVOGIを推すかというと応用範囲が広いから。VPLはGIの計算という意味ではいいが,ほかの用途には使えない。SVOGIは応用範囲が広いので,仮にコストがかかってもいろんなものに使えるかな,という期待がある。個人的には高速化できれば(SVOGIは)面白いと思う」と期待を語る。
また,石田氏が「SVOGIが(次世代ゲーム機で)実用になってもらわないと困る。今やってるので」とカプコンのゲームエンジンMT Frameworkの次のバージョンのGIをさりげなく明かす一幕もあった。
そんな具合に支持を得るSVOGIだが,懸念もあると高部氏は指摘した。「ボクセル分割はどのくらいの空間までカバーできるのか? 例えばオープンワールドなフィールドや室内を行き来したら,SVOGIをどう使うか悩むと思う。まだ現時点でこれと決めるわけにはいかない」という。確かに,広大な空間ではボクセル分割が大きなボトルネックになる可能性がありそうだ。
このように開発者はSVOGIに期待しているわけだが,VPLがダメというわけでは決してない。「VPLも別の新しい手法につなげる手段になる。将来的には新しいアルゴリズムが出てくるだろう」(高部氏)という意見や「VPLにも応用力はある,勉強した時間は必ず何かにつながる」(岩崎氏)という意見もあり,現時点ではSVOGIに人気が出ているが,発展中の技術だけに将来は読みづらいところもあると見ておいたほうがよさそうだ。
静的オブジェクトにテッセレーションは意味がない
続く議題はテッセレーションである。DirectX 11で目玉になる機能だが,最近は問題点も指摘されるようになってきた。例えば,先のForward+で話題になったようにパスを2回以上回すようなレンダリングでは,テッセレータがボトルネックになりかねず逆に自由を奪うといったような点や,そもそも効果が目立たないなどという指摘もあったりする。
ロストプラネット2でいち早くテッセレーションを取り入れたカプコンの石田氏は「ロストプラネット2で検証したが,基本的に“丸くなる”というアドバンテージがどれだけプレイヤーに伝わるかが問題だと思う。ロスプラでは,丸くなったところをプレイヤーにじっくり見てもらわないと伝わらなかった。(その経験から)もしテッセレーションを使うなら,ディスプレースメントマッピングまでやらないと駄目だろう」と見解を述べた。
ちなみに,Catmull-Clark分割に関連する特許が自由に使えるようになったことはゲームにも影響を与えそうだ。例えば,岩崎氏は「Catmull-Clark分割はアーティストのワークフローにフィットする」とその利点を強調。Catmull-Clark分割はMayaなど既存のツールで長く利用されてきたためだろう。特許の関係で使いづらいところもあったが,一気に利用が増えそうな予感だ。
ただ,岩崎氏はテッセレータのパフォーマンスの問題を指摘。「もっと速くならなければ(積極的には)使いづらい」と語り,Luminous Studioではデザイナーがハイメッシュを作成しているところが多いという。
要は使いどころで「例えば髪の毛は面白い。ごく少数のコントロールポイントをもとにカーブを作ってテッセレーションで思いっきり(ポリゴンを)増やすんです。(同じように)クロース(布)には(テッセレーションが)いいと思う」(岩崎氏)。
この意見には,DirectX 11世代のGPUを積極的に推すNVIDIAの竹重氏も同意し,さらに「静的なオブジェクトにテッセレーションを使うのは理にかなってない」と指摘していた。
「静的なオブジェクトは,デザイナーがハイメッシュにしたほうが有効だし,現実的だと思う。現在のGPUはプリミティブの処理速度が上がっているので,大量の頂点を処理でき,先に相当にポリゴンを分割していてもテッセレーションより速い」とのこと。
というわけで,次世代ゲーム機にはテッセレータが載るかもしれないが,利点がある用途に限って使われると見るのがよさそうだ。
次世代ゲーム機ではCELL(SPU)からGPGPUへ
さて,最後の議題はGPGPUである。PlayStation 3ではCell Broadband Engine(以下,Cell) のSPUをインゲームのロジックなどを含めて計算資源として活用してきたが,次世代Cellが登場する可能性はほとんどなくなってきた。となれば,次世代ゲーム機でSPUに代わる計算資源として使われるのはGPUが最有力ということになる。
とはいえ,GPGPUにもいろいろ問題はある。西川氏はかねてから,ゲームでGPGPUが使われるかという点に対しては懐疑的で,例えばグラフィックスのレンダリングとGPGPUを並列で走らせられない(コンテキストスイッチをサポートしない)といった問題を指摘していたりするが,そのあたりはスライドを参照してほしい。
ただ,SPUがないのならGPGPUしかないだろうと語るのが高部氏だ。「GPGPUをゲームロジックに絡めていくのは,ソニーのSPUをゲームロジックで使うより高度になる。GPUは自由がきかないので(取り組む)閾値は高い。しかし,どんどん着手していかないといけない。チャレンジすべきだろうと思っている」(高部氏)という立場を表明。
一方,石田氏はメモリ空間の問題を指摘した。「GPGPUの問題は,CPUとGPUが異なるメモリ空間にあり,GPUの計算結果がCPU側で使えない点だ。そこが解決すれば使われるようになるだろう」とのこと。補足しておくと,CPU側で使えないわけではなく,メモリ空間が別なのでデータを転送する必要があって使いづらいということになる。
AMDが次世代APUのHSA(Heterogeneous System Architecture)で計画しているように,次世代ゲーム機でGPUとCPUのメモリ空間が単一になれば,この問題は解決するだろう。また,GPUのプログラミング環境は改善するという期待もあり「AMDのHSAではCPU側も似たような感じで組めるようになるので期待している」(岩崎氏)という意見もあった。
HSAは,AMDが提唱するGPUとCPUの新しいプログラミングモデルで,GPUとCPUが同一のメモリ空間を共有するようにして,CPUとGPUをほぼ同じコードでプログラミングできるようにしようというものだ。
このHSAのような動きをNVIDIAがどう見ているかは筆者も以前から気になっている部分だったが,竹重氏はゲームプログラマがGPGPUに対して“取り組みづらい”と考えていることに理解を示していたのが興味深かった。
「NVIDIAのCUDAは,GPUを最大限に活かせるAPIになっているが,それがゲームプログラマに受け入れがたいというのは,よく分かる。GPUのレイテンシやメモリ空間がゲームで利用する際に既存の大きな問題として立ちはだかっていることは,GPUメーカーとしてよく理解している。ただ,レイテンシはWindowsの問題だ。次世代家庭用ゲーム機は(Windowsとは違い)ドライバが薄いので問題はないだろうと思う」と竹重氏は語っていた。
ならば,NVIDIAがHSAのようなソリューションを将来的に持つ可能性はあるのか,といったあたりは,さすがにこのパネルディスカッションで語れるような内容ではないだろう。ただ,NVIDIAもTegraシリーズではGPUとCPUが同じメモリ空間を共有しており,将来的にはHSAのようなソリューションか,あるいはHSAを取り入れるといったような意外な展開もあり得るのかなとは思う。次世代ゲーム機ではCPUとGPUのメモリがどうなるのか,といったことも含めて,このGPGPUの問題は一つの注目点にはなるだろう。
- この記事のURL:
キーワード