【西川善司のモバイルテックアラカルト】第19回: Imagination Technologiesが、ついにレイトレーシング技術をスマホに搭載!?

前回に引き続き今回も、3月にサンフランシスコで行われたゲーム開発者会議(Game Developer Conference:GDC2016)で見かけたさまざまなスマートフォンに関連した先端グラフィックス技術の展示を紹介していきます。前回はARMの話でしたが、今回は、日本でも大人気のスマートフォンであるアップルのiPhoneシリーズに長らくGPUを提供しているImagination Technologiesが発表している技術を総括します。

iPhoneにも採用されているGPU「PowerVR」シリーズとは?

Imagination Technologiesは、イギリスのプロセッサメーカーで、さまざまな技術を有していますが、最も有名な製品IPは「PowerVR」シリーズです。

古くは、セガのゲーム機ドリームキャスト用のGPUに採用されたことで有名になりましたが、近年では、アップルのiPhone用のGPUや、インテルのAtomプロセッサ内蔵GPUとしての採用事例が有名です。

そうそう、PSVITAのGPUもPowerVRでしたね。

セガのゲーム機ドリームキャスト

iPhone向けのスマホゲームが早くから映像表現的に優れていたことからもわかるように、PowerVRは低消費電力で高いグラフィックス性能を発揮することができる特徴を持ちます。

ちなみに、現行iPhone6 Sシリーズに搭載されているものはPowerVR7 XTシリーズの「GT7600」(6コア版)です。

公称性能は650MHz時で250GFLOPSといいますから、すでにPS3のGPU(224GFLOPS)を上回っていることになります。

iPhone 6S、6S PlusともにGT7600を搭載している

さて、Imagination Technologiesは、このPowerVRを順当にパワーアップしてきており、今年2月にはPowerVR8シリーズの存在を明らかにしました。

今年のGDC2016の展示会場では、ここ1、2年以内にスマートフォンに採用されることを目指して訴求を強めているレイトレーシング技術をプッシュしていました。

「スマホでレイトレーシングって本気?」と思われそうですが、Imagination Technologiesはいたってマジメです。

何しろ、今年のImagination TechnologiesのGDC2016ブースの展示の大半がレイトレーシングに関係したものでしたから。

「PowerVRレイトレーシング技術をモバイル(スマホ/タブレット)からゲーム機へ」というメッセージ付きで展示されていたPowerVRのレイトレーシング技術。「ゲーム機」への搭載も再度目指しているようだ

レイトレーシングってなに?

現在の主流GPUが採用している映像を描画する仕組みは、レイトレーシング法ではなく、ラスタライズ法と呼ばれるテクニックです。

ラスタライズ法は、ポリゴンをピクセルに分解して(ラスタライズして)、そのピクセルに対してライティング計算や陰影計算をするという仕組みです。

一方のレイトレーシングは、いくつかの実装手法がありますが、画面上のピクセルから「レイ」(Ray)と呼ばれる仮想的な粒子(光線)を放ち、このレイが他者に衝突したら、そこの照明情報を、レイの発射元に持ち帰って計算結果に反映していきます。

例えば、レイの発射元がツルツルとした材質の場合、レイが他者に衝突すれば、その他者の色情報を持ち帰って反映することで「映り込み」表現が行えます。

逆に、ザラザラとした材質の場合は、他者の遮蔽によってそこは暗くなるので影として描画することになるでしょう。

理論的には、レイを無限大に放って持ち帰り、計算結果に反映すれば極めて正確な映像が作れますが、これでは計算時間も無限大になってしまいます。

そこで実際には、適当な数のレイを放つだけに留めて近似することになります。もちろん、じゅうぶんな数のレイを放たないと、正確な映像にはなりません。

まぁ、いずれにせよ、なかなか高度で負荷の高いCG描画手法だといえます。

ちなみに、映画特殊効果用のCGやピクサー/ディズニーに代表されるCGアニメのCGなどは、レイトレーシングで描画されています。

Imagination Technologiesはこのレイトレーシング技術をスマホ向けのGPUで実現するために、RTU(Ray Tracing Unit)と呼ばれる演算ユニットをPowerVRに搭載していく方針を2011年ごろからほのめかしてきました。

そして今年、2016年には、ついにこのRTU技術を実演できるようになったということです。

このRTUは、現状はPowerVR6のレイトレーシング対応版である「PowerVR Wizard」に搭載されます。

下がそのブロックダイアグラムです。簡単にいうと、RTUとは「レイを飛ばしたり、レイが他者と衝突するのを検出したりする機能」ブロックに相当し、演算自体は従来のグラフィックスレンダリング(即ち、ラスタライズ法による描画エンジン)コアの演算器を流用して行う仕組みになっています。

「PowerVR Wizard」(PowerVR GR6500)のブロックダイアグラム

つまり、PowerVR Wizardは、レイトレーシング専用GPUではなく、従来のラスタライズ法描画もできるし、レイトレーシングも行えるGPUということになります。

しかし、そうはいっても、スマホ向けのゲームグラフィックスの映像フレーム全体がレイトレーシングになることは想像しにくいですよね。

Imagination Technologiesでもそのあたりは認識していて、PowerVR Wizardでは、ラスタライズ法とレイトレーシング法を適材適所で使い分けて描画することができるようになっています。

なので、例えば、メインのキャラクターや背景はラスタライズ法で描き、一方でラスタライズ法では描画が困難な「動的な映り込み表現」「正確な影生成表現」「間接照明の表現」などはレイトレーシングで実践する……といったことができます。

