垂直同期の設定とテアリングや遅延の対策

垂直同期の設定とテアリングや遅延の対策

ゲームの設定やグラフィックボードの設定で度々話題になる垂直同期について解説します。

垂直同期とは、テアリング Tearing(日本では誤読のティアリングと読まれ方が一般的)によって映像の1コマが乱れて描写されることによる「コマずれ・ちらつき・カクつき・歪み」などを抑える技術です。
その代償として入力操作に対する「遅延」が発生する場合があります。
厄介なのはテアリングも遅延も環境により異なることから答えが無いことにあります。
垂直同期設定のオンオフがどちらが優れているかは、本人の感覚とPC環境で全て決まるものなので、ネットゲーム内などで第三者に尋ねても答えは返ってきませんし、逆にこの環境依存の設定を結論で答えてくれる人が居たとすればその人はどうかしています。

ゲーム内のグラフィック設定の中では異色の項目であり、他の項目が主に3Dの描写技術(DirectX)に関するものであるのに対し、垂直同期はデバイス(ハードウェア)に関する項目です。
これが環境依存で答えが違う最大の理由です。

長い記事になるので結論を先に書きますが、オンとオフ両方である程度の長い時間プレイしてみて、自分がやりやすい方とか好成績が出る方を選べば良い、これが全てです。
以下色々と細かい話をしますが、行きつくところは全てがこれです。

テアリングと遅延が関係する要素は多岐にわたります。
ディスプレイの性能と設定、OS の設定、グラフィックボードの性能と設定、CPU の性能、マウスの性能と設定、ゲーム内の設定、ゲームのゲームエンジンの性能、などが影響し、間接的な意味ではネット環境も影響します。
これらの組み合わせから生まれた映像を、自身がどう認識するかまでを含めて答えが決まります。
また同じ人が同じPCで二つのゲームをプレイしたとき、一方はオンの方が良くもう一方はオフの方が良いという場合もあり、これはゲームの必要PCスペックやゲームエンジンが異なるからです。
PC関連の話でこれほど環境依存な話題も珍しいことをご理解ください。

テアリング(ティアリング)

垂直同期がオフの場合、環境によってはテアリングが生じます。
対象ゲームに対して、PC スペックが高い人ほどその傾向は強くなります。
スペックが高すぎる場合、簡単に言うとディスプレイが一秒間に60回画像を更新しているのに対して、グラフィックボードが180回映像を出力したとします。
1/60の画像を描写している最中に3枚の画像が出力された場合、ディスプレイはどれか一枚を選ぶのではなく、画面上段に一枚目・中段に二枚目・下段に三枚目、といったバラバラな画像を描く場合があります。
これがテアリングで人によって感じ方が違いますが、コマずれ・ちらつき・カクつき・歪みなどを感じます。
逆にスペックが低い人は、ディスプレイのリフレッシュレート(一秒間の更新回数)の数値をFPS(frames per second)が常に下回るとすれば、カクつきが常に発生している状態ではありますがテアリングは気にならないと思います。

テアリングというのは発生してるかどうかよりもあなた自身がどう感じるか次第です。
例えば音ゲーであればスクロールが綺麗に動くかどうか。
格闘ゲームであれば背景のスクロールもそうですが、キャラクターのモーションが滑らかかどうかがポイントになりますし、エフェクトが派手な作品であればその表示も目安になります。
レースゲームであればまずハイスピードストレートでの背景の流れがチェックポイントとなり、次にシケインなどで切り返すときの背景が横スクロールも増えたときの表示、縁石でバウンドしたときの表示、ダートならばパーティクルの表示などに着目して判断します。
FPS や TPS といったガンシューティングや MMORPG などであれば、視点をぐるぐる回して視界が壊れないかが重要で、次に移動の際の背景、魔法や爆発物のエフェクト、敵の動きなどで判断します。

