Frames Per Second, Explained

本日は、PC ゲームに関して最もよくある質問の 1 つである「秒間何フレーム必要なのか? モニターの最大リフレッシュ レートと同じフレーム レート、たとえば 60 Hz のモニターでは 60 FPS で実行すべきなのか、それとも 500 FPS など、モニターが表示できるよりもはるかに高いフレーム レートでゲームを実行する利点があるのでしょうか。

この質問に答えるには、GPU とディスプレイがどのように連携して眼球にフレームを送るか、また、Vsync などのテクノロジーがどのように機能するかについて、少し話をする必要があります。 これが、最後まで待つのが嫌な人のための答えです。 では、その理由についてお話ししましょう。

編集部注:本特集は2018年8月2日に掲載されたものです。 当時と同様に現在も関連性があり、最新の情報であるため、「#ThrowbackThursday」の取り組みの一環としてぶつけました。

ここでは、リフレッシュレートが60Hz固定のモニターがあると仮定しましょう。 つまり、このモニターは 1/60 秒ごと、つまり 16.7ms ごとに表示を更新しています。 ゲームを実行するとき、GPU がすべてのフレームを正確に 16.7 ミリ秒 でレンダリングできる保証はありません。 あるときは 20 ミリ秒、あるときは 15 ミリ秒、あるときは 8 ミ リ秒かかるかもしれません。 これが、GPU でゲームをレンダリングするときのさまざまな性質です。

このようにレンダリング レートが変化するため、各レンダリング フレームがモニターに渡される方法を選択することができます。 一般に「Vsync」または垂直同期オフでゲームを実行することとして知られていますが、ディスプレイが更新できるようになるまで待ってから新しいフレームを送信することができ、「Vsync オン」として知られています。 これは、ディスプレイが画像全体を瞬時に更新することができず、通常はディスプレイの上部から下部へ、1 行ずつ更新されるためです。 このプロセスで、GPU から新しいフレームが準備されることがありますが、Vsync を使用していないため、そのフレームはすぐにディスプレイに送信されます。 その結果、リフレッシュの途中でモニターは新しいデータを受信し、この新しいデータでディスプレイの残りのラインを更新します。

Tearing

表示されているコンテンツによっては、1 回の更新で新旧フレームの間のこの分割は、古いフレームと新しいフレームの間の涙または可視線として表示されます。 通常、1 つのフレームと次のフレームの間に大きな差がある、動きの速いシーンで最も顕著になります。

Vsync>オフはティアリングにつながりますが、GPU とディスプレイ間の低レイテンシーのために、レンダリングを完了するとすぐにディスプレイにフレームを送信するという利点があります。 1977>

Vsync on

Vsync on で画像を表示する代替方法です。 ここでは、GPU は新しいフレームをすぐにディスプレイに送信するのではなく、各レンダリング フレームをバッファにシャッフルします。 最初のバッファは現在作業中のフレームを格納するために使用され、2番目のバッファはディスプレイが現在表示しているフレームを格納するために使用されます。 更新中に 2 番目のバッファが更新されることはないので、ディスプレイは 1 つの完全にレンダリングされたフレームからのデータのみを表示し、その結果、更新の途中で更新によるテアリングが発生することはありません。 これが確実に起こるように、GPU はフレームのレンダリングを完了した後、ディスプレイが更新されるまで待機します。 それからバッファをシャッフルし、新しいフレームのレンダリングを開始し、このプロセスが繰り返されます。 時には、フレームがディスプレイに到達するまでに複数のバッファを含むこともありますが、これが Vsync がどのように機能するかの一般的な要点です。

GPU がフレームのレンダリングに遅すぎると、スタッターが発生する

Vsync には 2 つの問題があります。 まず、GPU のレンダリング速度が遅すぎてディスプレイのリフレッシュ レートに追いつけない場合、たとえば、60 Hz のディスプレイで 40 FPS でしかレンダリングできない場合、GPU はディスプレイのリフレッシュの開始に間に合うように完全なフレームをレンダリングしないので、フレームが繰り返されます。 これは、あるフレームは 1 回だけ表示され、別のフレームは 2 回表示されるため、吃音の原因となります。 60Hz ディスプレイ、200 FPS

2 番目の問題は、GPU が非常に高速で、リフレッシュ レート間隔内にフレームを簡単にレンダリングできる場合に発生します。 たとえば、200 FPS でレンダリングでき、16.7 ms のリフレッシュ ウィンドウで 60 Hz のディスプレイを使用している場合を除き、5 ms ごとに新しいフレームを作成できるとします。

Vsync をオンにすると、GPU は表示する次のフレームを 5ms で完了し、その後 11.7ms 待って、フレームをモニターに表示するための第 2 バッファに送り、次のフレームを開始します。 GPU は基本的にリフレッシュ レートより速くレンダリングしないように「ロック」されているからです。

さて、この時点で多くの混乱が生じました。

Vsync on including input

この理由を説明するために、Vsync on 図を見て、マウスとキーボードからの入力と図を重ねてみますが、通常 1ms 毎に集まります。 また、60 Hz のディスプレイで 200 FPS でレンダリングできる GPU がある場合、同じ例を使用します。

Vsyncと単純なバッファ システムでは、この単純化した説明では、GPU は、時間 0 で、マウス入力を受け取るとすぐに、その入力に対応するフレームのレンダリングを開始します。 その後、フレームのレンダリングに 5 ミリ秒かかり、ディスプレイ バッファに送信するまでにさらに 11.7 ミリ秒待機します。

