イベント
[GDC 2015]「SteamVR」とは何か? ValveがそのVRレンダリング技術を語る
明らかになったSteamVRの設計思想とその技術
SteamVR用のヘッドマウントディスプレイとしては,すでに台湾HTCから「Vive」が発表済みだが(関連記事),まずはその基本仕様を以下のとおり確認しておこう。
- 画面解像度:2160×1200ドット(片目あたり1080×1200ドット)
- リフレッシュレート:90Hz
- 視野角:110度
Valveでは3年以上前からVRに関する研究を行っており,とくにポジショントラッキングには力を入れていたようだ。実際,スライドではプロトタイプが3種類示されていた。
結果として登場したViveは,トラッキング機能を持った2台のベースステーションとセットになっている。これらベースステーションを部屋の角と反対側の角に1台ずつ設置すれば,部屋の中全体で使えるレベルの広範囲対応を実現できるというのがウリだ。
ディスプレイには高速かつ低残光なものが利用されているとのことで,「1フレーム11msのうち,点灯時間は2ms以下」という点滅式の制御で画像のブレを防止しているとのこと。
レンダリングは縦横1.4倍の解像度(1512×1680ピクセル)で行われ,ディストーション処理で最終的な解像度に変換されたうえでディスプレイ出力されるという。
さて,1512×1680ピクセルの映像データ2枚を90fpsで描画する場合,GPUに要求される出力能力は457Mpixels/sに達する。広視野角設定なので,1.4倍とレンダリングエリアはかなり広めに取っていると思われ,これを実現するのがそう簡単ではないのは想像がつくだろう。
Valveでは,表示されないエリアの情報を積極的に端折る「ステンシルメッシュ」(Stencil Mesh)という手法を使って,必要ピクセル数を378Mpixels/sまで削減しているとしていた。
その点,Valveではコマンドバッファレベルで2回送ることにして,それより前の部分を共通化しているという。コマンドバッファ以降,つまりレンダリング部分はそれぞれ独立して実行されることになる。
このあたりも各社が研究を進めている部分であり,同日に行われたNVIDIAとOculus VRによるセッションでは,頂点シェーダやジオメトリシェーダといった部分まで共通化してしまう実装が紹介されていた。先行する両社は,かなり踏み込んだ実装にまで手を出しているようだ。
ちなみに,まだ実装はされていないようだが,Valveは,「1画面は普通に描画して,もう1画面はインスタンシングの組み合わせで処理する」というアイデアも提示している。これはこれでなかなか面白い。
入力から描画までの遅延をいかにして少なくするかは,VR系では非常に重視される項目だ。通常のパイプラインだと3フレーム(※90fpsで約33ms)かかるところを,Vsync発生後にDirect3Dを起動していたのでは,データ転送にかかる時間がもったいない。そこでSteamVRでは,フライング気味に処理を開始したり,いろいろ前倒しにすることで,入力から2フレームちょっとで描画を行うパイプラインになっているという。
一般的なVR HMDと比べてディスプレイ解像度は若干高いが,それでも「片目あたりの情報量が通常のディスプレイ比で半分となるVR対応HMDでは,アンチエイリアシングが必須」というのが,Valveの考え方だ。8x MSAAと,「見た目の解像度に貢献するため」(Vlachos氏)異方性フィルタリングの利用が推奨されていた。
Vlachos氏はそのほか,「ノーマルマップは,深い凹みなどがVRではうまく機能しなくなる」として,ではどのようなケースなら使えるのかといった,Valveによる研究成果を披露している。
講演からは,ネイティブ90fps動作が前提にされているなど,全体に高品位なゲーム映像生成に注力している印象を受けた。HMDのスペックも妥協が少ないものなのだが,それに飽き足らず性能を追求している。次々と発表されるVR対応HMDのなかでもちょっと面白い存在になるかもしれないと感じさせられた次第である。
ValveのSteamVR特設ページ
GDC公式Webサイト
4GamerのGDC 2015関連記事一覧
- 関連タイトル:
Steam
- この記事のURL:
(C)2019 Valve Corporation.All rights reserved.