VR環境でのパフォーマンスアップとなる「SMP」
GTX1080とGTX900シリーズのアーキテクチャーで決定的に違うのは、GPU内部の「Polymorph Engine」内に新設された「Simultaneous Multi Projection」(以降SMPと略)と呼ばれる機能(回路)だ。
ここで言うマルチプロジェクションとは、3D画像を複数の視点から描画することだ。通常、PCゲームの画面を表示するときは、ゲームアプリ内で構築された3D世界に仮想的なカメラを置き、そこから見た世界を液晶(に見立てた平面)に描くようにして表示させる。この仮想的なカメラを置く位置が、ここで言う視点(ビューポート)だ。
普通の液晶ならビューポートは1つで良いが、VRヘッドマウントディスプレーの場合、左右の眼球用にそれぞれ1つずつ、2つの視点が必要になる。1つの視点から見た描画処理をするたびにポリゴンの頂点情報を計算する必要があるが、(視点は微妙に違うが)同じものを見ているのに頂点計算などを繰り返すのは効率がよろしくない。
その問題を解決するのがGTX1080に搭載されたSMPだ。SMPは2つ以上(最大16個)の視点から見た映像を、1回の処理で一気に描ける。つまり、複雑な物体を描くときも計算は1回で済む。NVIDIAが「GTX1080は“VRにおいて”TITAN Xの2倍の性能」とうたっているのは、SMPによるスループット向上というわけだ。
さらにVRヘッドマウントディスプレーでは、ゴーグルのレンズが生む歪みを計算に入れ、あらかじめ周辺部の歪んだ画像を作成する必要がある。しかし、従来のGPUはある視点から平面に投影した映像を用意してから、レンズの歪みに合わせた映像へ変換しなければならない。
この時、元画像はある程度広くないときちんとした歪みのある映像にならないが、同時に捨てられるデータの分だけ無駄な仕事をしていることになる。Oculusの『Rift』は、片眼で110万画素の映像が必要だが、これを得るには元画像を210万画素でレンダリングしてから歪ませる必要がある。
しかし、GTX1080ではSMPを使うことであらかじめ歪みを考慮した映像を手早く作れる。具体的には片目の視点を4つに分割し、本来の視点中心よりも右上/右下/左上/左下を狙う視点の映像をSMPを使って獲得する。それを連結してから無駄な画素情報を切り飛ばせば、わずか140万画素分の処理で必要な映像が得られることになる。これをNVIDIAは「レンズマッチドシェーディング」と呼んでいる。
さて、このSMPは液晶を複数枚使ったサラウンド環境でもメリットがあるという。前述の通り、ゲームの画面描画とは、ある視点から液晶に見立てた平面に3D世界を投影する作業だ。これは液晶が何枚あっても同じことだ。
だがこのやり方だと正面の液晶は常に正しい見え方で表示されるが、液晶を3枚、3面鏡のように置いた場合は、左右の液晶に投影される映像は本来あるべき姿とは違う。3枚を一枚板になるよう並べれば矛盾はなくなるが、左右が見難いことこの上ない。
そこでSMPを利用すれば、左右の液晶を三面鏡のように設置しても、すべて正しい映像が得られる。こういう応用方法もあるのだ。
だがこのSMPは、すぐメリットを発揮できる機能とは言いがたい。VR用ゲームはSMPを意識してコードを書き直す必要があるが、すぐに浸透するとは考えにくい。すぐ使えそうなのは前述のマルチディスプレー対応だが、今回入手したβドライバーでは設定項目は発見できなかった。GTX1080の真の力が開放されるのは、SMP対応アプリやドライバーが出てからなのだ。