次に、ディスプレイはレンダリングされるフレームを受信するのに時間がかかり、この情報でディスプレイを 1 行ずつ物理的に更新します。

Vsync on including input

最高のシナリオであっても、入力とディスプレイがその入力の結果を示し始めるまでに少なくとも 16.7ms の遅延が発生します。

Vsync オフ、入力、60 Hz ディスプレイ、200 FPS

では、Vsync オフの図を見ましょう。 GPU は、ディスプレイがいつ更新されるかに関係なく、入力を完全なフレームに変換するのに5 ミリ秒かかり、継続的にレンダリングします。 その後、ディスプレイは、そのフレームの一部であるかもしれませんが、その新しいフレームをすぐに表示し始めることができます。 その結果、ゲームへの入力と、ディスプレイがその入力の結果を表示し始めるまでの待ち時間が、16.7msからわずか5msに短縮されます。 実際の実装では、バッファを追加する必要はなく、これと同じ速さにモニターの入力遅延を加えたものです。 この例では、60 Hz のモニター上で Vsync をオフにして 200 FPS で実行すると、入力遅延が 5ms に減少しますが、Vsync をオンにすると、その遅延は少なくとも 16.7ms となり、それ以上となる可能性もあります。

ディスプレイが毎秒 200 フレームをすべて表示できなくても、ディスプレイが 1/60 秒ごとに表示するものは、そのフレームにかなり近い時間での入力から生成されています。 たとえば、144 Hz では、毎秒多くのフレームを見ることができるので、全体としてよりスムーズで応答性の高いエクスペリエンスを得ることができます。 しかし、Vsyncをオンにして144 FPSで実行するよりも、Vsyncをオフにして200 FPSで実行した方が、入力レイテンシーが5msから7ms以上違ってきます。

さて、ミリ秒単位の差について話していると、ゲームでこの差に実際に気づくことができるかどうかが気になるところでしょう。 CS: GO のような速いペースのゲームを 60 Hz モニターで 400 FPS で実行し、入力遅延はせいぜい約 2.5ms ですが、同じゲームを 60 FPS で 16.7ms (以上) の遅延で実行した場合よりも、マウス操作に対する反応が大幅に良くなると感じられるでしょう。 しかし、入力レイテンシーの差は非常に大きく、400 FPS で実行すると、ディスプレイへの入力を 7 倍近く速くすることができます。 実際、Nvidia は入力レイテンシーの点で Vsync の限界を認識しており、Fast Sync と呼ばれる代替手段を提供しています (AMD の代替手段は Enhanced Sync と呼ばれています)。 このディスプレイ同期技術は、Vsync on と Vsync off を組み合わせたようなもので、両方の長所をもたらします。

高速同期は、最後のレンダー バッファと呼ばれる追加のバッファを Vsync on パイプラインに導入することによって機能します。 これにより、GPU は新しいフレームをバック バッファにレンダリングし続け、完了すると last rendered buffer に移行します。 そして、ディスプレイ更新時に、最後のレンダリング バッファは、ディスプレイがアクセスするフロント バッファにプッシュされます。

Fast Sync / Enhanced Sync

この機能により、GPU はフレームの完了後に、Vsync on と同様にディスプレイ更新を待つ必要がありません。 その代わりに、GPU はフレームをレンダリングし続けるので、ディスプレイがリフレッシュ期間の初めにフレームにアクセスしようとするとき、そのフレームはリフレッシュ ウィンドウにより近い状態でレンダリングされています。 これにより、入力レイテンシーが減少します。 しかし、Vsync がオフの場合と異なり、Fast Sync は、単にフレームをすぐにディスプレイにプッシュするのではなく、各リフレッシュの最初に完了したフレームをディスプレイに提供し、この手法によりティアリングが解消されます。 もちろん、AMD にも Enhanced Sync と呼ばれる同等のものがあります。

この説明で、なぜモニターの最大リフレッシュ レートを超えてゲームを実行すると、より応答性の高いゲーム体験が得られるのか、なぜ高いフレームレートでゲームを実行できると、モニターがそれを利用できないように見えても常に利点があるのかという疑問を解消できればと願っています。

最後に、G-Sync や FreeSync などのアダプティブ シンク テクノロジーについて説明してきませんでしたが、これは、アダプティブ シンクが適用されない最大リフレッシュより上でゲームを実行することについて主に話してきたためです。 世の中にはさまざまな同期方式がありますが、アダプティブシンクはこれまで話してきたVsyncやFast Syncとは全く異なるもので、少なくともこの議論にはあまり関係がありません。

Further Reading
  • The Best Gaming Monitors
  • FreeSync 2 Explained
  • The Best Graphics Cards 2018
Shopping Shortcuts
  • Radeon RX 570 on Amazon, Newegg
  • Radeon RX 580 on Amazon, Newegg
  • GeForce GTX 1060 6GBをAmazonで購入
  • GeForce GTX 1070 TiをAmazonで購入、Newegg
  • GeForce RTX 2070をAmazonで購入しました。 Newegg
  • GeForce RTX 2080 on Amazon、Newegg
  • GeForce RTX 2080 Ti on Amazon、Newegg

Masthead credit.com、Newegg

  • GeForce RTX 2080 Ti on Amazon、Newegg
  • Masthead credit: 写真:Jakob Owens

    Articles

    コメントを残す

    メールアドレスが公開されることはありません。