fc2ブログ

22世紀少年


    [GDC 2014]PowerVRがついにリアルタイムレイトレーシングエンジンを統合。ゲームグラフィックスはハイブリッド時代へ


    Imaginationのブースで,実動デモを食い入るように見る来場者達
    PowerVR
     2014年3月19日の記事でお伝えしたとおり,組み込み機器向けグラフィックスIPの大手であるImagination Technologies(以下,Imagination)は,北米時間3月17~21日に開催されたGDC 2014で,新しいGPUコアIP「PowerVR Wizard」を発表した。製品型番は「PowerVR GR6500」だ。
     展示会場となる「Expo」ではプロトタイプとなるテストシリコンによる実動デモが行われ,来場者の注目を集めていた。

     PowerVR Wizardの目玉は,レイトレーシングユニット(Ray Tracing Unit,以下 RTU)の搭載である。
     Imaginationは,2010年12月に,レイトレーシング用プロセッサを開発するベンチャー企業,Caustic Graphicsを買収済み(関連記事)。この旧Caustic Graphicsが開発したRTUを,基礎設計から見直して最適化し,PowerVRへの統合を果たしたものが,今回のPowerVR Wizardとなる。

     もっとも,製品としてのPowerVR Wizardは,開発コードネーム「Rogue」と呼ばれていたPowerVR Series6シリーズに属する上位モデル「PowerVR Series6XT」にRTUを統合したものである。Imaginationの担当者も「“PowerVR WizardのRTU抜き”はPowerVR Series6の新製品そのもの」と述べていたが,実際,下に示したブロック図でも,PowerVR Wizardならではの部分は紺色のところだけで,基本的なグラフィックスIPコア部分はPowerVR Series6XTと変わっていない。
     ImaginationはIP企業なので,PowerVR WizardのデザインをSoC(System-on-a-Chip)メーカーなどといった顧客に販売するカスタマーに販売するわけだが,要は,「今回の発表によって,PowerVR Series6XTに,RTU付きのラインナップが加わった」というわけだ。

    PowerVR Wizardのブロック図
    PowerVR


    RTUとは何か?


     PowerVR WizardのRTUとは一体どのようなものなのだろう。「RTUなのだから,当然,レイトレーシングをするユニット」なのは漠然と分かるが,それで何ができるのか気になる読者も多いと思う。

     結論から先に述べると,RTUは,DirectX 11で採用されているテッセレータのような,特定用途専用の固定機能エンジンである。しかも,RTUという命名からするとやや語義矛盾的なのだが,RTU自体はレイトレーシングにおける実際の描画処理を行わない。レイ(ray,光線)を投げる処理のみを行う。
     「レイを投げる」ことを「レイをキャストする」などと言うこともあるが,いずれにせよ,分かりやすい言葉で言い換えると,「指示された方向に何があるのかを探査する」という意味になる。つまりRTUというのは,「指示された開始地点から指示された方向に向かって探査する」処理を行うものなのだ。

     どこを調査するのかというと,それはもちろん,3Dグラフィックスで描画されたCG世界の中となる。
     冒頭で紹介したように,PowerVR Wizardの中身は「PowerVR Series6XT+RTU」なわけだが,ごくごく普通のGPUといえるPowerVR Series6XTでCGをレンダリングすると,頂点シェーダなどが働いて,PowerVR Series6XTの中でジオメトリがセットアップされる。平たく言うと,仮想世界が組み上がる。
     通常のレンダリングパイプラインでは,このセットアップされたジオメトリを,視点から見た視界(=2次元平面)で切り取って,さらにピクセルへ分解する。これがラスタライズ処理というヤツだ。続けて,この各ピクセルでピクセルシェーダを起動させ,テクスチャを貼ったり,ライティングを行ったりする。

     それに対してPowerVR Wizardでは,ラスタライズ処理によってピクセルに分解された,各ピクセル位置に対応するジオメトリ世界,いわば「頂点シェーダによってセットアップされた仮想世界」の一点から,RTUによってレイを投げるようになっている。

    統合開発環境「Unity 5」には,Imaginationの開発したレイトレーシングエンジンが組み込まれた。これはCPUベースでの実行となる
    PowerVR
     レイトレーシングでは,視点の位置からスクリーン上の各ピクセルに向かってレイを飛ばすことで描画を行っていく。レイが空間内で最初にぶつかったオブジェクトが,すなわち視点から見えているオブジェクトというわけだ。オブジェクトと衝突したあとは,表面で反射させたレイが光源に到達するまで繰り返し,明るさを計算するのが基本である。
     基本どおりにやるのもよいのだが,このあたりはプログラマーのアイデア次第でいろいろ応用ができる。たとえば,オブジェクトの表面から光源(※太陽など)に向かってレイを投げるとしよう。投げられたレイが第三者にぶつからず,光源にまで辿り着いた場合,レイを投げる起点に光が当たっていることになる。通常のレンダリングでいえば「ライティングされるべき場所」というわけだ。ここでピクセルシェーダを起用してライティングやシェーディングをすれば,そのピクセルの色が決定される。

     では,投げる起点から光源までの間にレイが第三者に当たってしまったらどうかというと,そう,そこは影になるのだ。ここでピクセルシェーダを起用して“影色”を付ければ,そのピクセルは影色で描かれる。
     ここまで読んでもらうと分かってもらえたと思うが,PowerVR WizardのRTUとは,プログラマーの知りたい情報を得るためにジオメトリ世界の中でレイを投げて,何かに衝突するかどうかを検出する装置(ユニット)なのだ。

    RTUがあれば,シャドウマップなしに,広大なシーンに対して1ピクセル単位の影生成を行える
    PowerVR


    RTUが生み出す「ハイブリッドレンダリング」とは何か


     「そんな面倒臭いことをして何の意味が?」と思うことなかれ。先ほどの例で挙げた「影か否かの判定」は非常にすごいことなのだ。

     現在の一般的な3Dグラフィックスのライティングシステムに,影か否かを判定する仕組みはない。なので,デプスバッファ(=デプステクスチャ)にシーンの深度をレンダリングしてシャドウマップを生成し,このシャドウマップ情報を基にピクセルシェーダで当該ピクセルが影か否かを判断する「デプスシャドウ技法」が考案されて実用化されている。
     ただ,デプスシャドウ技法において,影の精細度はデプステクスチャ(=シャドウマップ)の解像度に依存してしまう。たとえば4km×4kmの世界を4096×4096テクセルのシャドウマップで影を生成するとしたら,1×1テクセルに格納できる影の情報は約1m×1mという広い範囲になる。影の解像度としてはとてつもなく粗い解像度になってしまうのだ。

     GPUと組み合わされるグラフィックスメモリ容量が有限である以上,確保できるシャドウマップの解像度には限界がある。そのため,現在のゲームグラフィックスでは,近場しか影を表示しなかったり,遠くの影は適当に手を抜いたりするのが常態化している。
     一方,レイトレーシングであれば,影の解像度は確実に1ピクセル単位で生成できる。レイをピクセル単位で飛ばすのだから,ピクセル単位の影を生成できるのは自明なことである。

     これまでの3Dグラフィックスレンダリングは有効に活用しつつ,特定の表現手段や局所的な表現手段にレイトレーシングを用いる。このテクニックをImaginationは「Hybrid Rendering」(ハイブリッドレンダリング)法と命名し,今回,強く訴求している。


    広がるハイブリッドレンダリングの世界


     ここまで影の話を進めてきたが,RTUでできるのは影の処理だけではない。
     Imaginationのブースでは,実際に部分的なレイトレーシングを使ったハイブリッドレンダリングの事例をデモンストレーションしていた。そのうちのいくつかを紹介しよう。

     1つは,映り込み(Reflection)の表現だ。
     現在の3Dゲームグラフィックスにおいて,映り込み表現は実のところ,とても難しいテーマの1つとなっている。

    PowerVR
    局所的な映り込み表現は,通常のレンダリング手法では難しいテーマ。RTUはこうした表現には強い
    PowerVR
    ガラスに投射される情景と,ガラス越しに見える車内の情景。両方を正確に表現するにあたって,RTUによるハイブリッドレンダリングは有効だ
     映り込み表現においては,「周囲の情景をテクスチャにレンダリングし,これを無限遠に存在するものとして扱い,3Dモデル上にテクスチャマッピングする」という環境マッピング技法がオーソドックスだ。しかし環境マッピングの概念だと,「2台の車が並んだときに,相手の車が自分の車に映り込む」といった表現の実現は難しい。CrytekがCryENGINEで採用しているような,画面座標系のポストプロセス処理を使う手立てはあるものの,画面外に存在するものまで映り込ませることはできないという制限もある。

     そこで,RTUの出番だ。プレイヤー視線の反射ベクトル方向に当該ピクセルからレイを投げて,第三者のオブジェクトに衝突したときは,当該オブジェクトの衝突箇所でピクセルシェーダを起動してライティングなりシェーディングなりを行って結果を持ち帰ることにすれば,正確な映り込みを実現できる。
     ブースでは「画面に見えていない,視点側の後ろを走るクルマの映り込み」が実現するさまを確認できた。

    RTUを使った映り込み表現の実演

    Clik to Play
    Clik to Play

     ブースでは,ガラス瓶や水面などを通すことで歪んで見える情景のデモも実演された。これはガラス瓶の表面上のピクセルから視線が屈折する方向へレイを投げることによって実現されている。

    レストラン内の光が,「半透明の瓶が持つ色」の影を屋外に映しだしている。これはレイトレーシングを使わない限り実現できない表現だ
    PowerVR

     なお,RTUは再帰的に,あるいは反復的にレイを投げられるので,たとえば,「投げたレイが第三者に衝突したら,そこからまた別のレイを投げる」なんてことも可能だ。「合わせ鏡」のような,無限にレイを投げ合うような情景の再現は難しいとしても,間接照明や大域照明といった表現などを行うことはできるだろう。
     また,1点から複数のレイを投げることもできる。これは,物理的に正しいソフトシャドウ表現(半影表現)を近似するのに有効だ。


    RTUの性能を考察しつつ,まとめ


     さて,現時点でPowerVR WizardのRTUは,1秒間に3億本のレイを投げられると説明されている。
     ちょっとイメージが湧きにくいので,もう少し具体的に分析してみよう。

     仮に毎秒30コマの映像を作るとすれば,1フレームあたりに投げられるレイの数は1000万本ということになる。なので,1280×720ドットの100万画素の場合,1ピクセルあたりのレイ数は10本だ。これを60fps化すれば5本となり,さらに1920×1080ドットの200万画素化すれば2.5本となっていく。
     もちろんこれは理論値でしかなく,実際に衝突を取ってくるまでの時間はシーンに依存するので,実際のところ,実効性能はよく分からない。ただ,できることの規模感は,こうやって計算してみると,なんとなく見えてくるのではないだろうか。

    PowerVR
     まとめると,RTUは「レイをジオメトリ空間に投げて衝突をとる固定ユニット」なので,実際の衝突を取ったあとのライティングやシェーディングといった計算は,従来のGPUでいうところのプログラマブルシェーダユニットをそのまま利用できる。ここがポイントだ。

     つまり,PowerVR Wizardは,従来のGPUに最低限の固定ユニットを組み合わせて,プログラマブルシェーダユニットを必要に応じて起用しつつレイトレーシンクを行えるGPUなのだ。この発想は,別に「PowerVRだからできた」というわけでもなく,NVIDIAやAMDなどといった他社のGPUにも応用できるので,技術としてその有効性が確立されてくれば,ほかのGPUベンダーが採用に乗り出してくる可能性はある。

     ちなみにブースの担当者は「RTUの応用は,グラフィックスレンダリング用途に留まらない可能性も秘めている」とも語っていた。
     たとえば,ジオメトリ空間内で第三者との衝突を取れる以上,それこそ物理シミュレーションなどにおける衝突判定にも応用できるという。あるいは,障害物を回避して移動するためのAIや,もっとシンプルに,スニーキングゲームなどで必要となる可視判定処理にも使える可能性がある。

     期待を込めて述べるならば,RTUには,今後のGPUが向かうべき拡張の方向性を指し示しているほどの可能性を感じる。今後,どういった影響が業界へもたらされるかにも注目していきたい。


    ●マメ情報

     Imaginationは,ハイブリッドレンダリングをソフトウェア実装したデモを「OpenRL Hybrid Example」として公開している。実行にはImagination製のレイトレーシングライブラリ「OpenRL」のRuntimeが必要だ。興味のある人は下記リンク先から入手のうえ,実行してみてほしい。

    PowerVR Wizard製品情報ページ(OpenRL Hybrid Example公開中)
    OpenRL SDK&Runtime配布ページ

    OpenRL Hybrid Example。筆者のノートPCでも実行できた
    PowerVR


    関連記事

    tag : GDCGameDevelopersConference

    コメントの投稿

    非公開コメント

    今 Amazon で最も売れてるゲーム


    プロフィール
    22世紀少年
    22世紀少年
    人気ブログランキング

     
    カテゴリ
    最新記事
    最新コメント
    月別アーカイブ
    ユーザータグ

    PCゲーム どうぶつの森 あつ森 あつまれ PS3 PS4 3DS ポケモン FF ペルソナ E3 周辺機器 Nintendo Conference GDC Game EA Developers PSP ペルソナ4 Switch 荒木飛呂彦 Titanfall バイオハザード ジョジョ 聖剣伝説 キングダムハーツ Steam PS5 洋ゲー ポケットモンスター ドラクエ すばらしきこのせかい Pokémon NINTENDO キャサリン GTA 未来への遺産 Earth Beyond UNITE Civilization 任天堂 コミコン ポケモンドール メロエッタ ブラック2 エレクトロニック・アーツ Sim LEGO Vita ジョジョの奇妙な冒険 ホワイト2 ポケモンGO インディーズゲーム エルダー・スクロールズ・オンライン ストラテジー 2021 Civilization: of Wizardry Sid Online GPU ゆめポイント ドリームワールド カプコン ひんやり穴 レゴ グローバルリンク ポータル CUUSOO エンターテインメントバー ニンテンドーダイレクト おもいでリンク ノーティドッグ ブラックキュレム プレイステーション3 ポケモンだいすきクラブ ARサーチャー ホワイトキュレム YouTube ゆめしま フェスミッション チャンピオンズトーナメント ポケモンワールドトーナメント 隠れ特性 Deadpool ヴァニラ・アイス ポルナレフ DIO 承太郎 ロードローラーだッ! ピカチュウ ポケモンチャレンジ カウントダウン エニックス スクウェア スクウェア・エニックス ゲノセクト 海外ゲーム アセンブルロボット Xbox360 ユークス MARVEL デッドプール メルヘンワールド プリキュア Activision アクティビジョン リアルスティール HUNTER×HUNTER ポートロイヤル ワンダーアドベンチャー オメガモン ベルゼブモン リ:デジタイズ ハンター×ハンター エクスペンダブルス2 PlayStation キッザニア 中島愛 ドルフ・ラングレン デジモンワールド デジモン ナルト Sims3 ズルッグ アーケオス シム ソニー スクウェアエニックス ファイナルファンタジー アーカイブス フィレンツェ FPS Halo ベストウイッシュ コネクション ニンテンドーWi-Fi マックでDS キュレムVS 聖剣士ケルディオ ポケモン全国図鑑Pro ケルディオ 幻のポケモン メロエッタのキラキラリサイタル LL ニンテンドー3DS ATLUS Auto Theft Grand アトラス マヨナカアリーナ International Comic‐Con LOUNGE GAMING ポケモン立体図鑑BW レトロゲーム Play Google Frostpunk シヴィライゼーション KING OF No Paradox FFXIV FIGHTERS エヴァンゲリオン CPU MOD アーカム・ナイト バットマン トロピコ5 ZOIDS WITCHER Mana Legend アイズオブヘヴン ウィッチャー Man’s Sky Microsoft 11 Windows 次世代OS Windows11 Wonder 攻略 Fear Layers ポケモンワンダー ポケモンユナイト DLC Ultimate ARK: 選ばれし運命の炎 ドラゴンクエストXII Survivor Edition Amazon Rocksmith 聖剣伝説3 ウィザードリィ TROPICO WARS DirectX シムシティ City RTS GTC Technology Entertainment Computer Sony SCEA 都市建設 PixelJunk アイカツ Cギアスキン ビギニングカップ 公式Wi-Fi大会 アップデート 空条承太郎 PSVITA ブラウザゲーム PCパーツ ドラえもん America ゲーミングマウス アーケードスティック Razer Meier’s Tropico インディーゲーム Sims STAR キーボード ボードゲーム Meier's トロピコ ドラゴンボール グラフィックカード トロゲーム  ゲームボーイ グラフィックボード ASUSTeK XBOX パックマン GameSpy マザーボード シミュレーション 

     
    アンケート投票
    ゲームに関するアンケートです。良かったら投票してみて下さい。
     
    アクセスランキング
     
    カウンター
    オンラインカウンター
    現在の閲覧者数:
    リンク
    ブロとも申請フォーム

    この人とブロともになる

    RSSリンクの表示
    QRコード
    QR