パソコンゲームでテアリングが出て困る!対策!
頑張って、パソコンでiRacingでレースゲームを始めたのですが、画面がギザギザして困っているので、悩んだ記録を残します。
現状
画面がギザギザになります。テアリングっていうそうです。
ギザギザの説明が難しいですが、お弁当に入っている緑のバランというか、指と指を右手と左手でお互いに挟む感じというか、くしを立てたときに、針のような部分が左向き、右向きに向いているような感じの映像になります。
特に、分かりやすいのが、レースゲームなのでコーナリングをしているときに発生して、景色が左右に流れるときに、横方向にギザギザになったり、カクカクしているような気がします。
設定状況は以下の通りです。
ゲーム側
垂直同期 オフ
FPS上限 60fps
画質 CPU、GPUが50%程度になるレベル。(Core i5 9600K+RTX2060なので、そこそこきれい)
NVIDIA側
垂直同期 高速(Fast SYNC)
FPS上限 60FPS
画質 フルパワー(たぶん。電源マックス)
対策案と原理
今回購入したパソコン、ディスプレイにはG-SYNCという、ディスプレイとGPUを完全に同期させる便利な機能がありません。安物なので。
かといって、手軽にV-SYNC(垂直同期オン)にするわけにはいきません。レースゲームは60fpsで走ってるなら、1コマが大事です。コーナリング中でも200km/hで走ることもあります。秒速だと…。1秒で55mも動きます。1/60だと1m近くズレます。1/30の画面だと2m弱。車の幅は広いものでも2m。コースアウトもあり得ます。逆に、昔のレースゲームはよく30fpsでプレイできていたなーって驚きです。
ということで、わたしはもう高速のFast SYNCを使っていますが。それでも問題が発生しています。なんで???
たぶん、設定が悪い
ディスプレイが60Hzなので、FPSも60にすればいいや、GPUの負担も減るし、と思って60FPSにしています。でも、実際には56~60、走行中だと59と60を行ったり来たり。ここがネックになっているんじゃないかなって思っていました。
Fast SYNCは、GPUのフレームレートが60以上の場合は60でピッタリ同期させてくれます。で、59以下になると、同期をしなくなって59fps以下で画像を排出します。
ディスプレイ側はというと、59fpsで排出された画像は、Fast SYCNはGPUが低FPSの場合はディスプレイに同期されないので、ディスプレイの60Hzの表示タイミングを無視してドンドン画像が送られてきます。一般的に言われる、テアリングです。中途半端にデータが残った状態で次のデータが下半分とか四分の一とか、中途半端にずれた画像として表示されます。
そのズレた位置もズレるので、ギザギザ画像になるんだと思います。
さらに、60Hzのディスプレイが画像の遅れを受けた場合、一気に半分の30Hzでの受けになるそうです。一瞬かもしれませんが、データの受けがうまくいかない場合、その一コマを飛ばしてしまうために30Hzになるそうです。こちらがコマ落ち、カクカクと呼ばれるスタッタリングです。コーナリング中だけ発生が露骨なのは、視線の横移動は負荷が大きくて、RTX2060の60%設定で負荷が少なくても、それでも少しだけ処理が遅れているんだろうと思います。
設定の計画
60fps制限の時に56fpsまで落ちることがありますので、余裕をもって70PFS以上にします。
だからって、120FPSを常用すると同期されないで余った画像は捨てられるので、もったいないのでほどほどにします。60の倍数ならいいのかな?とか思いますけど、まずは70から始めて、無駄がない範囲で上げて、画像が破綻しない+電気代の無駄にならない範囲で下げます。
ゲーム側
垂直同期 オフ
FPS上限 70~段階的に120fps程度でテスト
画質 CPU、GPUが50%程度になるレベル。120fpsで70%を超えないように。
NVIDIA側
垂直同期 高速(Fast SYNC)・ゲームはこれに従う設定で。
FPS上限 ゲーム側より多め?もしくは、こちらを上記の設定にする。
画質 フルパワー(たぶん。電源マックス)
効果
これにすることで、GPU側でディスプレイの60Hzよりも間違いなく高速な表示、演算ができるようにします。60Hzを下回ると、テアリングだけでなくスタッタリング(カクカクする)が発生するとのことなので、とにかく60FPSを下回らないようにします。なので、70から段階的に10fpsずつとか上げる予定です。
描画が早ければ、Fast SYNCで同期されるので、問題はありません。完全同期の場合は遅くなるのが間違いないので、それよりはOKです。70は60の倍数じゃないから心配だけど、とりあえずやってみる!
iRacingの場合、標準でFPS表示がオプション設定されているので、まずはここでテストします。
続いて、アセットコルサ、同じくコンペティツィオーネ、最後にrFactor2で設定します。
結果はまた改めてご報告します。
bokeboke