いずれにしても激しく画面が動くときに発生するかどうかが判断材料となり、表示が壊れるかどうか、スクロールがカクつかずに滑らかかどうか、などを見極めることになります。

テアリングと聞いて皆さんが最初にイメージするのは、ゲームでの背景の壊れた表示だと思います。
しかしそれはゲーム脳です。テアリングは一人称だけで問題があるわけではありません。
次の画像はテアリングを再現した画像で、レースの中継でカメラが車を追って撮影した場合です。

垂直同期の設定とテアリングや遅延の対策 垂直同期の設定とテアリングや遅延の対策

一般的にイメージされるテアリングで、背景がずれているのが判ると思います。

次はカメラは固定で背景を撮影し、そこを車が通過した場合です。

垂直同期の設定とテアリングや遅延の対策 垂直同期の設定とテアリングや遅延の対策

車だけがずれていることが判ると思います。
テアリングで画面がずれると感じるのではなく、画面全体がチラチラして視点が定まらなく、対象を目で追えないという状態になるのは、こちらのタイプの対象の輪郭の壊れが原因です。

遅延

垂直同期オンで発生する遅延とは、グラフィックボードから描写データが出力されて、それをディスプレイが表示するまでの時間が遅くなることをさします。
何故発生するかというと、テアリングを抑えるためにグラフィックボードがディスプレイの更新速度に合わせて出力するためで、この出力タイミングを待つ過程で遅延が発生します。
この「待つ」という処理がとても複雑で、主にグラフィックボードの性能や設定で決まるのですが、感じ取れないほど短い場合もあれば、まともにプレイできないほど遅い場合もあります。
「待つ」部分の処理の話を始めてしまうととんでもなく長い技術的な説明になってしまうので省略しますが、設定に関しては後に説明します。

垂直同期オンの場合は Nvidia で言うところの「レンダリング前最大フレーム」項目が影響し、最低でも1フレームの遅延が発生します。
これに加えて、60Hz のディスプレイであれば最大で 1/60秒=16ms=0.016秒 加算され、120Hzのディスプレイであれば最大で0.008秒が加算されます。
詳細は後に書きますが基本的に 20~50ms 程度発生すると思っていいでしょう。

垂直同期の種類

筆者は Nvidia のグラフィックボードしか使ったことが無いため Nvidia 限定の機能も含んだ説明になりますが、Nvidia では遅延を少なくした垂直同期が開発されており、GTX600 番台で「Adaptive VSync」が導入され、その後更にアップグレードされた「G-SYNC(専用ディスプレイが必要)」が導入されています。
その後アーキテクチャ Pascal の GPU(GTX1000 番台)の登場と共に「FAST SYNC」が導入されました。
最新のドライバを入れていれば、Pascal より前の世代の Maxwell 以降であれば FAST SYNC が選択できます。
コントロールパネルの設定では、
Adaptive VSync が「適応」
FAST SYNC が「高速」

Adaptive VSync は 60Hz のディスプレイであれば、60fps 以上のときは垂直同期オンの動作をし、下回る場合はスタッタリングを防止するために垂直同期オフの動作をします。
遅延の面で見れば垂直同期オンより多少レイテンシは良いが、ほぼオンの状態に近いと言えます。

FAST SYNC はゲームエンジンに対して垂直同期オフの認識をさせ、実際には出力側が垂直同期を取る技術です。
垂直同期がオフなのにテアリングを抑えて低レイテンシを実現するというものです。
現在の主流の設定で、垂直同期オフ設定を時代遅れに追いやったほどです。

FAST SYNC 垂直同期の設定とテアリングや遅延の対策

これら二つの新技術ではない古くからある標準のの垂直同期は、グラフィックドライバ側でオンにするのとゲーム側でオンにするのでは違った結果になるゲームが多いことも知っておいて下さい。

グラフィックドライバとゲームオプションの設定

