見出し画像

「遅延に勝てば敵にも勝てる。」垂直同期とNVIDIAReflex等【数値では見えない“遅さ”を削る技術】



詳細解説:入力遅延を最小限に抑えるための最適設定 - フレームキャップ、垂直同期、G-Sync、Reflex、フルスクリーン/ボーダーレスウィンドウなど

特に競技性の高いPCゲームにおいては、わずかな入力遅延が勝敗を左右することがあります。モニターのリフレッシュレートやグラフィックボードの性能が向上するにつれて、入力遅延を徹底的に削減し、最高のレスポンスを得たいというニーズが高まっています。
入力遅延に影響を与える主要な設定項目について詳細に解説します。それぞれの設定が入力遅延にどのような影響を与え、どのように最適な設定を見つけることができるのか、具体的なゲームのテスト結果検証を交えながら掘り下げていきます。

フレームキャップ(FPS制限)

ゲームのフレームレートが特定の数値を上限として動作するように制限する設定のことです。これは、ゲーム内設定、グラフィックドライバの設定、またはRTSS (RivaTuner Statistics Server)のような外部ツールを使用して行うことができます。
フレームキャップを行うとどうなるか?
入力遅延の低減: フレームキャップの主な利点の一つは、入力遅延を低減できる可能性があることです。
GPUがレンダリングしたフレームがGPUのレンダーキューで待機することなく、CPUが次のフレームをスケジュールした直後にレンダリングされるため、遅延が減少します。
検証テストでは、『Apex Legends』においてRTX 3060を使用し、約180 FPSで動作している状態から160 FPSにフレームキャップすることで、エンドツーエンドの遅延が約9ミリ秒削減されたと報告されています。
エンドツーエンド遅延=マウスをクリックした瞬間からゲーム内で銃の銃口閃光が表示されるまでの時間のことです。

フレームレートの安定化とGPU負荷の軽減
フレームレートが上限に達することで、フレームレートの極端な変動が少なくなり、より滑らかなゲーム体験を。
GPUが常に最大限の負荷で動作することを防ぎ、発熱を抑えサーマルスロットリングを発生させない効果も期待できる。

外部ツールとゲーム内キャップ〈FPS制限〉の違い: RTSSのような外部ツールやグラフィックドライバを使用したフレームキャップは、ゲーム内設定のフレームキャップよりも入力遅延が大きくなる傾向があることがいろいろな検証サイトで示されています。
平均的な結果として、RevaTunerを使用した場合は約34.1ミリ秒、ドライバキャップは約33.9ミリ秒の遅延であったのに対し、ゲーム内キャップは約26.3ミリ秒という最も低い遅延を記録しました。
これは、外部ツールがOSやドライバを介してフレームレートを制御するため、オーバーヘッドが生じるためと考えられます。

Unbeatable Input Lag + FPS Settings (Frame-cap, Reflex, G-Sync)

最良のフレームキャップ設定

一般的には、ゲーム内設定でフレームキャップを行うことが、最も低い入力遅延を実現するための推奨される方法です。もしゲーム内にフレームキャップの設定がない場合は、NVIDIA ReflexやAMD Anti-Lagのような低遅延技術の利用を検討すべき。

モニターのリフレッシュレートとの関係も重要です。
ティアリング(画面のズレ)が気になる場合は、G-SyncまたはFreeSyncを有効にした上で、モニターの最大リフレッシュレートより1〜2 FPS低い値でフレームキャップを設定することを推奨します(ただ遅延はでる)これにより、完全にレンダリングされたフレームが常にディスプレイに表示され、ティアリングを回避できます。ただし、200 FPSを超えるような高いフレームレートではティアリングは気にならないため、ほとんどの競技ゲームではフレームキャップを行わず、可能な限り高いフレームレートでプレイすることを推奨しています(競技ゲーム、死にゲー以外はつかってもいい)競技でもVALORANTのf0rsakeNとかはG-Sync使用してる、そんな稀有な例も存在する。

ゲームごとの数値変化

