イベント
[CEDEC 2012]3DSはまだその実力を100%発揮できていない!? 3DSが搭載するGPUコア「PICA200」の詳細
PICA200は「テクスチャのシンセサイザー」だった?
〜プロシージャルテクスチャ機能の詳細
さて,冒頭で,3DSの発売後もPICA200の情報はほとんど明らかになっていなかったと述べたが,実のところ,「どんな機能を持っているか」は,早い段階で公表されていた。たとえば,シェーダの一部が固定機能化され,性能と低消費電力の両立を図っているといったあたりは(関連記事),憶えている読者も少なくないだろう。
PICA200が発表されたのは2006年のこと。もう6年も前の話になるわだけだが,「ハードウェアは開発してから採用されるまでに数年かかる」(大渕氏)という事情もあり,いまでも現役のグラフィックスIPコアである。4Gamer的にはもちろん3DS用のグラフィックスIPコア(≒GPU)という理解で正解だが,オリンパスのコンパクトデジタルカメラ「Tough TG-1」に下位モデルの「PICA200 Lite」が採用されていたり,また最近ではぱちんこ台のグラフィックス表示機能用としても採用が広がっていたりするという。
そんなPICA200に関して今回語られたのは次の4点になる。
- 頂点&ジオメトリシェーダにおけるメモリトラフィックや演算の最適化
- 再設定が可能なフラグメント(=ピクセル)シェーダの概要
- プロシージャルテクスチャの詳細
- これらの技術を組み込み向けにどう省電力化したか
これらのなかでも最も興味深かったのが3.のプロシージャルテクスチャなので,まずはそこから紹介してみよう。
ビットマップに比べた利点は明らかで,たとえばテクスチャデータのメモリ消費を抑えると同時に,組み込み用途では消費電力の観点から無視できないメモリアクセスを減らせるのだ。また,演算でテクスチャを生成するため解像度の制限がなく,無限のLoD(Level of Detail)に対応できるといった利点もすぐに思いつく。
PICA200ではプロシージャルテクスチャ機能を固定機能として持っている。シェーダプログラムで同じ機能を実装しようとすると演算の負荷が無視できなくなるが,PICA200ではグラフィックスパイプラインへの特別な負荷なしにテクスチャを生成可能だ。また,テクスチャ生成にあたってのメモリアクセスが必要ないため,原理的にグラフィックスパイプラインのストールが起こらなかったり,パラメータを変えるだけでテクスチャアニメーションを実現できたりといった利点もあると,大渕氏は述べている。
で,その固定機能部だが,まずベクトル成分UとVに対してノイズを乗せ,繰り返し(クランプ)操作を行い,最後にテクスチャの図形を入力してピクセルのカラー(テクセル値)を出力するというパイプラインになっているそうだ。
上のスライドで図示されているパイプラインは処理順になっているが,人間の感覚に沿って,「テクスチャの基本的な模様を決める部分」である基本図形参照テーブルから遡って話をしてみよう。
筆者は先ほどここを「図形を入力する部分」としたが,ここでは「まず『G関数』で基本図形を出力し,その図形に『F関数』で変調をかけ,最後にカラー参照テーブルから色を取り出す」というステップになっている。
基本図形参照テーブルの詳細。3ステップからなっている |
こちらは3ステップのさらなる詳細だ。G関数が基本図形を出力する関数で,F関数は図形に変調をかける関数,そして色を決めるのがカラー参照テーブルである |
G関数というのは,設定次第で横線や縦線,円,四角といった,さまざまな模様を出力できる関数だ。たとえばMIKAGEデモの木目を表現したいなら,G関数で縦線や横線を出力してやればいいというわけである。
一方のF関数は,基本図形にカラー参照テーブルから色を乗せるときに,テーブルとの関係を決める関数だ。テーブルから単純に色を拾うだけではなく,F関数を介して乗せることで色に変化を付けられると考えればいい。
以上のステップで図形と色が決まるわけだが,これだけだと単純な図形しか表現できない。この図形にノイズを加えて変形させ,さらにクランプ処理で反復させることによって,たとえば冒頭に出てきた木目のような絵柄を作れるというのが,プロシージャルテクスチャ機能の総合的な仕組みになる。
図形にノイズを乗せる。ある周波数で図形に変調をかけてやるようなイメージの処理だ。周波数や位相を変えることで,スライドの右端に示されているような,不規則に見える模様へ変形させる |
こちらは反復の例。図形を対称に貼ったり,反転させながら反復させつつ貼ったりする設定が可能だそうだ |
G関数で出力できる図形と,F関数やカラー参照テーブルで決まる色の変化,そしてノイズによる変形や繰り返しを使うことで,さまざまなバリエーションのテクスチャを計算だけで出力できる。これがプロシージャルテクスチャのポイントだ。さながら,基本波形にノイズなどを乗せ,変調をかけることで多彩な音を作り出すアナログシンセサイザーのテクスチャ版といったところだろうか。
非常に興味深く,かつ面白い機能なのだが,ほかにあまり例がないので,PICA200独自機能と紹介しても差し支えない。それだけに応用は難しそうである。
実際,大渕氏も,セッションの中で「利用するのが非常に難しい」と語っていた。「社内でも使いこなせる人は4人しかいない(笑)」そうなので,現状,実際のゲーム内で使われている例を探すのは難しいだろう。その意味で3DSは,まだそのグラフィックス性能を100%引き出せてはいないといえそうである。
電力消費を抑えつつ
多彩な機能を実装したPICA200
残る3つの特徴も簡単に紹介しておこう。まずは1.の,頂点シェーダやジオメトリシェーダにおけるメモリトラフィックや演算の最適化からだが,PICA200は,ジオメトリを処理する固定機能「プリミティブエンジン」を使って,ポリゴンのサブディビジョン(subdivision,再分割)――Direct3D 11でいうところのテッセレーション――を実現できることが知られている。
ジオメトリ処理の実装においては,頂点シェーダで演算済みの頂点情報を一時的にキャッシュする「Secondary Vertex Cache」(以下,SVC)が大きな役割を担っているとのことだ。SVCにキャッシュされた演算済みのデータは再利用できるため,メモリアクセスを低減できる。これは省電力という点でも有利になるだろう。
さらに,「プリミティブエンジンでジオメトリ処理を行うときに可変長のプリミティブが扱える」というのもSVCの利点になると大渕氏は述べていた。それによってCatmull-Clark(カトマル・クラーク)分割やループ分割といった手法によるポリゴンの再分割を実現できているとのことだ。
PICA200のジオメトリエンジン部からはテクスチャにアクセスできないため「ディスプレースメントマッピングはできないという制限はある」が,それ以外は一般的なジオメトリシェーダと同等の処理が可能だと大渕氏は説明していた。
3.として挙がったPICA200のフラグメントシェーダ――一般的なOpenGL用語で言い換えると「ピクセルシェーダ」――は,再設定が可能な固定機能として実装されている点が特徴となっている。
プログラマブルなシェーダが登場して10年以上が経過しているが,「使う機能(≒使うシェーダ)は大体決まってきている」(大渕氏)ため,フルプログラマブルにしなくても,「固定ハードウェアにいくつかの再設定機能を付け加えるだけで,やりたいことはほぼできてしまうのが現実」だそうだ。
固定機能を採用することにより,PICA200におけるフラグメントシェーダのスループットは1〜4サイクルに収まるそうで,同じシェーダをプログラマブルシェーダで実行するのに比べて大幅な高速化と低消費電力化を実現したというのがポイントというわけである
最後に4.として示した省電力化だが,PICA200では,回路自体を削減すると同時に,回路を可能な限りパイプライン化してクロックを低減したとのこと。さらにきめ細かなクロック制御を行っていると大渕氏は述べていた。
最近のCPUやGPUでは,使用しない論理ブロックへのクロック供給を止める「クロックゲート」(クロックゲーティング)などによってクロックを細やかに制御することが当たり前になっているが,この技術は日本のお家芸でもあるそうで,「PICA200には日本の技術が生かされている」(大渕氏)とのことだ。
DMPはグローバルイルミネーションの
固定機能化を検討中か
以上,PICA200の概要を紹介してきたが,大渕氏はセッションの最後に,CEDEC 2012ではグローバルイルミネーション(Global Illumination,以下 GI)が注目されている点に触れ,その固定機能化について見解を述べていたのが,なかなか興味深かった。
GIでは大局的なデータアクセス,つまりは広範囲なデータ参照が発生する。そのため固定機能化しづらいとよく言われるが,大渕氏は,「GPUに実装しやすいGIアルゴリズムほど,固定機能化もしやすい特徴がある」としていた。GPUも大局的なデータアクセスは苦手なので,GPUに実装しやすくできるなら,そのアルゴリズムは固定機能化もしやすくなるというのは,確かに納得できる話だ。
ただ,「現時点で多数のアルゴリズムが提案されている。そのなかで,アルゴリズムを固定してしまってもいいものかどうか,議論はあると思う」(大渕氏)。固定機能としての実装は可能だが,定番のアルゴリズムが絞り込まれるまでDMPは様子を見ているというところだろうか。
妄想を書かせてもらうなら,将来の“Nintendo DS”は,低負荷でリアルタイムなGIを実現するようになっているかもしれない。
ディジタルメディアプロフェッショナル公式Webサイト
CEDEC 2012公式Webサイト
- この記事のURL: