ゲーム機技術総合

興味を持ったことを書いていきます。

PS5のVRR。しかし問題が...

今回はPS5のVRRに関してです。

VRRとは

 

VRRとはVariable Refresh Rateの略称です。

機能としては調べてもらったほうが早いのですが、要するにゲーム側のフレームレートと連動してディスプレイ側のリフレッシュレートを変動させる技術です。

こうすることでテアリングやスタッタリングなどディスプレイ同期時に起こる問題を緩和できます。(フレームレートとリフレッシュレートの値が異なるとディスプレイ表示に問題が生じる。そのためVsyncなどで強制的にGPU-ディスプレイ間の同期をとる場合がある。)

またVRRを使えばVsyncで強制同期をとる必要がないので入力レイテンシの改善など副次効果が期待できます。(一応、VRRとVsyncは併用は可能。この場合はVRRの適応最大値以上のfpsが表示された場合のテアリングを抑えるのに有効だとされている。しかしVRRと120Hz対応ディスプレイが増えてきた中でわざわざVsyncをオンに意味があるかは微妙な話)

元々はPCゲーム関連のNvidiaのG-Sync、AMDのFreeSyncから始まり、さらにHDMI2.1の機能としてVRRが追加されたことによりCS機に同様の技術が下りてきました。

最近ではiPhone用のOLEDディスプレイにも可変リフレッシュレートが採用されたので業界全体のトレンドなのかもしれません。(iPhoneは120Hz動作と静止時の省電力性がメインでしょうけど)

 

PS5のVRR問題

youtu.be

しかし、PS5のVRRにはいくつかの問題があります。

一つ目ですがPS5のVRRの適応範囲が他機種に比べて狭いこと。この他機種というのはXbox Series(以下XS)のことを指します。

XSのVRRが適応されるリフレッシュレート帯は一般的に40~120Hzと言われています。

対してPS5のVRRが適応されるリフレッシュレート帯は48~120Hz

明確に差が表れていますが、これだけじゃありません。

二つ目の問題はPS5のVRRにはLFC(Low Framerate Compensation)が適応されてないということ。

youtu.be

LFCというのは名前の通り、低フレームレート時に補正を利かす機能です。具体的に言うとVRRの適応最低値以下の値までフレームレートが低下すると、リフレッシュレートを2.5倍以上まで上げることにスタッタリングやテアリングを抑えます。

例えば40fpsを割って30fpsまで落ち込んだとしても、リフレッシュレートを2.5倍の75HzまであげることによりVRRの適応範囲に収めることができます。またディスプレイのリフレッシュレート75Hzに対して30fps分のフレームを2.5倍間隔で差し込むことでフレーム同期を円滑に補正するイメージです。このためLFCを扱うには120Hzディスプレイが必要という訳です。

これにより実質的なVRRの下限値が広がります。XSの場合は20~120Hzの間でVRRが効くことになり、グラフィック優先の30fpsタイトルなどでも適応できるようになります。

youtu.be

上の動画はMSFS。30fpsタイトルにも関わらずVRRが効きまくってる。もちろんLFCの補正がガンガンに入ってます。

PS5がこの機能をサポートしてないのは意外でした。実際のところHDMI2.1準拠のVRRには元々LFCと呼ばれる機能はなかったとの噂がありますがこれについては確認できてません。一方で、VRRの直接の元になった呼ばれるAMDのFreeSyncには第二世代のFreeSync Premiumから正式に採用されています。

ちなみに三つ目の問題はPS5はXSと違いFreeSyncに対応してないこと。

これについては「VRRがあるから別になくてもいいじゃん」と言われるかもしれませんが、上記の通りHDMI2.1 VRRはLFCに対応してないということであれば、おそらくXSがLFCに対応してるのはFreeSyncの機能を間借りしてる可能性があります。(ちなみにXSはFreeSync Premiumまで対応してるとのこと)

要するにPS5がLFCに対応してないのはFreeSyncに対応してないからという説も十分にあり得ます。

 

 