テストで、3つの異なるゲームにおける様々なフレームキャップ設定での遅延が測定されています。

  • Apex Legends: 225 FPSでのテスト結果

    • RTSSキャップ: 27.7ミリ秒

    • アンロック: 27.0ミリ秒

    • ドライバキャップ: 26.0ミリ秒

    • ゲーム内キャップ: 23.7ミリ秒(最も低い)

  • Modern Warfare : 165 FPSでのテスト結果

    • RTSSキャップ: 40.3ミリ秒

    • ドライバキャップ: 37.7ミリ秒

    • アンロック: 31.3ミリ秒

    • ゲーム内キャップ: 不明(アンロックよりも低い結果と示唆)

  • Fortnite (DirectX 12): 各設定でのテスト結果

    • ドライバキャップ: 38.0ミリ秒

    • RTSSキャップ: 34.3ミリ秒

    • アンロック: 30.7ミリ秒

    • ゲーム内キャップ: 24.3ミリ秒(最も低い)

結果から、一貫してゲーム内キャップが最も低い入力遅延を実現していることが分かります。アンロック状態は、非常に高いフレームレートが得られる場合に限り、わずかに低い遅延となる可能性もありますが、フレームペーシングの悪化やティアリングのリスクも伴います。

垂直同期 (V-Sync)

垂直同期(V-Sync)は、GPUがレンダリングしたフレームの表示タイミングをモニターのリフレッシュレートに同期させる技術です。これにより、画面のティアリング(フレームが途中で分割されて表示される現象)を防ぐことができます。

垂直同期を行うとどうなるか?(GPUはディスプレイが次の画像を更新するまでバッファに描画するのを待つようになる)

ティアリングの防止と入力遅延の増加: 垂直同期を有効にすると、GPUはモニターが次のリフレッシュを開始するまでフレームの出力を待機するため、ティアリングは解消されます。しかし、この待機時間こそが入力遅延を大幅に増加させる原因となります。GPUがリフレッシュレートに合わせて動作できない場合(フレームレートがリフレッシュレートを下回る場合)、さらに遅延が増加したり、スタッター(カクつき)が発生したりする可能性があります。

勘違いしてる人が多いから、GPU→モニターではない。GPU→VRAMのバッファ→モニターの流れです。
GPUが【バッファに描く】タイミングをモニターに合わせるのが垂直同期。で、バッファに種類があってシングル、ダブル、トリプルの3種類。現行主流はダブルバッファ。
よく見るのがYOUTUBEの解説で垂直同期を入れたらNVIDIA3D設定のトリプルバッファもONにするべし!って
現行のダブルバッファでさえも遅延ありきなのに、垂直同期で遅延させ、トリプルバッファでさらに遅延させ、それ結局画質が見えやすくなっても、システムおよびゲームレイテンシは100万パーセント遅延してるから意味ないw)

モニター(更新してー)GPU(おk-)GPU(バッファに描き書き)GPU(トリプルバッファだから3枚、予備も書いとかないと)GPU(かけたよー送るねー)モニター(あざっす)これが垂直同期+トリプルバッファ
確かに(表示用、描画用、予備用)三枚切り替えて描画を行うから綺麗なんだけど、あまりに交通網が悪すぎて渋滞する。
それでもティアリングやスタッタリングが気になるならトリプルバッファを使用せず、NVIDIA3D設定の垂直同期欄にある【FASTSYNC 高速】を使用した方がいい。こちらはGPUに描くのをやめるのではなく、書いたやつを準備しておく(言われてから書くのと、書いたやつを準備しておくのでは全然話が変わる)ただGPUの処理負荷が上がるし、リソースの無駄ではある。

フレーム生成技術との関係

あるテストでは、NVIDIA DLSS 3or4フレーム生成技術を使用している場合に、垂直同期とRTSSによるフレームレート制限が入力遅延に与える影響が検証されています。フレーム生成を使用しない場合、垂直同期を有効にしても、RTSSで同じフレームレートに制限しても、平均PC遅延に大きな差は見られませんでした。

