フルHD (1920×1080) のディスプレイなどに比べて、VR ヘッドセットの解像度はスペック上はそれほど違いがないにも関わらず (例えば片目につき Oculus Go で 1280×1440、HTC Vive Pro で 1440×1600)、どうにもぼやけた感じがする気がしませんか?
ゲームをしていても、動画を見ていても、ずっと VR はそういうものだと思っていたのですが、先日 Motion Smoothing を常時オンにして1フレーム 20 ミリ秒程度を目指せば良い という話から、内部解像度 (Super Sampling) を大幅にあげる余裕ができ画質が劇的に上がったので、皆様の参考になればと記録しておきます。
内部解像度 (Super Sampling) とは?
Steam VR の設定から、内部解像度 (Super Sampling) を変えることによって、より多くのピクセル数で描画させるよう GPU に指示することができます。
ただ、ヘッドセットのディスプレイ解像度は元々決まっているので、最終的に画面に表示されるピクセルの数は変わりません。なので気持ち程度アンチエイリアシングでキレイになるのだろうと最初は思い込んでいたのですが、とんでもありませんでした。。。
普通のディスプレイは平面である程度距離をとって見ていますが、VR ヘッドセットの場合ディスプレイは目の直近にレンズごしに見ることになります。そうするとレンズで画面が歪んでしまうため、GPU はあらかじめそれを逆補正するように歪ませて描画する必要があります。
例えば表示させたい画像がこのような場合
この画像をヘッドセットの画面にそのまま投影してしまうと、レンズの都合で歪んで見えてしまいます。なのでそれを補正するように、このような画像が描画され投影されているのです。
これをみると、レンズ補正をかけた後は、元の画像に比べて中心部が引き延ばされて見えています。つまり、より密に描画しておかないとピクセルが引き延ばされぼやけてしまうことが直感的に分かります。
詳しくは、以下のビデオで技術的な説明がなされていますが、
要約すると、縦横共に1.4倍程度の内部解像度(スーパーサンプリング)で描画すると、レンズ補正をしたときに中心部のピクセルが大体1対1ぐらいになり、鮮明に見えるのでお勧めらしいです。
最適なスーパーサンプリングは?
HTC Vive Pro を設定していて気づいたのですが、スーパーサンプリング 100% 設定指定で、既にディスプレイの解像度に縦横 1.4 倍のピクセルを描画するようになっているみたいです。
- HTC Vive Pro の解像度 片目 1440×1600
- スーパーサンプリング 100% 設定で表示されているピクセル数 2016×2240
Oculus Go + ALVR の場合はスーパーサンプリング 100% で 1280×1440 と表示されていたので、Vive だけの仕様なのかもしれません。少なくても、先ほどのビデオでの技術説明によると、縦横共に 1.4 倍程度の内部解像度で描画することが推奨されているとのことだったので、それを 100% だとみなしているのは理にかなっています。
Skyrim VR でスーパーサンプリングを変更して実験してみた
Vive Pro を使用し、Skyrim VR で以下の場面でスーパーサンプリングを変更してどのように見え方が変わるか実験してみました。ただしスクリーンショット機能で撮った画像なので、実際にヘッドセットで見える映像とは多少異なります。ただ参考にはなると思います。
50% (縦横1.0倍 1440×1600)
Vive Pro の場合、スーパーサンプリング 50% というのは、ディスプレイの解像度と同じ内部解像度 (片目 1440×1600) で描画していることになります。中央部を切り取って見てみると、ピクセルが引き延ばされて、ぼやけた感じになっていることが分ります。
100% (縦横 1.4 倍 2016×2240)
Vive Pro の場合、スーパーサンプリング 100% で実際のディスプレイ解像度を縦横1.4倍した内部解像度 (片目 2016×2240) で描画していることになります。先ほどの技術説明ビデオでも推奨されていた縦横1.4倍効果で、だいぶぼやけ感は軽減されています。
150% (縦横 1.71 倍 2469×2743)
150% となると、実際のディスプレイ解像度に比べて縦横1.71倍した内部解像度 (片目 2469×2743) で描画していることになります。遠くの石の遺跡の輪郭や、家のテクスチャなど、より鮮明になっているような感じがします。
200% (縦横 2.0 倍 2880×3200)
200% となると、実際のディスプレイ解像度に比べて縦横2倍した内部解像度 (片目 2880×3200) で描画していることになります。これは両目で 5760×3200 (18.4M) ピクセルと、4K (3840×2160 = 8.3M ピクセル) に比べても2倍以上に相当し、かなり GPU の負荷が上がります。ただ10万円クラスの GPU (例えば NVIDIA GTX 1080 Ti や RTX 2080) で Motion Smoothing と組み合わせて 45 FPS を目標にするのであれば十分現実的な設定かなと思います。
ブラウザ上では縮小表示されているので違いが分りづらいかもしれませんが、クリックして拡大表示すれば、より鮮明に描画されているのが分ります。
300% (縦横 2.45 倍 3527×3919)
300% となると、実際のディスプレイ解像度に比べて縦横2.45倍した内部解像度(片目 3527×3919) で描画していることになります。これは両目で 7054×3919 ピクセル (27.6M ピクセル) と、4K (3840×2160 = 8.3M ピクセル) の3倍以上というありえないレベルに突入しています。その割に画質は 200% に比べてもあまり違いは見分けられませんでした。なのでここまで上げるのはあまりメリットがないように思われます。
結論
スーパーサンプリングの数字を大胆に上げることによって、VR ヘッドセットで以前感じていたぼやけ感がなくなり、かなり鮮明な映像が見れることが分りました。これは3Dゲームだけではなく、例えば VR 動画系のコンテンツでも同様の結果が得られました。
GPU負荷に対して効果を最大化したいのであれば、実際のディスプレイ解像度に対して縦横1.4倍程度のピクセルで描画するのが有効です。画質を最大化したいのであれば、縦横2.0倍程度までピクセル数を上げるとより鮮明になります。(ただ費用対効果は落ちていきます)
とはいえ、スーパーサンプリング設定を大幅に上げると、どうしても GPU の負荷が上がってしまい、90 FPS を維持するのが難しくなってしまうことと思います。それであれば、先日 Steam VR の Motion Smoothing とは?最適な設定方法は? でも書きましたが、Motion Smoothing を常時オンにするのと組み合わせて、あえて 45 FPS を目指す(1フレーム描画 20 ミリ程度を目指す)のが有効だと思います。
グラフィックスの質を重視する人は、是非一度試してみてください。