ちなみに、こうした、ラスタライズ法とレイトレーシング法を織り交ぜたグラフィックス描画手法に対してImagination Technologiesは「ハイブリッドレンダリング」と命名しています。

GDC2016のImagination Technologiesブースでは、スマホ向けのPowerVR Wizardを、あえてPCで使えるようにしたプロトタイプグラフィックスカードを用いて、さまざまなデモを公開していました。

パソコン上でPowerVR Wizard用のさまざまな開発実験が行える、開発評価用PowerVR Wizardグラフィックスカード

レイトレーシングによる影生成デモ

こちらのデモは、ボールや銅像オブジェクトはラスタライズ法で描き、影だけをレイトレーシングで描画したものです。

影生成だけをレイトレーシング法で実践しているデモ

ボールが他のボールや銅像に落としている影はシャープな影になっていますが、床や壁に落ちている影は投射距離が長いことからボケた影になっています。

レイトレーシングによる間接光表現のデモ

こちらのデモは、室内の様子や石ころはラスタライズ法で描画し、間接光表現だけをレイトレーシングで実践したものです。

間接光表現をレイトレーシングで実現したデモ

ラスタライズ法では、直接光によるライティングしか行えず、間接光によるライティングは基本的に行うことはできません。

特殊な工夫をすればラスタライズ法で行うことができなくもないのですが、実は「その特殊な工夫」自体がほぼレイトレーシングみたいなアルゴリズムなので、だったら最初からレイトレーシングを使いましょうということですね。

このデモでは「ライトマップをリアルタイム生成する」というアプローチで間接光表現を実現しています。もう少し噛み砕いて解説しましょう。

間接光の照明効果をレイトレーシングを使って計算して、その結果をテクスチャマップとして作り出してしまうのが「ライトマップ」と呼ばれるテクニックです。いわば「照明効果のプリレンダー」ですね。

このライトマップ技術はそれこそプレイステーションの1990年代から実用化されてきました。

ただ、間接光の照明効果をテクスチャマップに焼き込んでしまうということは、光源が動いたり、オブジェクト(キャラクタ)が動いてしまうと辻褄が合わなくなります。

このデモでは、このライトマップ生成を、レイトレーシングを使ってリアルタイム生成しているため、光源が動いたり、オブジェクトが動いたりしても、その動きに連動した間接光表現が得られています。

このデモでは「白い光」を放つ懐中電灯を、壁に掛かった赤緑青の色鮮やかなカーテンに向けて照射し、その間接光が廊下を照らす……というような内容になっています。

廊下に積み上げられた石ころを崩すことができるようになっていて、ちゃんと石ころそれぞれの位置や向きに応じて、間接光の影響範囲も変わっていく様子が見て取れると思います。

ちなみに、計算はけっこう重いため、間接光の伝搬計算は1フレーム(コマ)あたり5%ずつ進めていく実装になっているとのことでした。

つまり、20フレームぶんの時間をかけてやっと最終的な間接照明結果が完成することになります。

いわば、正しい結果が得られるまで20フレームの遅延があるということですね。まぁ、間接光表現は淡いものなので、これでいいということなのでしょう。

レイトレーシングを物理シミュレーションに応用したデモ

レイトレーシングは何も、グラフィックス描画のためだけのものではありません。レイトレーシングは、他者との衝突を取得する用途にも使えます。

ある地点から放ったレイが他者と衝突して、その際に、照明情報などを持ち帰って描画に役立たせるのがレイトレーシングによるグラフィックス描画です。

「他者と衝突しましたよ」という情報を持ち帰って、それを運動の計算に反映させれば物理シミュレーションにも使えるのです。

下のデモは、それをシンプルに実装した簡素なものです。

レイトレーシングを衝突判定に応用した簡素なデモ

無数の緑の箱が飛び回っていますが、一部赤くなるのがありますよね。これは他者(他の緑の箱)と衝突したことを表しています。

レイトレーシング100%のドライブゲーム風デモはリアルタイム相互映り込みが凄い

最後のデモは、ボールが飛び回るフィールドをトラックを走らせることができるゲーム風のデモです。

ちなみに、このデモだけは、すべてのピクセルをレイトレーシングで描画しています。ただし、1ピクセルあたり1レイしか飛ばしていません。そのレイは視線の反射方向に放たれています。

このデモの主旨は、相互映り込み表現をレイトレーシングで実践する……というところにあります。前出のリアルタイムな間接照明と同じように、動的な映り込み表現は、ラスタライズ法では困難です。

事前に周囲の全方位の情景をテクスチャマップとして用意しておき、これをオブジェクトに貼り付ける環境マッピングというテクニックはありますが、これは遠方の背景しか映り込ませられません。

動き回るオブジェクトが相互に映り込み合うような表現は、環境マッピングでは実現できないのです。

レイトレーシングであれば、視線の反射方向にレイを飛ばして、他者に衝突したときにその衝突相手の色を持ってきてその色で描画すれば、簡単に映り込み表現を得ることができます。

このデモは1,280×720ピクセル解像度で約15fps程度のフレームレートになっていました。100%レイトレーシンググラフィックスをスマホ向けGPUで実践していて、この結果はかなり立派ですよね。

おわりに

今のところ、PowerVR Wizardを採用したスマートフォンやタブレットは発表になっていません。

前述したように、Imagination Technologiesは、1~2年以内に採用製品が出てくるかも……と予言しているわけですが、果たしていったどんな製品になるんでしょうか。

やっぱりiPhoneなんですかね。たしかに新iPhoneがレイトレーシング対応となったら、かなりセンセーショナルですけど、果たして……。

(C) SEGA
(C) 2016 Apple Inc. All rights reserved.