しかし、フレーム生成を有効にした状態では、垂直同期を有効にした場合(フレームレート116 FPS)のPC遅延は約36〜40ミリ秒であったのに対し、RTSSで同じ116 FPSに制限した場合、遅延は約80ミリ秒にまで増加しました。これは、RTSSが生成されたフレームを適切に認識できていない可能性が示唆されています。

興味深いことに、その後、RTSSの設定で「NVIDIA Reflex」オプションを有効にすることで、フレーム生成使用時のRTSSの遅延が垂直同期と同程度(約35〜40ミリ秒)まで改善されることを発見しました。さらに、ティアリングも発生しなくなったと報告されています

(これにもちゃんと理由がある。そもそもNVIDIA Reflexの根本原理は、タイムラグを低減させる為にフレームレートを犠牲にしてでも【同期】を行う。動的な垂直同期と呼んでもいい。
ちょいとマニアックになるが、そもそもゲームプログラムのあらゆる処理はCPU、GPU共に非同期かつ並列でほぼほぼ行われる。GPU伝送コマンドやら、入力処理やら、映像描画もそうだし映像送出も非同期かつ並列処理なんです。
これなんで同期させないの?ってなるけど、依存し合わない限り並列処理させた方が全体のパフォーマンスが良くなるから=処理系に遅れが生じると後発のシステムも遅延するから、結果すべてが遅くなる、だから同期させてない。
でNVIDIA Reflexは描画処理である程度の逐次処理を許容する思想をもってるんよね。
非同期かつ並列で行われてるからティアリングみたいな現象が発生するんよね。実際上でも言った通り全体のパフォーマンス(フレームレートとかは最大化される)で見れば最良なんだけど色々ゴール地点はズレちゃう(画面ズレみたいな)
NVIDIA Reflexはレンダーキューを「1フレーム分のみ」に制限する。
こうすると「描画に時間の掛かるフレーム」が発生した場合にフレームレートが低下してしまうが、代わりに直近に指令された描画は確実に実行される
さらにNVIDIA Reflexでは、CPU側で行われるゲームの各種進行処理が始まるタイミングをシステム側に伝達する仕組みも用意してるため、各種進行処理が過剰に進まないように描画/表示処理を制御できるようになっている(ただし、ゲームプログラム側で明示的に命令する必要があるため、ゲーム側で実装しなければ使用できない)。簡単にいえばCPU側の進行処理を意図的に遅らせることもできる
描画と表示が逐次処理化される。これにより遅延は低減される一方で、GPUを幾分か遊ばせることになるためフレームレートは低下する。
だからフレームレートを犠牲にする動的なシステムの垂直同期になる。完全な上位互換、ただの垂直同期のただの遅延とは話が違う。

さらにフレームレート至上主義の時代じゃなくなってきてる。

ジョセフ・エスピュット氏を中心とするNVIDIAの研究グループは、さまざまなリフレッシュレートにおいて人為的なプレイ操作遅延を与えてトッププレイヤーの射撃正確性を検証した。
その結果、「プレイ操作遅延をそのままにしてリフレッシュレートを向上する」よりも、「同じリフレッシュレートでもプレイ操作に対する遅延を短くする」方がプレイ成績が良い傾向にあったという。
この検証結果は「Latency of 30 ms Benefits First Person Targeting Tasks More Than Refresh Rate Above 60 Hz」FPSゲームの“狙い打ち”では「30ミリ秒に低減された遅延」は「60Hz以上のリフレッシュレート」よりも効果が大きい)という論文としてまとめられ、2019年の「SIGGRAPH Asia 2019」で披露された。
そして、この論文を根拠としてNVIDIA Reflexの開発が決まった(経緯)
この話は、fpsが極端に下がるわけでもないし、トレードオフでもないが。fpsよりも入力遅延の方がプレイヤーには恩恵があるという話。

やばい、書いてて何言ってるかわからなくなってきた。
まぁとりあえずプレイ操作遅延をそのままにしてリフレッシュレートを向上する」よりも、「同じリフレッシュレートでもプレイ操作に対する遅延を短くする。
30ミリ秒に低減された遅延」は「60Hz以上のリフレッシュレート」よりも効果が大きい)ほな?垂直同期っていう遅延は??プレイヤーにどんな効果があるかわかるよね。

