ニュース
[SIGGRAPH 2014]組み込み機器向けGPUがGPGPU用途にも広がりを見せる。SIGGRAPH 一般展示セクションレポート
同じSIGGRAPHで開かれる展示会の「Emerging Technologies」は,論文を提出して運営側の審査を通らなければ出展できないのに対して,一般展示セクションは費用さえ払えば,基本的にどんなグループでもブースを出展できるという違いがある。
そしてこの一般展示セクションには,IntelやNVIDIA,AMDといったゲーマーにもお馴染みのプロセッサメーカーはもちろんのこと,QualcommやImagination Technologiesといった,組み込み向けプロセッサやGPUのメーカーも,ブースを出展するようになっている。半導体企業の領域が,グラフィックスやインタラクティブ技術の最先端に関わっている現状を示しているといえよう。
そこで本稿では,一般展示セクションの中から,組み込み用途向けのSoC(System-on-a-Chip)やGPUを手がける企業ブースの展示を中心に,展示の見どころをレポートしたい。
GPGPU技術を活用するライトフィールドカメラにQualcommのSoCが採用に
まずはQualcommブースから見ていく。今年のイチオシは何かといえば,Lytro製ライトフィールドカメラ「LYTRO ILLUM」である。なぜQualcommのイチオシがカメラなのかといえば,LYTRO ILLUMは同社製のSoC「Snapdragon 800」を採用しているからだそうだ。
Snapdragonの統合GPUをアピールしていたQualcommブース(左)。イチオシはSnapdragon 800を搭載するライトフィールドカメラ「LYTRO ILLUM」だった(右) |
第1世代の製品「Lytro Light Field Camera」を2012年に約3万円で発売。Qualcommブースで披露されたLYTRO ILLUMは,製品出荷が始まったばかりの第2世代製品である。直販価格は1599ドルと,デジタルカメラとしてはお高い製品だ。
普通のデジタルカメラは,レンズで捉えた情景に焦点(ピント)や露出を合わせて,CMOSセンサーなどの撮像素子で撮影するものだ。シャッターを切る前ならば,遠景にも近景にもピントを合わせられるのだが,シャッターを切った途端,情景が持つ光のごく一部だけが選択されて撮像素子に取り込まれているのである。
一方,ライトフィールドカメラは,視野の範囲にあるすべての光を可能な限りカメラに取り込んで記録するという機械だ。遠景から近景まで,ありとあらゆる焦点距離の情景を一度に記録する。そのため,PCの画面上で写真を見るときに,任意の被写体にフォーカスを当てることができ,若干の視差調整も可能だ。金網越しに撮影した写真から金網だけを,フォトレタッチではなく光学的なポストプロセスで消し去ることもできてしまうのである。
文章で読んでもイメージしにくいかと思うので,Lytroが公開している写真ビューワーのデモと技術解説動画を下に掲載しておこう。任意の部分をクリックするとそこにピントが合うという面白い体験ができるはずだ。
LYTRO ILLUMの撮像素子には,無数の微細なレンズが整列したマイクロレンズアレイ(MLA)が取り付けられている。そして,大きなレンズを通過して飛び込んできた無数の光線は,MLAによって分散されて撮像素子の各画素に記録されるという仕組みだ。
初代機は,約1100万本の光線を記録していたのに対して,スペックが強化された第2世代機であるLYTRO ILLUMは,4000万本の光線を記録可能になったという。撮影データを2次元の写真として出力したときの解像度は,2450×1634ピクセルで,初代機(1080×1080ピクセル)に比べて3.4倍も向上している。
感覚的には,2000年代前半のデジタル一眼レフカメラ程度の解像度が得られるようになったと,説明員は話していた。ちなみに,撮影データの容量は1枚あたり約50MB近くにもなるという。
一見すると,ミラーレスタイプのデジタル一眼レフカメラのように見えるが,レンズは固定式で光学8倍ズーム(※35mm換算で30〜250mm相当)に対応する |
LYTRO ILLUMで撮影した写真を現像するカメラ付属のアプリケーション。写真の保存はSDカードのほか,カメラ内蔵の無線LAN機能を使ってPCに転送することも可能だ |
さて,このLYTRO ILLUMでは,Snapdragon 800に統合されたGPUコアの「Adreno 330」をGPGPU演算用途に用いて,ライトフィールドの処理をしている。AdrenoシリーズのGPGPU向け活用をアピールするQualcommにとっては,格好の宣伝素材ということなのだろう。
当然ながら,こうした処理にはかなりの演算能力が必要となるため,今のところLYTRO ILLUMで撮った撮影データは,PCで見るのが基本的な使い方となっている。しかし,LYTRO ILLUM本体の液晶パネルでも,ピントや被写界深度を調節したプレビュー表示は可能だ。この処理負荷の高い演算処理をLYTRO ILLUMでは,Adreno 330によるGPGPUで処理しているというわけだ。
余談だが,後日に「OpenGL」や「OpenCL」などを策定する団体であるKhronos Group(クロノスグループ)関係者とLYTRO ILLUMについて話をしていたところ,「同機はOSにAndroidを使用しており,GPGPUの処理にはOpenCLを活用しているそうだ」という裏話が聞けた。
NVIDIAは演算能力を強化した「Tegra K1」で,組み込み用途にもNVIDIA独自の「CUDA」をGPGPUソリューションとして展開しようと積極的だ。Qualcommとしても,自社のGPUとオープンAPIを使ったGPGPU採用製品が実際に製品化されていることを,SIGGRAPHの場を通じてアピールしたい。そうした狙いがLYTRO ILLUMの展示に表れていたのではないだろうか。
64bit Android上で64bitゲームを披露していたARMブース
Junoとは,ARMの64bit CPUコアで,2基のCPUコアを備える「Cortex-A57」と,4基のCPUコアを備える「Cortex-A53」をbig.LITTLEで集積したSoC(Juno SoC)を搭載する開発キットだ。通常時は性能重視のCortex-A57側が稼動して,低負荷時には消費電力の少ないCortex-A53側が稼動する仕組みとなっている。なお,GPUコアには,4基のシェーダコアを搭載する「Mali-T624」を採用しているそうだ。
ARMが公開しているJunoの全体写真(左)とブロックダイアグラム(右) |
ブースで展示されていたJunoでは,試作版の64bit版Androidを動作させたうえで,64bitプログラムで作られたシューティングゲームを試遊できるようになっていた。
デモの様子を動画で掲載しておこう。正直にいえば,64bit版だからここが違うといったデモではないのだが,64bit版アプリケーションの開発も可能になっていますよ,ということを開発者にアピールすることはできたかもしれない。
詳しくはGDC 2014のレポート記事してほしいが,OpenGL ES 3.1は基本的に「OpenGL ES 3.0」のマイナーチェンジ版であり,新機能としてGPU演算用の「Compute Shader」が搭載されたことが特徴だ。ARMブースでは,このCompute Shaderを使った布の挙動シミュレーションを,ARMアーキテクチャ搭載のデモ機材で動作させていた。
また余談だが,こうした物理シミュレーションでは,これまでOpenCLの活用が奨励される傾向にあった。しかし,実装がシンプルで,グラフィックスパイプラインに強く連携するようなシミュレーションであれば,Compute Shaderのほうが実装しやすい面もある。そういった理由で,OpenGL ES 3.1のCompute Shader採用はゲーム開発者からおおむね歓迎されているのだそうだ。
モフモフした猫の毛をOpenGL ES 3.0の機能で描く
Imaginationが新作デモ「Soft Kitty」を披露
公開されたOpenGL ES 3.0ベースの新作デモは「Soft Kitty」というもの。モフモフとした毛並みの猫が,レーザーポインターの光を追いかけるというかわいらしい内容のものだ。
それだけ聞くと,なんてことはないデモかと思われそうだが,説明員によれば背景オブジェクトや猫のライティングとシェーディングには,光の性質をもとにレンダリングを行う「物理ベースレンダリング」を採用しているということだった。PlayStation 4やXbox One世代のレンダリングテクニックとして,採用事例が拡大している物理ベースレンダリングが,ついに組み込み機器向けGPUでも採用されるようになったかと思うと,なんとも感慨深い。
OpenGL ES 3.0ベースのデモ「Soft Kitty」(左)では,その名のとおりモフモフとした毛並みの猫が動き回る。右写真はSoft Kittyやほかのデモを動かしていた端末。どれもImagination製GPUコアを搭載するSoCを使う製品だ |
だが,Soft Kittyデモの見どころは物理ベースレンダリングではない。OpenGL ES 3.0で搭載された「Transform Feedback」(トランスフォームフィードバック)を活用した,毛の生成こそが真の見どころなのだ。
Transform Feedbackとは,頂点ステージの処理結果を頂点バッファオブジェクト(Vertex Buffer Object,VBO)に格納する機能である。DirectX 10世代GPUで,ジオメトリシェーダに用意されている「Stream Output」に相当する機能だ。
Soft Kittyデモでは,猫の毛を生成するために,毛髪生成手法のひとつである「Shell法」を用いている(関連記事)。これは,毛の断面図に相当するテクスチャ(シェル)をポリゴンに貼り付け,これを積層させることで毛皮を生成する手法だ。1本1本の線分を生やすのではなく,断面を積層させるというのがポイントとなる。
単純に毛の断面図テクスチャを積層をさせようとした場合,ベースとなるモデル――Soft Kittyの場合は猫のモデル――を拡大率を少しずつ変えて複数重ね合わせて,そのひとつひとつに毛の断面図テクスチャの適用していくようなアルゴリズムになる。つまり,10枚の断面図テクスチャを積層させるには,拡大率を変えた猫モデルを10体分,重ね合わせなくてはならないのだ。1体の猫を表現するために,10体分の猫を描画しろというのでは,処理負荷が高すぎて現実的な手法とはいえまい。
10回描画することに変わりはないのだが,モデルをアニメーションさせる処理は1回で済む。さらに,GPU内で処理がループするので,CPUがGPUに描画コマンドを10回分送る,というプロセスも不要となり,オーバーヘッドも軽減できる利点もあるそうだ。
この辺りは,動画の後半に出てくる猫のワイヤーフレーム表示を見ると理解しやすいかもしれないので,ぜひ見てほしい。
Exhibition|SIGGRAPH 2014
SIGGRAPH 2014 公式Webサイト
- 関連タイトル:
Snapdragon
- 関連タイトル:
PowerVR
- この記事のURL:
キーワード
(C)2011 Imagination Technologies Ltd. All rights reserved