もっと詳しく

<p>ゲームで勝つための遅延低減機能「NVIDIA Reflex」。その効果を360Hzゲーミングモニターで徹底検証 ~フレームがゲームを制する!ASUS「ROG SWIFT 360Hz PG259QNR」[Sponsored]</p><p>ゲームで勝つための遅延低減機能「NVIDIA Reflex」。その効果を360Hzゲーミングモニターで徹底検証 ~フレームがゲームを制する!ASUS「ROG … #Sponsored</p><p>リフレッシュレートが120Hz以上あるようなゲーミングモニターは、滑らかな映像表示になる「ハイリフレッシュレート×ハイフレームレート」を提供でき、目まぐるしく動くゲーム画面を目線で追いかけるeスポーツ系タイトルなどにおいて、プレイを優位に進める上での強力な武器となる。</p><p>続いて、NVIDIA Reflexについて説明していくが、その前にゲームにおける「遅延」(Latency)について、軽く整理しておこう。このあたりをまとめた図解がこちらになる。 ゲームによる遅延の模式図 一般に「ゲームプレイヤーが感じる遅延」は、「ゲームコントローラを操作して、そのプレイ操作結果が映像に反映されるまでの時間」なので、上の図解で言えば最下段に表記されている「End to End System Latency」ということになる。 ただし、実際のところ、上の図解はかなり簡略化したものとなっているので、もう少し「泥臭い次元」で解説していくことにしよう。 現代のモダンなアーキテクチャのゲームプログラムは、プレイ操作入力処理、各種ゲームロジック処理、シミュレーション処理、そしてGPUに伝送する描画コマンド生成などなど……CPUが担当する各種処理系は、それぞれが非同期かつ並列に進行するメカニズムになっている場合が多い。 さらにGPUによって実行される映像の描画と、その映像のモニター機器への送出もCPU側の処理系と非同期かつ並列に実践されることが多い。 「非同期な設計」にする理由は、互いの処理系に依存関係が発生しない限りは、徹底した並列実行を実践させるため。並列実行をさせれば総処理時間を短縮できることへとつながる。 逆に逐次実行をしていると、もし、ある処理系に限って平常時よりも時間がかかってしまったら、後段の処理もすべて遅れることになり、すべてが遅くなってしまう。 しかし、 NVIDIA Reflexでは、描画処理に関して、ある程度の逐次的な処理を許容する。これがNVIDIA Reflexの根本的な考え方だ。 モダンなアーキテクチャのゲーム(特にDirectX 12やVulkanベースで制作されたゲーム)では、そのフレームに登場するオブジェクトの1つ1つの描画を司る「GPUへのコマンドリスト」(GPUがなすべき指令書のようなもの)は、CPUが同時並列的に複数のバッファ(レンダーキュー)へ出力する設計となっている。 このバッファに貯められた描画コマンド群は、GPUを常に働かせ続けるために(GPUに一瞬の暇も与えないように)、隙あらば発行される。この発行は、CPUが実践している各種ゲーム進行処理とは別に、非同期かつ並列に行なわれている。 つまり、GPU視点で見ると、CPU側で行なわれている各種ゲーム進行処理を気に掛けず、「描画に時間の掛かるフレーム」と「それほど描画時間の掛からなかったフレーム」が混在する描画処理をドンドン実践していくことになるわけだ。 「描画に時間の掛かるフレーム」が連続すれば、プレイヤーのプレイ操作が反映された映像が描画されるまで“タイムラグ”が発生することになるが、GPUとして休みなく映像を描画し続けていることになるので、フレームレートとしては最大化される。 ここで、 フレームレートを多少犠牲にして(API上では上限フレームレートの設定も可能)、その“タイムラグ”を低減させるために、同期の仕組みを導入する。これがNVIDIA Reflexのメカニズムの正体だ。 まず、GPUに休む暇も与えないよう、どんどん積み上げられる指令書、すなわちレンダーキューを、1フレーム分のレンダリング用に制限する。こうすることで、「描画に時間の掛かるフレーム」が発生するとフレームレートは下がるかもしれないが、これは許容することとする。その代わり、直近に指令された描画指令が確実に実行される。 これに加えて、NVIDIA Reflexでは「CPU側で行なわれている各種ゲーム進行処理」が始まるタイミングをNVIDIA Reflexシステム側に通達する(これはゲームプログラム側が明示的に行なう必要ある)ことで、過剰にこの「CPU側で行なわれている各種ゲーム進行処理」が動作しないよう、描画/表示フェーズを制御することができる。 言ってみれば「CPU側で行なわれている各種ゲーム進行処理」を遅らせるわけである。 NVIDIA Reflexを無効化したとき。各種ゲーム進行処理(Sim N)が行なわれてから実際に映像が描画/表示されるまでの待ち時間が長い。ただし、GPUは休まず動作することになるため、フレームレートは最大化される NVIDIA Reflex有効時 NVIDIA Reflexを有効化した状態のパイプライン。レンダーキューを直近の各種ゲーム進行処理(Sim N)専用のものと制限することで、描画/表示が逐次処理化されて遅延は低減される。ただし、そのGPUを幾分か遊ばせる結果にもなり、フレームレートは低下する ただ、NVIDIA Reflexは、この仕組みを動かすために、既存のゲームを低遅延にすることには未対応となっている。そう、ゲーム側がNVIDIA Reflexに明示対応させる必要があるのだ。なお、NVIDIA Reflexは、MicrosoftのDirectX 12のほか、OpenGL系APIのVulkanにも対応済みとなっている。 さて、実際のNVIDIA Reflexの活用方法だが、対応ゲームのほぼすべてにおいて、そのゲーム内設定オプションにて、専用の設定オプションメニューが用意されており、その設定を明示的に「有効化」設定する必要がある。 ゲーム内に用意されているNVIDIA Reflexの設定 ところで、ややこしいことに「NVIDIAコントロールパネル」には2019年から「Low Latency Mode」が設けられており、これがしばしばNVIDIA Reflexと勘違いされることがある。 この「Low Latency Mode」は、レンダーキューを縮小化することで、レンダリングキューに起因した描画遅延の短縮には貢献するが、NVIDIA Reflexが実践している「CPU側で行なわれている各種ゲーム進行処理」の制御には介入しない。 なので、得られる低遅延効能はそれほど高くはない。筆者も、かつていくつかのゲームで実験したことがあるが、ほとんど測定誤差レベルの効能しかなかった。 NVIDIA Reflexが誕生した現在においては、NVIDIAコントロールパネルの「Low Latency Mode」を積極利用する意味合いは薄れている と思う。 もし、NVIDIAコントロールパネルの「Low Latency Mode」と、NVIDIA Reflexの「重ね掛け」を行なった場合、どういう動作になるかというと、NVIDIA Reflexが優先されることとなっている。これは豆知識として覚えておくといいだろう。 Low Latency Mode≠NVIDIA Reflex NVIDIAコントロールパネルの「Low Latency Mode」は、NVIDIA Reflexの設定ではない NVIDIA Reflex Analyzerでゲームの入力遅延を計測 では実際に、NVIDIA Reflexに対応した「VALORANT」を用いて、NVIDIA Reflexの有効化、無効化でゲーム操作に対する入力遅延がどのように変わるかを見ていくことにしよう。 ASUS「PG259QNR」は、最大リフレッシュレート360Hzに対応したゲーミングモニターであると同時に「NVIDIA Reflex Analyzer」という、遅延計測機能が搭載されている。計測にはこの機能を活用することとした。 NVIDIAは以前「Latency Display Analysis Tool」(LDAT)という、遅延計測ツールをリリースしていたが、あれは画面に光センサーを当てて使う少々アナログチックな機器だった(業界に衝撃を与えるほど画期的なツールだったとは思うが)。 PG259QNRを初めとした、一部のエンスージアスト向けのゲーミングモニターに搭載されているNVIDIA Reflex Analyzer(以下、NRA)は、このLDATの機能を発展させてゲーミングモニターに組み込んでしまったものと言える。 NRAの使い方を、簡潔に説明しよう。 まず、PG259QNRのOSDの「G-SYNC Processor」メニューから「NVIDIA Reflex Latency Analyzer」へと進み、一番上の「PC+Display Latency」設定を有効化する。これでNRA機能が有効化される。 NVIDIA Reflex Latency Analyzerを有効化 「PC+Display Latency」を選択すると、NVIDIA Reflex Latency Analyzerが有効になる 続いて、同メニュー階層の「Show Monitoring Rectangle」に進み、遅延計測において着目する「監視領域」を可視化する。 画面変化の監視領域を設定する</p>