インソム二アック製独自LFC

LFCがないことによりPS5のVRRは120fpsタイトルがメインで実装されていますが、自力でLFCを実装したスタジオが居ます。

あのインソム二アックです。

youtu.be

スパイダーマンラチェクラのFidelityモードで実装されましたが、安定したパフォーマンスを見せ、テアリングやスタッタリングは全く見受けられません。

では仕組み的にはどうなのか?おそらくは以前実装された40fpsモード応用したものだと思われます。

40fpsモードというのはインソム製タイトル内でグラフィック設定がFidelity、120Hz設定がオンの場合に有効化されるモードで、フレームギャップが30fpsだったのが40fpsまで上げられます。120Hzディスプレイにおいて40fpsというのは3倍表示の値になります。通常の30fpsよりもフレームレートが高く、60fpsほどではないが入力遅延が低下されるという正にいいとこどりな設定です。

ではどのようにして40fpsモードを応用したのか?

それについて説明する前にVRRオンFidelityモードの挙動を説明する必要があります。

何よりVRRという名にも関わらずリフレッシュレートの変動が限りなくないという点です。

Fidelityモードは元々、120Hz出力の恩恵を受けてるせいかリフレッシュレート自体は120Hzと固定のままですが、VRR適応時でもリフレッシュレートは118Hzからほぼ変動しないという謎の挙動を見せます。一応、0.1単位で変動してますがこれがのちの伏線です。

FidelityモードのターゲットパフォーマンスがVRR適用範囲外である為、リフレッシュレートが変動することがないという理屈で説明できなくはないですが、FidelityモードでもVRRが効いてるように見えてしまいます。LFCもないのにあら不思議ということです。

しかし、これは裏を返せばVRRが効いてるのではなく別の機能が動いてるという暗示でもあります。その候補がVRR適応外には40fpsモードに切り替えているということです。48fpsを下回った際には40fps固定モードに切り替えて安定したフレーム同期を行うように設定してるのかもしれません。要するにVRRと40fpsモードの切り替えです。

しかし、48fpsも出てるのにいきなり40fpsに強制切り替えは考えにくいです。

ですので、より発展させた自然なモデルを考えました。

40fpsモードは120Hzに合わせてフレームを3倍加させて同期表示させてると考えます。この考えが48フレームだったら2.5倍という数字で当てはまります。

実は2.5倍という値はLFCにおけるフレーム補正に必要な値の最低です。

フレーム補正に必要な値を2.5~3倍程度で考えると、おそらくそのフレームレートは40~48fpsという値です。

つまりVRR適応外時では、40~48フレームの間で可変fps動作、それに対してリフレッシュレートの2.5~3倍までのフレーム補正を行う独自のLFC機構を実装してると考えられます。0.1単位でしかリフレッシュレートが変動していなかったのは、41~47fpsのような場合にフレーム補完係数2.5~3を掛けたときにそれぞれ違った値が十分の一の値に現れるからということでしょう。ほぼ誤差のためその違いによるフレーム変化は感じられないと思います。

こう考えれば一応、LFCと似たような機能と言えます

PS5は実質40~120HzまでのVRRを手に入れることに成功したと言えるでしょう。

しかし、この独自LFCが導入されたのは今のところインソム製タイトルのみです。

同じファーストパーティ製のHorizon続編では40fpsモードは追加されましたが、このモードではVRRは適用されませんでした。もちろんパフォーマンスモードにはVRRが適用されてます。

youtu.be

またサードパーティでは一つも採用例がないため、普及させるためにはSIEがPS5のSDKに組み込む必要があると言えるでしょう。

正直な話ですが、普及しないと思いますね。これ自体普通にLFCに対応できてれば済む話でわざわざ面倒な機能を独自で実装するメーカーは居ないでしょう。

とくにXSは何もしなくてもVRRが効きますし、LFCのおかげで30fpsタイトルでも効果を実感できます。インソム方式最大の欠点は40fpsモードを念頭にゲームを最適する必要があるということです。