西川善司のグラフィックスMANIAC
NVIDIA Reflex Analyzerをアケコンに対応させてみる
2022年9月9日 06:12
こんにちは。西川善司です。PC Watchで新連載「西川善司のグラフィックスMANIAC」を始めることになったのでよろしく。
もともと自分は、1980年代からPC世界で活動していたプログラマー上がりの人間だが、インプレスにおいてはPC Watchよりも、なぜかゲーム、オーディオビジュアル(主に映像機器系)のテーマで記事を書くことが多い。GAME Watchでの連載はすでに終了しているが、AV Watchでの連載「大画面☆マニア」は20年近く続いていて今も継続中だ。
さて、このPC Watchでの新連載では「PC」にテーマの軸足に置きつつ、上で挙げたようなゲーム、オーディオビジュアルに絡めた話題をいろいろとお届けできたらと考えている。
初回となる今回から数回に渡り、筆者が得意とするテーマである「ゲームと映像機器」にまつわる内容をお届けする。それは「NVIDIA Reflex Analyzerをアケコンに対応させて、さらにはPS5のような家庭用ゲーム機にも対応させよう」という試みだ。
と言っても、「NVIDIA Reflex Analyzerってなんだ?」、「アケコン? PS5?」とキーワードが多すぎで何が何だか分からない人も多いと思うので、順を追って解説していくことにしよう。
NVIDIA Reflexってなんだっけ?
まずは、NVIDIA Reflex Analyzerの解説に行く前に、「NVIDIA Reflex」というキーワードから説明しなければなるまい。NVIDIA Reflexは、NVIDIAがPCゲーム開発者向けに提供している「入力遅延低減」技術になる。
なお、ここで言う「入力」とはプレイヤーのゲームコントローラ/キーボード/マウス操作(プレイ操作)のことを言っている。なので「入力遅延」とは、「プレイヤーがゲームコントローラを操作して、その結果がゲームに現われるまでの所要時間」のことになる。
映像業界では「入力遅延」というと、「HDMIケーブルなどを経由してTV/モニターに入力されたタイミングから、実際に画面に映像が表示されるまでの所要時間」のことを指すので、それとは、ちょっと意味が違う点に留意していただきたい。
NVIDIAでは、ゲームにおけるさまざまな遅延(Latnecy)を、以下のように個別にネーミングしている。本稿での「入力遅延」とはゲームのプレイ操作が画面に現われるまでのことを指しているので、この図で言うところの「End-to-End System Latency」に相当する。
最近の3Dグラフィックスベースのゲームは、高いフレームレートを維持するためにCPUで行なう「一般ゲーム処理」と、GPUで行なう「描画処理」を切り分けて並列化しているケースが多い。
あるゲームにおいて、GPUが時間のかかる描画処理に四苦八苦している状況下で、CPUで行なっている一般ゲーム処理が先走り過ぎると、プレイヤーのゲーム操作を反映したゲーム映像が出てくるまでタイムラグ(遅延)が発生する。
「入力遅延を低減する」という着眼でいけば、「ゲームのプレイ操作」を行なうタイミングと「そのプレイを反映した映像」が表示されるタイミングは、なるべく“近しい”方がいい。これを実現する場合、CPUで行なっている一般ゲーム処理のタイミングをあえて遅らせた方がいいこともあるわけだ。これを実践するのが「NVIDIA Reflex」ということになる。
なお、このNVIDIA Reflexの仕組みは、ゲームプログラム側に統合させる必要があり、以下の画像にあるように、対応ゲームでないと利用できない。
NVIDIA Reflexの効果は、以前、筆者が執筆した「絶対使いたいNVIDIA Reflex!遅延をどれだけ減らせるか360Hzゲーミングモニターで検証してみた」にて、NVIDIA Reflex対応ゲームの「VALORANT」で計測しているので、興味がある人は参照いただきたいが、本稿ではこの記事の計測結果だけを再掲する。
この結果を見る限り、VALORANTでは、ゲーミングモニターのリフレッシュレート設定によらず、NVIDIA Reflexを有効化すると、確かに入力遅延は低減することが見て取れた。
ちなみにNVIDIAは、NVIDIA Reflexのアルゴリズムを、NVIDIA Reflex非対応の既存ゲームに効かせようとする簡易バージョンを、「低遅延モード」(Low Latency Mode)という機能名でNVIDIAコントロールパネルにて提供している。
ただし、筆者が「ストリートファイターV」(NVIDIA Reflex非対応ゲーム)で、低遅延モードを試してみた範囲では、下表にあるように恩恵を確認できなかった。
リフレッシュレート | 低遅延モード:オン | 低遅延モード:オフ |
---|---|---|
60Hz | 109.6ms | 108.5ms |
120Hz | 69.6ms | 71.0ms |
144Hz | 69.2ms | 69.6ms |
240Hz | 67.8ms | 66.9ms |
AMDが提供している「Radeon Anti-Lag」も、NVIDIA Reflexと似たコンセプトの入力遅延技術だが、こちらはゲーム側への統合が不要となっている。なので、機能的にはNVIDIAコントロールパネルで提供されている「低遅延モード」に近い機能実装になっていると思われる。
NVIDIA Reflex Analyzerってなんなの?
ということで、NVIDIA Reflex Analyzerの話題へと移るのだが、NVIDIA Reflex Analyzerは「NVIDIA Reflex」と技術的には、直接関係がありそうでないようなキーワードである。ここまで説明しておいて「なんだよ」と言われそうだが、まあ、NVIDIAとしては、「ゲームの入力遅延に取り組むNVIDIAの姿勢」として「NVIDIA Reflex」という“ブランド”を浸透させたいのだろう。
で、「NVIDIA Reflex Analyzer」とはなんなのかだが、これは、ゲームにおける入力遅延(前出の図で言うところのEnd-to-End System Latencyに相当する時間)を計測する技術ということになる。
まとめると、NVIDIA Reflexの方は「ゲームにおける入力遅延を“低減”するソフトウェア技術」であり、NVIDIA reflex Analyzerの方は「ゲームにおける入力遅延を“計測”するハードウェア技術」ということだ。
「低減」と「計測」。まるっきり違うキーワードが「NVIDIA Reflex」というキーワードに一絡げにされているのが、ユーザーを惑わせている側面がある。
ちなみに、筆者が調べて見た範囲では、一部のPC周辺機器メーカーが「NVIDIA Reflex」と「NVIDIA Reflex Analyzer」を混同したような製品説明を行なっている事例を目にしたことがあるので、本稿読者は、そうした記載に惑わされないように耐性を付けていただきたい。
散見される「間違った説明」として多いのは、「NVIDIA ReflexはNVIDIA Reflex Analyzer対応機器で最大限に機能する」という雰囲気の記述。NVIDIA ReflexはNVIDIA GPU対応のソフトウェア技術なのでGeForce 900系以降のユーザーであれば、どんなTV/モニター機器と組み合わせた環境でも完璧に機能するし、普通に利用できる。
で、NVIDIA Reflex Analyzerとは、どんな機械(ハードウェア)なのかという話になってくるのだが、これは事実上2020年頃に、NVIDIAが一部のPC業界関係者に販売/提供していた「LDAT」(Latency Display Analysis Tool)の改良版に相当する。
LDATは、マウスの左ボタンが押されてから、そのゲーム操作が画面に反映されるまでの所要時間(つまりは入力遅延)を光学的に計測する装置だった。
計測はこんな感じで行なう。
まず、LDATをTV/モニターの画面の上の計測ポイントに貼り付ける。張り付け先は、プレイヤーによってマウスの左ボタンが押されることによって引き起こされる銃撃によるマズルフラッシュ(銃口で起きる発射閃光)や、銃撃の着弾地点で起きる発光エフェクトのあたりが典型事例ということになる。
ホストPCは、プレイヤーのマウスの左ボタンが押されたことを検知して内部タイマーをスタート(≒ストップウォッチの開始に相当)、LDATが画面上の輝度変移(銃撃エフェクト)を検出したら内部タイマーをストップ(≒ストップウォッチの停止に相当)させてここまでの経過時間を算出。こうして「ゲーム操作がゲーム画面に反映されるまでの所要時間」が測定される。
もちろん、この計測された時間には、TV/モニターの映像エンジン等の処理時間や画面上の応答時間も含まれることになる。ただ、計測に用いるTV/モニターを統一して計測すれば、PC性能(CPUやGPU)に依存した入力遅延の大小を"相対的"に比較する目的には使える。
ちなみに、筆者は、このマウスの左ボタンにしか反応できないLDATをアケコンに対応できるように改造して、アケコンの機種ごとの入力遅延などの測定を行なったりしていた。
非常に画期的なツールだったLDATではあったが、「LDAT自体を画面に貼り付ける」、「画面の輝度変移をトリガにして計測を行なう」といった測定様式が、ややアナログチックではあった。
そこでNVIDIAは、このLDATの仕組みを完全デジタル化したシステムを開発。それが「NVIDIA Reflex Analyzer」である。
NVIDIA Reflex Analyzer自体は単品で製品化されているわけではなく、各PC周辺機器メーカーが販売しているゲーミングモニターに統合される形で世に送り出されている。
この連載記事の執筆にあたっては、ASUSの「ROG Swift 360Hz PG259QNR」を用いたが、NVIDIA Reflex Analyzer搭載のゲーミングモニター製品であれば、同じ使い方で、入力遅延の計測が行なえる。
使い方はすでに、筆者が執筆したこちらの記事「絶対使いたいNVIDIA Reflex!遅延をどれだけ減らせるか360Hzゲーミングモニターで検証してみた」で紹介済みだが、本稿でも簡単に振り返っておこう。
OSDメニューの「G-SYNC Processor」メニューから「NVIDIA Reflex Latency Analyzer」へと進み、一番上の「PC+Display Latency」設定を有効化する。これでNVIDIA Reflex Latency Analyzerの機能が有効化される。
続いて、同メニュー階層の「Show Monitoring Rectangle」に進み、遅延計測において着目する「計測ポイント」(≒監視領域)を可視化する。
ゲームによっては、計測ポイントの位置や大きさを変更したくなるはず。そうした位置のカスタマイズは「Monitoring Rectangle Location」で、大きさ(面積)の調整は「Monitoring Rectangle Size」で行なう。
遅延計測に際しては、NVIDIA Reflex Analyzer搭載のゲーミングモニター側に設けられたUSB 3.0ハブ機能用のUSB Type-B端子をPCと接続し、なおかつ、このUSBハブのNVIDIA Reflex Latency Analyzer対応USB Type-A端子に、NVIDIA Reflex Latency Analyzer対応マウスを接続する必要がある。
動作メカニズムはLDATと大体同じで、こんな感じになる。
マウスの左クリックを検出すると、ストップウォッチ的なタイマーがスタートされ、そこから、NVIDIA Reflex Analyzerが、あらかじめ設定しておいた「監視領域」の平均輝度の変移量を見張り始める。
LDATでは、この輝度変移を光学センサー(フォトダイオード)で検知していたが、NVIDIA Reflex Analyzerでは、映像パネルの駆動回路側に仕込まれたデジタル演算で判定される。ここが最大の違いと言っていい。
その変移量が“閾値”を上回れば、そのストップウォッチが停止して計測時間が画面上に表示される。なお、その閾値自体は、「Monitoring Sensitivity」にて「Low/Medium/High」の3段階から選択することとなる。ちょっとした輝度変化も検知するのがHigh、明確な変化がない限りは検知しないのがLow、中間がMediumというイメージだ。
暗く安定した背景であれば「High」設定が、逆に賑やかな背景に対して計測するときには「Low」設定が望ましい。計測結果に揺らぎがあって正確でないような気がすると感じた場合はここの設定を適宜変えたほうがよい。
測定メカニズムがデジタル化されたNVIDIA Reflex Analyzerでは、LDATとは違い、測定対象のモニターの映像パネルが液晶だろうが有機ELだろうが、その画素の応答速度とは無関係な計測結果が得られることになる。
言うなれば、NVIDIA Reflex Analyzerは、映像パネルの画素に表示が反映される直前までの入力遅延が計測されるということである。
NVIDIA Reflex Analyzerを使って入力遅延を測定してみる
このNVIDIA Reflex Analyzerだが、マウスの左クリックにしか対応していないというのが、なんとももどかしい。
マウス非対応の、たとえばゲームコントローラなどからの入力に対応したゲームではNVIDIA Reflex Analyzerは利用できないということになる。たとえば、筆者がよくプレイしている「ストリートファイターV」(スト5)はマウスに対応していないので、NVIDIA Reflex Analyzerによる計測はできない。
いやちょっと待て。
PC版のスト5は、キーボード入力には対応していたな……。だとすればマウスの左クリックをキーボードに割り当てることができれば、スト5でのNVIDIA Reflex Analyzer計測ができるのではないだろうか。
そこで「マウスの左ボタンをキーボード入力に割り当てる」ためにPhillip Gibbons氏が開発した「X-Mouse Button Control」を導入して実験してみることに。
このX-Mouse Button Control、その使い方はそれほど難しくはない。メニューを開いて、各マウスの操作系にお好みの文字キーを定義していくだけ。今回のPC版スト5の実験では「Left Button」の欄に、スト5のキーボード操作に対応する文字キーを入力するだけで設定完了。
実際に試してみたところ成功。めでたく、X-Mouse Button Controlを使うことで、NVIDIA Reflex Analyzerを用いてのPC版スト5の入力遅延の測定に成功した。その様子を動画にしたのが以下になる。
マウスの左クリックを押すたびにバルログ(左側のキャラクター)が小キックを打ち出す様子が見て取れるだろう。画面内に見える灰色の四辺形領域は、PG259QNRのNVIDIA Reflex Analyzer機能の「Monitoring Rectangle Location」や「Monitoring Rectangle Size」で定義した測定ポイント(監視領域)になる。