Oculus Quest GeFoceの新Driverの遅延防止機能で ALVRの遅延は少なくなるのか検証してみた

2019年8月31日

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%削減することができるとしている。
 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で描画を行うゲームタイトルでは効果がないことは注意してほしい。

https://news.nicovideo.jp/watch/nw5826801

という事で、レタリングの遅延が減少するとのことです。

設定自身は、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アプリを動かしている時には、

  1. PC上のVRアプリがHMD用の画面を描写する
  2. PC上のALVRサーバーアプリがOculus Questに転送するための画面のエンコードを行う
  3. WiFiでデータを転送する
  4. Oculus Quest上でALVRアプリが画面の出コードを行う

という処理をしています。

ALVRサーバーの「Latency」は、上記の2~4.が表示されています。

今回GeFoceシリーズのドライバーに追加された機能「Low Latency Mode」は、上記の1.に当たる部分の遅延に影響を与える機能です。1.の部分の描写が早くなり、PCの負荷が低減できるのであれば、多少ALVRの遅延に影響が出るのではないかと考えての検証です。

なお、ALVRサーバーの各Latencyの項目の内容は、下記の通りです。

項目内容
TotalLatencyPC上のVRアプリが画面を描写してから
Oculus Questが画面を描写するまでにかかった時間の合計
(上記の2~4.の合計にあたる)
EncodeLatencyPC上のVRアプリが描写した画面を転送するために
エンコードに掛かった時間
(上記の2.にあたる)
EncodeLatencyMaxEncodeLatencyのうちの最大値
TransportLatencyエンコードした画面のデータをPCからOculus Questに
転送するのにかかった時間
(上記の3.にあたる)
DecodeLatency転送された画面のデータをOclus Quest上でデコードするのに
掛かった時間
(上記の4.にあたる)

TotalRatencyが、他の項目の合計にはなっていないようですので、他にも遅延要因はあるのでしょうが、表示で分かるのはここまでですので、これらを参考にしていきます。

検証環境

各アプリのバージョンや、PCのスペックによって、検証結果は大きく変わってくるかと思いますので、環境を記載しておきます。

各アプリのバージョン

アプリ・ハードバージョン
GeFoce Driver436.02
ALVRExperimental v3
Oculus Quest Buildv7.0
STEAMVRv1.6.10

検証環境(PC)

使用PCは下記の記事で書いた環境を使っています。

使用しているPCはDELL G5の2018年モデルです。

項目スペック
CPUCore i7-8750
memory16GB → 32GB に増設
GPUNVIDIA GeForce GTX 1060
Max Q 6GB GDDR5

これにGPUボックスを付けて、RTXT2070を乗っけています。

検証環境(WiFi)

WiFi環境は下記の記事で書いたように、

  • ルーター:BUffoloの1733Mbps対応品
  • PC側WiFiアダプタ:1900Mbps WiFi 無線LANアダプター 子機

を使っています。

検証結果

STEAMVRホーム画面

Low Latency ModeOFFONUltra
TotalLatency (msec)86.385.886.1
EncodeLatency (msec) 9.39.99.4
EncodeLatencyMax (msec) 12.815.312.4
TransportLatency (msec) 15.212.414.5
DecodeLatency (msec) 21.421.021.2

Low Latency Modeを変化させても、TotalLatencyの値はほとんど変わりません。誤差の範囲です。

Skyrim VR

Low Latency ModeOFFONUltra
TotalLatency (msec) 79.978.380.4
EncodeLatency (msec) 24.224.424.3
EncodeLatencyMax (msec) 25.930.332.9
TransportLatency (msec) 14.014.814.0
DecodeLatency (msec) 20.320.119.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%削減することができるとしている。
 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で描画を行うゲームタイトルでは効果がないことは注意してほしい。

https://news.nicovideo.jp/watch/nw5826801

完全に見逃してました・・・DirectX 12では何の効果もないそうです。

検証するまでもなく、「Low Latency Mode」はALVRには何の効果がありません、という事がわかりました。

・・・お粗末でした m(_ _)m・・・