最良の設定

一般的に、入力遅延を最小限に抑えたい場合は、垂直同期は無効にすることが推奨される。ティアリングが気になる場合は、後述するG-SyncやFreeSyncの利用を検討すべきです。フレーム生成技術を使用している場合は、垂直同期を使用するか、RTSSで「NVIDIA Reflex」オプションを有効にしてフレームレートを制限することが、比較的低い入力遅延を維持するための選択肢となります。

G-SyncとFreeSync

G-Sync(NVIDIA)とFreeSync(AMD)は、ディスプレイのリフレッシュレートをGPUのフレームレートに合わせて動的に調整する可変リフレッシュレート(VRR)技術です。これにより、ティアリングを防ぎつつ、垂直同期のような入力遅延の増加を抑えることができます。

G-Sync/FreeSyncを行うとどうなるか?

ティアリングとスタッターの低減: G-Sync/FreeSyncを有効にすると、モニターはGPUが新しいフレームをレンダリングするタイミングに合わせてリフレッシュを行うため、画面のティアリングが完全に解消されます。また、フレームレートが一定でない場合に発生しやすいスタッターも軽減され、より滑らかで快適なゲーム体験が得られます。

入力遅延への影響: G-Sync/FreeSyncは、垂直同期と比較して入力遅延の増加は非常に小さいとされています。そのため、ティアリングを防ぎつつ、比較的低い入力遅延でゲームをプレイしたい場合に非常に有効な選択肢となります(割と有効ではあるけどもわずかに遅延が発生する。あと検証系YOUTUBEも沢山上がってるが、効果はそんなに高くないし、ちゃんと画面ズレも発生している)

フレームキャップとの併用

G-Sync/FreeSyncを使用する場合、モニターの最大リフレッシュレートより3〜7FPS低い値でフレームキャップを設定することを推奨。これにより、G-Sync/FreeSyncの動作範囲内で常にフレームレートが維持され、最高の滑らかさと応答性が得られるとされています。

効果的なフレームレート範囲

G-Sync/FreeSyncは特に144 FPS以下のフレームレートで効果を発揮し、ティアリングが気になる場合に有効であると述べています。200 FPSを超えるような高いフレームレートでは、ティアリングはあまり気にならなくなるため、G-Sync/FreeSyncの必要性は低下する可能性があります。

NVIDIA ReflexとAMD Anti-Lag

NVIDIA ReflexとAMD Anti-Lagは、CPUとGPUの連携を最適化し、レンダーキューを削減することで入力遅延を低減する技術。

Reflex/Anti-Lagを行うとどうなるか?

レンダーキューの削減と入力遅延の低減
これらの技術を有効にすると、CPUが処理したフレームがGPUに速やかに送信され、レンダリングが開始されるため、GPUのレンダーキューで待機する時間が短縮されます。これにより、フレームキャップを行わなくても、フレームキャップと同様の入力遅延低減効果が得られる。

高いフレームレートの維持: Reflex/Anti-Lagは、フレームレートを制限することなく入力遅延を低減できるため、高いフレームレートのメリットを維持しながら、より応答性の高いゲームプレイを実現できます。

GPU性能による効果の違い

検証テストによると、より高性能なGPUを使用している場合、Reflexによる入力遅延の改善幅は小さくなる傾向がある。例えば、RTX 2060や3060では約9ミリ秒の改善が見られたのに対し、RTX 3070では約4ミリ秒の改善にとどまっている。これは、高性能なGPUほどレンダーキューが小さいため、Reflexによる削減効果が小さくなるためと考えられます。

RTSSとの連携

「Mostly Positive Reviews」が発見したように、RTSSでフレームレートを制限する場合でも、「NVIDIA Reflex」オプションを有効にすることで、入力遅延を大幅に改善することができます。これは、RTSSがReflexのAPIを利用して、より効率的にフレームレートを制御しているためと考えられます。

How To Reduce Input Latency When Using Frame Generation - V-Sync vs RTSS

フルスクリーンとボーダーレスウィンドウ