最初に覚えて頂きたいのは、フルスクリーンモードとウィンドウモードで垂直同期の動作が違うということです。
ボーダーレスウィンドウはウィンドウモードの見た目が違うだけだと思っていいです。
フルスクリーンモードは特に気にすることは無いのですが、ウィンドウモードは色々と知っておく必要があります。

グラフィックドライバで垂直同期をオンにしても、ウィンドウモードには反映されないゲームがあります。
ウィンドウモードではゲーム側で強制で垂直同期がオンになるゲームがあります。
どういうわけか、ウィンドウモードにしただけで遅延やテアリングが軽減されるゲームが多くあります。

では具体的に手順を説明します。
流れとしては遅延優先で進めます。

グラフィックドライバの設定の「トリプルバッファリング」は、垂直同期オンのときに機能する項目で、映像を更に滑らかになることを目的としたものですが、遅延の増大につながります。

レンダリング前最大フレーム数は垂直同期オンのときだけ影響のある項目で、滑らかに画面を動かすために必要な項目です。
単純に数値が増えると1につき1フレーム遅延します。

まず最初にベースとなるグラフィックドライバの設定を以下のようにします。

垂直同期:3Dアプリケーション設定を使用する
レンダリング前最大フレーム数:3Dアプリケーション設定を使用する
トリプルバッファリング:オフ

と設定し、ゲーム側のオプション設定は、

垂直同期:オフ
FPS 固定:無し

に設定します。

これで最も遅延の無い設定となりますが、まずはこの設定でプレイしてみて下さい。
恐らくこの状態では表示がめちゃくちゃで、遅延でスコアが云々以前にまともにプレイできない状態だと思います。
ブラウン管ディスプレイの時代ならこれで何の問題もなくヌルヌル表示されたのですが、液晶ディスプレイではテアリングやスタッタリングでめちゃくちゃになります。
この状態で長く続けると3D酔いや目が疲れる人が多いので無理しないで下さい。

もしこの状態でも表示に問題なくプレイ可能だという方はこれでも良いのですが、この設定の問題点として GPU がフル稼働で消費電力が高いため発熱も上がり、グラフィックボードの寿命(コンデンサなど)も縮まります。

次に上の設定のままゲーム内の設定で FPS を固定の項目があるゲームならばその項目を固定します。
固定の項目があるのであれば数値の設定欄もあるはずなので、自分のディスプレイのリフレッシュレートに合わせた数値を選択します。
先ほどの状態と比べたら驚くほど改善されると思います。
この段階から無駄なフル稼働状態ではなくなり、寿命の面の問題は無くなります。
基本的に垂直同期オフを推奨する人はこの状態のことを言っています。
この段階で映像の乱れを妥協できるという人も多いと思いますが、それでもヌルヌルというレベルではありません。
支障のある乱れかどうかは、FPS ゲームであれば視点をグルグル動かしながら一人の NPC などを見続けます。
目で追い続けれるなら支障のない範囲の乱れで、見失うようであれば支障が出るレベルで滑らかさが足りてないことになり、遅延よりも大きなスコア低下につながります。

上の設定ではだめだった方は、この段階で垂直同期をオンにする以外に選択の余地が無くなります。
最初に試すのはグラフィックドライバの設定で垂直同期を「高速」にします。
高速が無い環境であればこの手順は飛ばします。
この時点で大半の人は問題ないと思います。
少しでも映像の乱れが気になる場合は次に進みますが、遅延が気になるようであればこの設定に戻すといいでしょう。
まだダメなら更にトリプルバッファリングをオンにします。
変化が無ければトリプルバッファリングをオフに戻します。

次に試すのはグラフィックドライバの設定で垂直同期を「適応」にします。 ダメなら更にトリプルバッファリングをオンにします。
変化が無ければトリプルバッファリングをオフに戻します。
垂直同期の設定も「3Dアプリケーション設定を使用する」に戻します。

