コラム FF2400.jp ゲームの紹介とレビュー
レンダリング前最大フレーム数や垂直同期の話 --FF2400-- ゲームのレビュー・紹介

レンダリング前最大フレーム数や垂直同期の話
2010年3月
今回はPCゲームの話です。
『レンダリング前最大フレーム数』というのが最近になって話題になっています。
これはずいぶん前からグラフィックボードのドライバ・コントロールに搭載されていた機能でした。
ソフトウェアの開発者は当たり前のように知っていたのかもしれませんが、そうではない人たちが見直さなかったのかもしれませんね。
話題になった経緯は遅延の存在でした。
『レンダリング前最大フレーム数』の設定によって、キー入力から画面に反映されるまでに時間差(ラグ)が存在するため、シビアな入力が要求される対戦ゲームでは致命的ではないだろうかというわけです。
これが本当だとしたら一大事です。
今まで私たちは遅延が当たり前のように存在する状況でゲームを行っていたと言うことも意味するからです。
では、本当に遅延はあるのか、そして『レンダリング前最大フレーム数』についての話をしていきましょう。
なお、OSにウィンドウズXPを使用するときの話をしています。
Vistaや7のAeroについてはまったく触れていません。

ゲームにおいて遅延があるかどうかを調べるのに私が使っている方法があります。
それは、往復運動をくりかえすということです。
一番簡単な例はキャラクターを左右に動かすだけ。
このときシューティングゲームのような単純で動きが分かりやすいものを利用するのが望ましいです。

キャラクターを左右に振ります。上下でも斜めでも構いません(画像は式神の城III)

実はレンダリング前最大フレーム数による遅延は垂直同期がオンの場合にのみ発生します。
これだけは確かです。
以前私は日記でオフの状態でも遅延があるといっていましたが、あれはプラシーボ効果でした。
本当にすいません。


『レンダリング前最大フレーム数』はNvidiaならばグラフィックボードのコントロールパネルに存在し、0から8までの数値に分かれています。
初期値は3ですが、わかりやすくするために、1と8の数値で、それぞれ垂直同期をオンとオフの状態に分けて実験してみました。(0は起動しなかった)
使用したゲームはカウンターストライク:ソースです。

レンダリング前最大フレーム数 垂直同期の有無 遅延
1 オン ほとんど感じない A
1 オフ 感じない
8 オン 感じる
8 オフ 感じない

Aについては私が鈍くて遅延を感じなかったので、こういう表現にしてあります。
ここからわかることは垂直同期をオンにすることで遅延が発生するということです。


遅延が発生する『レンダリング前最大フレーム数』が設定されている理由ってのは何でしょうか。
これはゲーム(アプリケーション)のフレームレートを出来るだけ高い数値で維持し、滑らかに画面を動かすための項目です。

ダブルバッファリングという技術があります。
画像を表示する際に滑らかに描画するために使われる手法です。
先の状況を読んで予め画面を作っておき、それを組み合わせて順次映し出していきます。
いわば、ダブルバッファリングを使用しているときはPCが作り出した映像のコピーを、私たちはモニターを通して見ています。
何度も述べていますが、ダブルバッファリングの利点は滑らかに画像を映し出せることです。
カクカク感をなくすために使われています。
そして『レンダリング前最大フレーム数』は、いくつのフレームまでダブルバッファリング用に予備の画面を用意するかというのを設定する項目だと考えて良いでしょう。

実はダブルバッファリングというのは、違う名前でゲーム内の設定として使われてもいます。
もうわかりますね。
これが垂直同期(Vertical Synchronization 略称はV-syncなど)なのです。
垂直同期はゲーム内のfpsをモニターの画面更新周期と同一にし、滑らかに描画させたいときに使う設定ですね。
ほとんどのPCゲームに使われています。
ダブルバッファリングの際に、予め用意した画面を送り出すタイミングをモニターの更新周期と同じにすることを垂直同期と言います。
これを使うことによって画面のちらつきなどを押さえ、滑らかな画像を映し出すことが出来るのです。

しかし、垂直同期をオンにすると遅延が発生します。
これは大きな問題でもあります。 遅延という観点でいえば、垂直同期はできる限りきっておくのが望ましいといえます。
どうしても垂直同期オンの滑らかな画像で遊びたい人は『レンダリング前最大フレーム数』を低くしておかないとゲームに支障が出ます。
ただゲームによっては強制的にオンとなるものや、垂直同期と別にダブルバッファリングが設定されているのもあるようですから、できるだけ低い数値に設定するのが理想ですね。

テクスチャーの張り遅れはダブルバッファリングがないと起こりやすいとか。

ではどの数値が適当なのでしょうか。
今回はFarcry2のベンチマークを走らせてみました。
設定はほぼAll、垂直同期はオフです。

レンダリング前最大フレーム数 平均フレームレート
1(最も遅延のない設定) 32.5
2 53.5
3(初期設定) 58.5
5 58.6
8(最も遅延のある設定) 58.7
1(再測定) 32.6

巷でも一番だと言われている2が最もバランスがいいとわかります。
しかし環境によっては(お使いのPCによっては)結果が変わることも十分にありえますので、そこはまぁ、柔軟に対処してください。

設定の方法は簡単です。
Nvidiaコントロールパネル→3D管理の設定→レンダリング前最大フレーム数。これで設定の場所に行けます。

RADEONは「ATi Tray Tools」というのを入れて使うと同じことができるみたいです。

長くなりましたが、まとめに入りましょう。
何も難しいことはありません。

まず、垂直同期は特別な理由がない限りオフにする
垂直同期が切れないゲームもあるので、『レンダリング前最大フレーム数』はできるだけ低い数値である2にする。

こんなところです。
外部のリンクにも興味深いことが書いてあるので、参考にしてください。
外部リンク。
Windows7/Vistaがゲーマーから避けられる要因
http://www2.tky.3web.ne.jp/~yosshin/prog_memo/latency/091029.html