Oculus Quest GeFoceの新Driverの遅延防止機能で ALVRの遅延は少なくなるのか検証してみた
nVidia社のGeForceの新しいDriver、v436.02に遅延防止の機能が追加されたようです。
Oculus QuestをPC用HMD風に使えるようになるアプリALVRの遅延に対して影響を与えるのかどうか検証してみました。
「Low Latency Mode」とは
GeForce 436.02 Driverで追加された、ゲーム遅延を低減するための機能です。
下記のサイトを引用します。
GeForce 436.02 Driverの「3D設定の管理」に追加されたUltra-Low Latency Modeは,ゲームの操作遅延を低減する機能であり,有り体に言ってRadeon Softwareの遅延低減機能「Radeon Anti-Lag」(以下,Anti-Lag)に相当するものだ。NVIDIAによると,この新機能により操作遅延を最大33%削減することができるとしている。
https://news.nicovideo.jp/watch/nw5826801
Ultra-Low Latency Modeの仕組みは単純だ。詳しくは西川善司氏によるレポート記事でのAnti-Lagに関する説明を参照してほしいが,GPUの事前レンダリングフレーム数を削減する機能と考えていい。
「NVIDIAコントロールパネル」におけるUltra-Low Latency Modeの設定(※画面ではLow Latency Modeとなっている)には,「Off」「On」「Ultra」という3つの選択肢があった。
Offは単純に,Ultra-Low Latency Modeの機能を無効にする。
一方,Onにすると,事前レンダリングフレーム数を強制的に「1」にするという。これは,従来からNVIDIAコントロールパネルにある「レンダリング前最大フレーム数」を「1」に設定するのとまったく同じ効果であるそうだ。
注目すべきはUltraの設定で,事前レンダリングフレーム数が「0」,つまり事前レンダリングを行わない動作になって,操作遅延が最小になるとのこと。NVIDIAによると60〜100fpsでレンダリングができているゲームタイトルで最も高い効果が得られるとのことである。
ただ,一部のゲームタイトルでは画面のチラツキやカクつきが生じる可能性もあるので,効果を見ながら設定することになるだろう。
なお,Ultra-Low Latency ModeはGeForce 436.02 Driverが対応するすべてのGPUで利用でき,DirectX 9およびDirectX 11対応のゲームタイトルで効果があるとのこと。DirectX 12で描画を行うゲームタイトルでは効果がないことは注意してほしい。
という事で、レタリングの遅延が減少するとのことです。
設定自身は、NVIDIAコントールパネルの3D設定の管理の部分にありました。
Off、On、Ultraの3つの選択肢があります。
検証内容
ALVRを立ち上げ、下記の遅延を適当に3回ずつ記録しました。
- STEAMVRのHOME画面で動きまわった時の遅延
- Skyrim VRのログイン画面の滝の近くでの遅延
STEAMVRのホーム画面を動きならが、スクリーンショットで、ALVRのServer画面のスクリーンショットを取っていきます。
Skyrim VRの滝の近くは、水流もあり、葉っぱもユサユサしていますし、たぶん高負荷なんではないでしょうか?
なお、ALVRのVideo設定は下記の通り。こちらもそこそこ高負荷寄りの設定のつもりです。
検証には、ALVRのServer画面の「Latency」の項目を見ていきます。
ALVRでPCのVRアプリを動かしている時には、
- PC上のVRアプリがHMD用の画面を描写する
- PC上のALVRサーバーアプリがOculus Questに転送するための画面のエンコードを行う
- WiFiでデータを転送する
- Oculus Quest上でALVRアプリが画面の出コードを行う
という処理をしています。
ALVRサーバーの「Latency」は、上記の2~4.が表示されています。
今回GeFoceシリーズのドライバーに追加された機能「Low Latency Mode」は、上記の1.に当たる部分の遅延に影響を与える機能です。1.の部分の描写が早くなり、PCの負荷が低減できるのであれば、多少ALVRの遅延に影響が出るのではないかと考えての検証です。
なお、ALVRサーバーの各Latencyの項目の内容は、下記の通りです。
項目 | 内容 |
TotalLatency | PC上のVRアプリが画面を描写してから Oculus Questが画面を描写するまでにかかった時間の合計 (上記の2~4.の合計にあたる) |
EncodeLatency | PC上のVRアプリが描写した画面を転送するために エンコードに掛かった時間 (上記の2.にあたる) |
EncodeLatencyMax | EncodeLatencyのうちの最大値 |
TransportLatency | エンコードした画面のデータをPCからOculus Questに 転送するのにかかった時間 (上記の3.にあたる) |
DecodeLatency | 転送された画面のデータをOclus Quest上でデコードするのに 掛かった時間 (上記の4.にあたる) |
TotalRatencyが、他の項目の合計にはなっていないようですので、他にも遅延要因はあるのでしょうが、表示で分かるのはここまでですので、これらを参考にしていきます。
検証環境
各アプリのバージョンや、PCのスペックによって、検証結果は大きく変わってくるかと思いますので、環境を記載しておきます。
各アプリのバージョン
アプリ・ハード | バージョン |
GeFoce Driver | 436.02 |
ALVR | Experimental v3 |
Oculus Quest Build | v7.0 |
STEAMVR | v1.6.10 |
検証環境(PC)
使用PCは下記の記事で書いた環境を使っています。
使用しているPCはDELL G5の2018年モデルです。
項目 | スペック |
CPU | Core i7-8750 |
memory | 16GB → 32GB に増設 |
GPU | NVIDIA GeForce GTX 1060 Max Q 6GB GDDR5 |
これにGPUボックスを付けて、RTXT2070を乗っけています。
検証環境(WiFi)
WiFi環境は下記の記事で書いたように、
- ルーター:BUffoloの1733Mbps対応品
- PC側WiFiアダプタ:1900Mbps WiFi 無線LANアダプター 子機
を使っています。
検証結果
STEAMVRホーム画面
Low Latency Mode | OFF | ON | Ultra |
TotalLatency (msec) | 86.3 | 85.8 | 86.1 |
EncodeLatency (msec) | 9.3 | 9.9 | 9.4 |
EncodeLatencyMax (msec) | 12.8 | 15.3 | 12.4 |
TransportLatency (msec) | 15.2 | 12.4 | 14.5 |
DecodeLatency (msec) | 21.4 | 21.0 | 21.2 |
Low Latency Modeを変化させても、TotalLatencyの値はほとんど変わりません。誤差の範囲です。
Skyrim VR
Low Latency Mode | OFF | ON | Ultra |
TotalLatency (msec) | 79.9 | 78.3 | 80.4 |
EncodeLatency (msec) | 24.2 | 24.4 | 24.3 |
EncodeLatencyMax (msec) | 25.9 | 30.3 | 32.9 |
TransportLatency (msec) | 14.0 | 14.8 | 14.0 |
DecodeLatency (msec) | 20.3 | 20.1 | 19.9 |
こちらもLow Latency Modeを変化させても、EncodeLatencyの値はほとんど変わりません。誤差の範囲です。
結論
NVIDIAの新しいDriverにLow Latency Modeという新しい遅延対策機能が設けられましたが、ALVRには全く影響がありませんでした。
と、ここで「Low Latency Mode」の説明を見てみますと、
GeForce 436.02 Driverの「3D設定の管理」に追加されたUltra-Low Latency Modeは,ゲームの操作遅延を低減する機能であり,有り体に言ってRadeon Softwareの遅延低減機能「Radeon Anti-Lag」(以下,Anti-Lag)に相当するものだ。NVIDIAによると,この新機能により操作遅延を最大33%削減することができるとしている。
https://news.nicovideo.jp/watch/nw5826801
Ultra-Low Latency Modeの仕組みは単純だ。詳しくは西川善司氏によるレポート記事でのAnti-Lagに関する説明を参照してほしいが,GPUの事前レンダリングフレーム数を削減する機能と考えていい。
「NVIDIAコントロールパネル」におけるUltra-Low Latency Modeの設定(※画面ではLow Latency Modeとなっている)には,「Off」「On」「Ultra」という3つの選択肢があった。
Offは単純に,Ultra-Low Latency Modeの機能を無効にする。
一方,Onにすると,事前レンダリングフレーム数を強制的に「1」にするという。これは,従来からNVIDIAコントロールパネルにある「レンダリング前最大フレーム数」を「1」に設定するのとまったく同じ効果であるそうだ。
注目すべきはUltraの設定で,事前レンダリングフレーム数が「0」,つまり事前レンダリングを行わない動作になって,操作遅延が最小になるとのこと。NVIDIAによると60〜100fpsでレンダリングができているゲームタイトルで最も高い効果が得られるとのことである。
ただ,一部のゲームタイトルでは画面のチラツキやカクつきが生じる可能性もあるので,効果を見ながら設定することになるだろう。
なお,Ultra-Low Latency ModeはGeForce 436.02 Driverが対応するすべてのGPUで利用でき,DirectX 9およびDirectX 11対応のゲームタイトルで効果があるとのこと。DirectX 12で描画を行うゲームタイトルでは効果がないことは注意してほしい。
完全に見逃してました・・・DirectX 12では何の効果もないそうです。
検証するまでもなく、「Low Latency Mode」はALVRには何の効果がありません、という事がわかりました。
・・・お粗末でした m(_ _)m・・・