次はゲーム側で垂直同期をオンにします。
これで完全にヌルヌルになったはずです。
テアリングは間違いなく解決してるので、これでもカクつくのであればスペック不足なのでグラフィック設定を下げる必要があります。
もしゲーム側に垂直同期の項目が無いのであれば、グラフィックドライバの設定で標準の垂直同期をオンにします。

後は遅延対策をトライすることになりますが、レンダリング前最大フレーム数を試します。
基本的に「3Dアプリケーションの設定を使用する」を選んでおくのが確実なのですが、自分で数値を決定することもできます。
単純に1にすればよいのかと言えばそうでもなく、ゲームによっては2でなければ起動しないとか FPS がガタ落ちになるとかといった場合もあるので、1ずつ変えてテストする必要があります。

ディスプレイの性能と設定

遅延に関係します。
一般的には 60Hz のディスプレイですが、ゲーミングディスプレイなどでは 120Hz や 144Hz のものもあり、可能な限りの最大表示速度で設定しておけばよいですが、特に設定項目は無く最大速度固定のものが大半です。
垂直同期の遅延云々以前に、ディスプレイ自体の遅延に関連する項目の設定が先なので、オーバードライブなどの関連する項目をしっかり設定しましょう。
メインはオーバードライブの設定ですが、他にも補正をかける機能は遅延を生み出すものもあるので、とりあえず全部オフと全部オンで比べてみて、差が生まれるようなら個別に設定しながら調整していくとよいでしょう。
ディスプレイに関する詳細記事はこちら↓をご覧ください。

ディスプレイは用途とサイズが重要、おすすめの AMVA+ やゲーミングディスプレイ

OS の設定

そもそもWindows Vistaや7や8には遅延を引き起こす問題があり、それらをお使いの人は先にその対策が必要です。
「遅延 Aero」などで検索すると対策を紹介している記事が出てくると思うので、ここでは省略します。
Windows10 ではその問題はありませんので、最大プロセッサの状態が 100% になっていることを確認する程度です。
設定>システム>電源とスリープ>電源の追加設定>プラン設定の変更>詳細な電源設定の変更>プロセッサの電源管理
自作PCでゲーミングマザーボードなどを使っている人は、付属のユーティリティなどでゲーム中に余計なことをして遅延を生み出すものもあります。
プレイの補助ツールタイプのユーティリティには特に注意しましょう。

マウスの性能と設定

遅延には大きく二種類あり、敵の動きなど目で追うものと、自分のキャラクターを操作したときの反応に分けられます。
後者の方はマウスの設定も影響します。
ゲーミングマウスなどは Input に関する設定が行えたり、マウスに設定が無くてもゲーム内のオプションに設定があることもあります(GTA5など)。
主に、
標準 (WM_MOUSEMOVE)
Raw Input (WM_INPUT)
の2種類から選べることが多く、大きな違いは標準では OS を経由し OS のマウス設定が反映された入力になるのに対し、Raw Input は OS の設定を無視して直接入力になることです。
当然 Raw Input の方がゲームに適していますが、ゲーム内でマウス感度の設定が行えるのが大前提です。
標準タイプは当然遅延が発生することになります。
Direct Input という方式もあり、これは DirectInput API を使用して動かすものですが、ゲームパッド(コントローラー)の Direct Input と同じ要領で動くものだと思えばよいです。
標準よりはいいですが、Raw が選べるのであれば Raw、無いのであれば Direct といった感じです。

通信環境

遅延には直接関係ないのですが、極端な話、通信速度の方で2秒ラグがあったとすれば、垂直同期の設定でそれに0.1にも満たない遅れがプラスされたとしても違いは感じ取れないと思います。
結局は環境と感じ方に左右される問題なので、設定を決めるにあたって通信速度も関係してくるのです。
因みに回線契約時に基準とされる 1G などは回線の太さであって速度ではありません。
太さは動画をダウンロードするなどのサイズの大きいファイルの通信が早くなるという意味で、ゲームに必要なのは応答速度である Ping です。

コメント