ゲームの表示モードには、フルスクリーンとボーダーレスウィンドウ(または仮想フルスクリーン)があります。

表示モードの違いと入力遅延

わずかにフルスクリーンの方が入力遅延が小さいという結果が出ています。これは、フルスクリーンモードではOSのウィンドウ管理システムによるオーバーヘッドが少なく、ゲームがディスプレイを直接制御できるためと考えられます。

その他の考慮事項

ボーダーレスウィンドウモードは、Alt+Tabキーによるアプリケーションの切り替えが高速に行えるという利点がありますが、わずかながら入力遅延が増加する可能性があることを理解しておく必要があります。

スケーリング

画面のスケーリングには、GPUスケーリングとディスプレイ(モニター)スケーリングがあります。

スケーリング方法と入力遅延

あらゆる検証テストでは、ディスプレイ(モニター)スケーリングの方がわずかに高速であるという結果が得られました。可能な場合は、モニター側の設定でスケーリングを行う方が、わずかに低い入力遅延につながる可能性がありまっする。

ゲームごとの考慮事項

入力遅延はゲームのエンジン、フレームレートキャップの実装方法、およびゲーム固有の要素(例えば、操作に対する意図的な遅延など)によって異なる場合があります。そのため、上記で述べた一般的な傾向はありますが、個々のゲームにおいて最適な設定を微調整することが重要で。

最適な設定

上記の情報を踏まえ、入力遅延を最小限に抑えるための一般的な推奨設定。

  • 可能な限り、ゲーム内設定のフレームキャップを使用する。 外部ツールやドライバによるキャップは遅延が増加する傾向があります。

  • ティアリングが気になる場合は、垂直同期ではなく、G-SyncまたはFreeSyncを有効にする。 これらはティアリングを防ぎつつ、入力遅延の増加を抑えます。

  • G-Sync/FreeSyncを使用する場合は、モニターの最大リフレッシュレートより3〜7FPS低い値でフレームキャップを設定することを検討する。

  • 対応しているゲームであれば、NVIDIA ReflexまたはAMD Anti-Lagを有効にする。 これらはフレームレートを制限することなく入力遅延を低減します。

  • RTSSなどの外部ツールでフレームレートを制限する場合は、可能な限り最新バージョンを使用し、NVIDIA Reflexに対応している場合は有効にする。

  • 表示モードは、可能な限りフルスクリーンを選択する。 わずかに低い入力遅延が期待できます。

  • スケーリングは、可能な限りディスプレイ(モニター)側で行うように設定する。 わずかに低い入力遅延が期待できます。

ただし、これらの設定はあくまで一般的なガイドラインであり、個々の環境や好みに応じて調整する必要があります。例えば、ティアリングが全く気にならないのであれば、G-Sync/FreeSyncやフレームキャップを使用せずに、可能な限り高いフレームレートでプレイした方がよい。

ゲームごとに最適な設定は異なる可能性があるため、実際にプレイしながら、自身の目で見て、体で感じて微調整を行うことが、究極の低遅延環境を実現するための鍵なんです。最新の技術やツールも(例:LDAT、NVIDIA Latency Display、CapFrameX等)常に進化しているため、定期的に情報を収集し、自身の環境に最適な設定を見つけるべし
入力遅延の削減は今後ますます重要に。新たな低遅延技術(たとえば、NVIDIA Reflex Analyzerによるリアルタイム遅延表示、DisplayPort 2.1やHDMI 2.1による超高速伝送、OLEDディスプレイの台頭など)は、今後の「即応性」が問われるゲーム体験をさらに高次元へと進化させていくと思いますまる。※途中で書いてることわけわからなくなってきたためごちゃごちゃです。


YOUTUBE,Xもフォローお願いします(はなほじー)

いいなと思ったら応援しよう!

この記事が参加している募集

ピックアップされています

ゲーマーなら読んでおきたい記事

  • 9本

コメント

ログイン または 会員登録 するとコメントできます。
「遅延に勝てば敵にも勝てる。」垂直同期とNVIDIAReflex等【数値では見えない“遅さ”を削る技術】|最適化おじさん(K)PCゲームのあれこれ
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1