※この記事はASCII.jpからの転載です(文中リンクはASCII.jpの記事に飛ぶことがあります)
GPUの余力に注目
通常のPCゲームではフレームレートを計測し、高ければ高性能という分かりやすい指標がある。だがVIVEのようなVRヘッドセットではそのやり方は好ましくない。ヘッドセットの映像は垂直同期(V-Sync)が常に有効になっている状態であるため、GPUが出力しているフレームレートと実際に表示されるフレームレートが食い違うことがあるためだ。
そこで本稿では1フレームの描画にどの程度時間がかかったか、いわゆる「フレームタイム」の大小を見ることにする。リフレッシュレート120Hzを使い切る表示、つまり120fpsを出すには1フレーム当たり8.3ms(ミリ秒)未満であることを見ればよい(計算式は1000ms/120=8.33333….ms)。初代VIVEやVIVE Proの液晶は90Hzだったので11ms以内であれば合格だったが、120Hzだと8.3msに縮まる。つまりより高速に描画ができるGPUが必要になるのだ。
少々8.3msを超えてもVIVE Pro 2上では特に映像が破綻することはないが、画面のアップデートが微妙に遅れる。具体的には120Hzの半分、60fps相当の更新になる。90Hzの旧VIVEの場合は11msを超えたらまず45fps相当の表示になるので、120Hzの液晶を使う意義は十分にある。ここからさらに16.7ms(=60fps)を超えるフレームタイムになるとさらに40fps→30fps→という風に120Hzの整数分の1のフレームレートに“丸められる”(普通の液晶でもV-Syncを有効にすると同様の挙動になる)。
これ以降の検証では延々と次のようなフレームタイムグラフが出現する。上は120Hzを出せない例、下が出せる例だ。8.3msのあたりに薄い線が引いてあるが、これより下に紫+薄紫+緑の領域(下端からこの長さがフレームタイム)があれば、そのフレームは120Hz表示に“間に合った”という意味になる。ゆえに8.3msのラインに近ければ“処理に余裕がない”、遠ければ“処理に余裕がある”ことを示している。
RX 6700 XTでなんとか到達できた「Cooking Simulator VR」
まずは軽めのVRタイトル「Cooking Simulator VR」で試してみよう。画質は“High”設定とし、サンドボックスモードにおいて食器&調味料棚のある方を向いた時のフレームタイムを比較してみる。
まずVIVE Pro 2のネイティブ解像度である2448×2448ドット(相当)で表示させた場合、RX 6700 XT以上であればGPUのフレームタイムが8.3ms以内で処理できる(120Hzを使い切れている)ことがわかった。
ただRX 6700 XTではおおよそ7〜7.5msのあたりで変動しているため、少しオブジェクトが増えると簡単に8.3msの壁を突破してしまうであろうことは容易に想像できる。忙しく素材を切ったり調理したりすることを考えると、RX 6800より上のGPUが“High”設定でのベースラインとなるだろう。
唯一8.3msを大きく超えたRX 6600 XTでも実際問題なくプレイできる。ただ画面の更新は60fps相当になるため、微妙に滑らかさに欠けるという“印象”だ。
では縦方向の解像度をVIVE Proと同じ1600ドット(相当)にした時のフレームタイムもチェックしてみよう。
解像度を下げると負荷が下がるためフレームタイムも短くなるはずだが、実際に計測してみると下がっても0.5ms程度で、基本的にVIVE Pro 2のネイティブ解像度相当でのフレームタイムと大差ない。これはゲーム内処理のボトルネックといえる。
そしてここで参加したRX 6600のフレームタイムは、RX 6600 XTよりも安定しており、10.5msあたりで頭打ちになっている(繰り返すが、RX 6600環境のみ90Hz設定)。つまりRX 6600ならば90fpsを安定して出せるということだが、90fpsならば視野角が少し広がった以外にVIVE Pro 2を使うメリットはない。RX 6600 XTの方がフレームタイムが暴れているのは、なんとか120Hzを出そうとしているが、RX 6600 XTの性能の限界から間に合わず、結果的に乱高下したと考えられる。