西川善司のグラフィックスMANIAC
VRR=Adaptive-Sync=FreeSync=G-SYNC。ゲームで重要な可変フレームレートについてまず知るべきこと
2024年12月27日 06:27
今回から数回にわたって、「VRR/Adaptive-Sync/FreeSync/G-SYNC」を扱っていく。これらは、可変フレームレート映像を美しく表示する技術として提唱され、新しめのモニターやTV機器には当たり前のように採用が進んでいるし、今やPCのみならず、PS5やXbox Series X|Sといった家庭用ゲーム機にも搭載されるほど一般化した。
用語としては認知の進んだ「VRR/Adaptive-Sync/FreeSync/G-SYNC」であるが、「正しい使い方がよく分からない」という話が、筆者のYouTubeチャンネルにしばしば寄せられることもあるので、このシリーズ第1回となる今回は、「映像表示技術」にまつわる基礎知識を解説していきたい。
30fpsと60fpsに縛られてきたゲーム映像
ご存じのように、ゲーム映像はGPUによって描画(生成)されており、その1秒間の映像コマ数を「フレームレート」と呼ぶ。
一方で、ごく一般的なモニターやTVなどの映像機器では毎秒60回(60Hz)の映像表示が行なえるような設計となっている。これを「映像更新頻度」の意である「リフレッシュレート」と呼ぶ。
一般的には「ゲーム映像のフレームレートとモニター側のリフレッシュレートを合致させてゲーム映像を表示する」ことが最もオーソドックスな「ゲーム映像の表示のスタイル」となっている。
ゲーム機やGPU側が安定したフレームレートで映像を描画・出力できる場合、フレームレートは固定化されるので、この状態を「固定フレームレート」と呼ぶ。対して、フレームごとにGPUの描画時間が変動し、フレームレートが安定せず上下する状態は「可変フレームレート」と呼ばれる。
では、モニターやTV側に「可変フレームレート」に対応するための「可変リフレッシュレート」の仕組みあったかと言えば、答えは「NO」。2010年代の近代になるまで、モニターやTVのリフレッシュレートは、固定化されて運用されてきた。
モニターの世界では、古くはブラウン管モニター時代に75Hz、85Hz、100Hzといったリフレッシュレートに対応した製品は存在したが、可変ではなく固定のリフレッシュレートとなっていた。そう、一度設定したらそのリフレッシュレートに固定化されて運用することになる。
一方、TVのほうは日本や北米などでは60Hz(59.94Hz)の固定リフレッシュレートが基本となっており、家庭用ゲーム機がTVとの接続を前提していたこともあり、多くのゲームは60fpsで設計され、60Hzの固定リフレッシュレートで表示されるパターンが多かった。今もまだ主流だと言えるかもしれない。
一部の映像表現の凝ったゲームでは、GPUによる描画が60fpsでは間に合わず、60fpsの半分である30fpsのフレームレートでゲーム映像を設計する場合がある。
この場合、用意できる映像は1秒間に30回となるが、リフレッシュレート60Hz固定のモニターに対してゲーム機側からは同じ映像を2回伝送することで(モニターからしてみれば同じ30fps映像を2回表示することで)、リフレッシュレート60Hzのモニターで違和感なく表示させることができる。
もちろん30fpsの場合、秒間のコマ数が60fpsの半分になっているので映像のスムーズさは低減してしまうが、「おかしな表示にはならないし、まあそれは仕方なし」と妥協することになる。
こうした理屈で、30fpsのゲーム映像は、ちょうど60fps(60Hz)の2分の1なのでリフレッシュレート60Hz固定の一般的なモニターでも不整合を生じずに表示が行なえるのである。
同じ理屈で、20fpsは同じ映像を3回、15fpsでは4回表示すればリフレッシュレート60Hzシステムにおいて不整合なく美しい映像表示が行なえる。
実際、90年代(あるいはそれより前の時代)には、そんなフレームレートのゲームも存在したが、2000年代に突入してからは、ゲーム業界においては「違和感のないプレイ」が楽しめる下限を30fpsと想定するようになり、一部の例外を除けば20fps以下のフレームレートで設計されたゲーム作品は激減した。
そして、60fps(60Hz)の2倍の120fpsの場合は、1秒間60回やってくる表示機会において、ゲーム機(GPU)は、2倍の映像フレームの描画を行なえてしまうわけだが、GPUが用意した毎秒120コマの映像のうち「2回に1回」表示すれば、リフレッシュレート60Hzシステムにおいて60fps映像として表示できることになる。同じ理屈で180fps(60fpsの3倍)、240fps(60fpsの4倍)も、表示自体は60fps(60Hz)になってしまうが、おかしな表示とはならない。
垂直同期オンで発生するスタッター現象
GPUが十分に高性能で、たとえば100fpsで描画できていたとしても、60fps以外のゲーム映像は、昔ながらの「リフレッシュレートが60Hz固定」の一般的なモニターでは、「60fpsの整数分の1」(あるいは整数倍)のフレームレートの映像しか美しく表示できない。
どうして美しく表示できないのか?これを理解するには垂直同期の概念を理解する必要がある。リフレッシュレート60Hz固定のモニターでは、1秒間に60回、映像表示開始の機会がやってくる。なので、ゲーム機は映像を美しく表示させるために、モニター側の「表示開始の機会」のタイミングと同調する仕組みを実践している。
たとえるならば、毎秒60回で回っている「縄跳びのナワ」に対し、ちょうど頭上に来た「縄跳びチャンス」(≒映像送出タイミング)の時にだけ、ナワを飛び越える(≒映像を送出する)と、ナワを引っ掛けることなく、映像が画面に出現する……そんなイメージだ。
このゲーム機(GPU)の映像生成サイクルを上限60fpsとし、モニターが固定リフレッシュレート60Hzの表示タイミングを完全に同調させる表示スタイルを「垂直同期オン」と呼ぶ。
ここで、あるゲームの映像を描画しているGPUが、1フレームを60fps相当の16.67ms(≒1/60秒)で描画できているときと、50fps相当の20ms(=1/50秒)かかってしまったときがあるとする。この映像が、リフレッシュレート60Hzのモニターに表示されるケースを考えてみよう。
このGPUが、ある映像フレームの描画に20ms(=1/50秒)かかったとすると、この映像フレームの表示はリフレッシュレート60Hzの16.67ms表示サイクルに間に合わないことになる。
間に合わないときは、それまでに表示している映像フレームが再び表示されたままとなり、新しい映像フレームが表示されるのは、リフレッシュレート60Hzの「次の表示サイクル」になってからになる。
このとき、GPUはそのフレームの描画に20msしかかかっていなくても、60Hzの表示サイクルに1回分、乗り遅れていることから、この「表示が間に合わなかった瞬間」のフレームレートは30fpsになってしまうわけだ。
当然、動画としてのスムーズさは失われることになり、プチフリーズのような“カク付き”として体感される。これが下図に示す「スタッター現象」(Stutter)である。ちなみにスタッタリングとも呼ばれる。
そして、GPUは50fps(20ms)で描画できていても、表示サイクルとしては瞬間的に30Hz(30fps)にまで落ちてしまうのだから、プレイヤーからすれば、入力デバイス(コントローラ等)の操作反応が1フレーム時間(16.67ms)遅れるような体感となる。そう、遅延を感じることになるのだ。
垂直同期オフで発生するテアリング現象
この映像機器側の60Hzの表示サイクル「待ち」(垂直同期)は、それを無視する「垂直同期オフ」状態にすると、60Hzの表示サイクルを待たずにすぐに表示を仕掛けられるようになるので、この遅延を排除できるようにはなる。
しかし、これはこれで面倒なことが起こる。液晶や有機ELのような近代映像パネルベースの映像機器になっても、映像信号は映像の上部から順番に1次元的なデータ構造でストリーム伝送で送られており、映像表示の際には、これを画面上端から1ラインずつ順番に表示している。
なので、垂直同期オフでは現在の画面の上端から映像を1ラインずつ表示している途中のどこかからか、GPUが描画を完了したばかりの最新の映像フレームが表示されてしまうのだ。
結果、画面に表示される映像は「画面の上で前フレームが表示され、画面の下で最新フレーム」という、キメラ映像となる。どこで「分断が起きるか」は、GPUが最新映像を描画し終わったタイミングによってまちまち。実質上のランダム位置になる。これが「テアリング現象」(Tearing)である。
余談だが、「涙」(Tear)は“ティア”に近い発音だが、「引き裂く」(Tear)は“テア”に近い発音になる。件の「テアリング現象」のTearは後者の「引き裂く」のほうの意なので、カタカナ表記では「ティアリング」ではなく「テアリング」のほうがよいとされる。
GPUが十分に高性能ならすべての問題を解消できる方法があるって知ってた?
NVIDIAとAMDは、こうした「スタッター現象」と「テアリング現象」に対して、ソフトウェア的な対策を提唱しているので、本題の「VRR/Adaptive-Sync/FreeSync/G-SYNC」の解説に行く前に、それらを簡単に紹介しておこう。
NVIDIAは2016年、AMDは2019年に、ユニークなソフトウェア的な対処技術を提案している。それがNVIDIAの「FastSync」、AMDの「EnhancedSync」だ。
この「FastSync/EnhancedSync」技術では、GPUの表示システムをハードウェア的には「リフレッシュレート60Hz固定の垂直同期オン状態の表示システム」に従う形で駆動させるものの、GPUの描画システムについては、「垂直同期オフ状態」扱いとして、フレームレートの上限を無制限として描画させる。
一方、モニター側としては、たとえばリフレッシュレートを60Hz固定のままで動作させる。
このとき、GPUが十分に高速であれば、モニターのリフレッシュレートを遙かに超えて、どんどん映像フレームが描画できていってしまう。それこそ、次の60Hzの表示サイクルがやってくるまでに複数フレームが描画されてしまう。
しかし、モニターのリフレッシュレートは60Hzのままなので、どんどん描画される映像フレームは表示する術もない。なので、次の60Hzの表示サイクルがやってくるまでに描画された映像フレームはすべて破棄してしまうのだ。なんという贅沢な!
表示を行なうのは、次の60Hzの表示サイクルがやってきたときに表示待ちとなっている最新のフレームだけとするのだ。
この技術のいいところは、まずそもそも垂直同期オン状態で動作する技術なので、垂直同期オフ時に発生するテアリング現象は起こりえない。
そして、垂直同期オン時にも関わらずフレームレート上限制限をしないため、プレイヤーのゲーム操作を反映した映像フレームが最短時間で表示されることになり、結果として、入力遅延感も低減される。
もちろん、GPUが100fps描画していても、表示は60fpsとなるので、事実上コマ落ちはしているのだが、プレイヤーの入力は100fpsサイクルで行なわれ、表示だけが60fpsになる、というイメージで理解してもらってもいいだろう。
なお、可変フレームレート状態においても、その可変フレームレート値が、リフレッシュレート60Hzを十分に超えていれば、上記の恩恵は問題なく受けられる。
しかし、その可変フレームレート値が、リフレッシュレート60Hzを下回っていた場合は、普通に「垂直同期オン時の低フレームレート表示」と同じ表示メカニズムとなってしまうため、遅延が発生するしスタッター現象は起きてしまう。
なので(テアリングは起こりえないものの)、完璧なスタッター解消技術にはなっていない。モニターのリフレッシュレートを、GPUのフレームレートが確実に上回るときにしか功を奏しない技術ということだ。
あまり、積極的に活用するべき機能でもないような感じもするが、「GPUは高性能だが、モニターが昔ながらのリフレッシュレート60Hz固定のモニターを使っています」というような環境では最大の恩恵が得られるので、この条件に該当するユーザーは試してみる価値はある。
なお、本稿では説明の流れの都合上、「リフレッシュレート60Hz固定のごく一般的なモニター」を想定した解説を行なってきたが、「FastSync」や「EnhancedSync」自体は、リフレッシュレートが60Hz以上でも成立する技術である。
なので、たとえばGPUが十分に高性能で、常時200fps級の描画が可能だが、所有しているモニターのリフレッシュレートが120Hzだという場合、この一連の機能の恩恵は同じ理屈で享受できる。
この場合、同じ理屈でGPUの描画フレームレートが120fpsを下回ったとしても、60fps以上が維持できていれば、スタッターと遅延が発生しても、わずか8.33ms内(120fps時間内)なので体感上ではあまり気にならないかもしれない。
スタッター現象とテアリング現象を「ハードウェア的に解決する技術」の台頭
結局、このスタッター現象とテアリング現象を根本的に解決するためには、リフレッシュレートとフレームレートが一致しない状況下において、フレームレートの変化に対して、モニター側のリフレッシュレートが連動できる表示メカニズムを、モニター側に実装することが必要なのだ。
ただ、「フレームレートが変動する状況」というのは、一般的な動画コンテンツにおいては必要性が低く、言ってみれば、そんな状況が起こるのはゲーム映像くらいしかない。ということで、モニター/TVの業界が、わざわざゲーム業界のために「新しい表示メカニズム」の規格化に乗り出すことはなかったのだ。
しかし、2013年に風雲児が登場する。それが、NVIDIAだ。NVIDIAは2013年に、GPUの映像出力に連動した映像の表示メカニズムとして「G-SYNC」を発表する。
これはモニター側に特別なインターフェイスチップ(以下、G-SYNCチップ)を組み込むことで、あらゆるフレームレートの映像を従来の「固定されたリフレッシュレート」に縛られずに任意のタイミングで表示する技術であった。
このG-SYNCチップにより、映像送出元主導の表示が行なえるようになるため、可変フレームレートの映像表示の際にも、前述のテアリンクもスタッターも起こさないようにできるわけである。
実際のところ、40fpsや50fpsの映像は、30fpsよりもフレームレートが高いのであるからして、30fpsよりスムーズに見えるべきだ。40fpsや50fpsといった映像が、30fpsの映像よりカクカクして見えることをよしとしていた過去の常識のほうが異常だったのだ。
G-SYNC技術では、それどころか30fps~60fpsの間でランダムにフレームレートが変わるような映像においてもなめらかに見せることを実現していた。PCゲーミング市場において、圧倒的なGPUシェアを誇っていたNVIDIAだからこそ、この問題に取り組めたのだろう。
一度扉が開かれると、このムーブメントは業界全体に波及していく。翌年2014年にはNVIDIAのライバルのAMDが、G-SYNCと同等の機能を果たす「FreeSync」という対抗技術を発表する。
単なる後追いかと思いきや、FreeSyncは既存の映像伝送プロトコルを改善、あるいは拡大解釈するだけで「G-SYNC的な可変フレームレート映像表示メカニズム」を実現させたアイデアだった。
そう、G-SYNCチップ的な特別な追加ハードウェアなしで、G-SYNC的な表示システムを実現してしまったのである。
なお、このFreeSync技術は同年に映像技術標準化団体VESA(Video Electronics Standards Association)に「Adaptive-Sync」として採用されることとなった。
こうして2014年から「美しい可変フレームレート映像表示技術」の「G-SYNC対FreeSync(Adaptive-Sync)」の戦いは始まったのである。このまま一気に普及するかと思いきや、G-SYNCもFreeSyncも、今ひとつ普及が進まなかった。
独自のG-SYNCチップを必要とするG-SYNCはゲーム向けディスプレイ製品としてはやや高価になることもあり、ディスプレイメーカーからは対応コストの安いAMD FreeSync(=Adaptive-Sync)対応製品のほうが多く販売されることとなった。
しかし、PC市場におけるGPUシェアはG-SYNC対応のNVIDIA製GPUユーザーのほうが上だった。こうしたねじれ構造もあってか「美しい可変フレームレート映像表示技術」の普及は、2010年代は今ひとつ進まなかった印象がある。
名前は違えどみんな同じ「VRR=FreeSync=Adaptive-Sync=G-SYNC Compatible」
そんな経緯の中、2019年にNVIDIAが自社GPU製品でG-SYNCだけでなくFreeSyncにも対応していく方針を発表する。
正確には、競合AMDの技術名を使うのははばかれたのか、FreeSyncへ対応するとは言わず、VESA名のAdaptive-Syncに対応する旨を発表したのであった。
いずれにせよ、このときが事実上の「美しい可変フレームレート映像表示技術のフォーマット戦争の終焉」と業界では受け止められている。NVIDIAにこの難しい(悔しい?)決断をさせたのはなんだったのか。それは、2017年12月に発表されたHDMI 2.1規格にあったとされる。
HDMI 2.1にはVRR(Variable Refresh Rate)と呼ばれる「美しい可変フレームレート映像表示技術」が組み込まれることとなったのだが、実はこのVRR、技術基盤はFreeSync(Adaptive-Sync)そのものなのであった。
そしてHDMI 2.1が普及加速していく流れの中で、さすがのNVIDIAも「うちはVRRには対応しません。独自規格のG-SYNCのみに対応します」とは言えなかったのだ。
以降、NVIDIAのG-SYNCプラットフォームは、事実上は「Adaptive-Syncと=FreeSync」と同等の「G-SYNC Compatible」を基本版として、その上位グレードをいくつか設定して差別化を図っている。最も高いグレード「G-SYNC ULTIMATE」は、NVIDIAの第3世代G-SYNCプロセッサを内蔵したG-SYNCシステムで、いわばG-SYNCの全部入りに相当するものになる。
具体的には、メインの「美しい可変フレームレート映像表示技術」のほかに、NVIDIAが監修した「高度なHDRトーンマップ制御技術」「バックライト制御」「画素の高速応答制御」などが搭載される。
次のグレードが標準G-SYNCプロセッサを搭載した“素”の「G-SYNC」で、「美しい可変フレームレート映像表示技術」に特化したものになる。最新版は入力遅延機能計測機能である「NVIDIA Reflex Analyzer」を搭載したモデルもリリースされている。
最もベーシックなのが、「G-SYNC Compatible」で、ドライバレベルでFreeSyncへの対応を果たすものになる。この場合、ユーザーのGPUがGeForce系で、モニターがFreeSync系であれば多くの場合は利用できることになる。万が一、できなかった場合でも、ドライバを最新版に変えるとできるようになることがほとんどだ。
そして2024年、NVIDIAは新たなG-SYNC技術要素として「G-SYNC Pulsar」を追加した。こちらはモニター側で可変フレームレート表示に連動した黒挿入を行なうことで、残像低減を狙う機能になる。これまでにも、黒挿入を行なうゲーミングモニターやTVは存在したが、これを可変フレームレート表示(≒可変リフレッシュ)に対応させて実践するのは筆者の知る限り業界初である。
ここまでを整理しよう。
NVIDIAの独自技術としての「G-SYNC」系技術は今も継続はされているが、実質的にはFreeSyncの「G-SYNC Compatible」が、ベースラインの機能として提供されているのが現状だ。
AMDは一連のフォーマット戦争に勝利した余韻に浸るべく「FreeSync」ブランドを推してはいるが、VESAがこれを「Adaptive-Sync」として採用しているので、「FreeSync=Adaptive-Sync」という図式になっている。
ちなみに、モニターによって機能名に「FreeSync」が使われていたり、「Adaptive-Sync」が使われていたりと、いろいろである。
そして、最後のHDMI 2.1規格で採用されたVRRは、技術基盤は「FreeSync=Adaptive-Sync」そのものなので、つまりは「VRR=FreeSync=Adaptive-Sync=G-SYNC Compatible」という理解で、ほぼ正しいことになる。
結局、「美しい可変フレームレート映像表示技術」の本格普及が進んだのは、HDMI 2.1デバイスの普及が始まってからになる。2020年にはVRRに標準対応したPS5やXbox Sereies X|Sの登場もこの流れに拍車を掛けたことは言うまでもない。
「VRR=FreeSync=Adaptive-Sync=G-SYNC Compatible」の実現手法
「VRR=FreeSync=Adaptive-Sync=G-SYNC Compatible」という方程式(笑)が導出されたところで、最後にこの技術がどのように実現されているのかについて解説しよう。
映像フレームの信号(データ)は、当該フレームの素性情報としてMSA(Main Stream Attribute)とともに伝送される。
毎フレーム、伝送される情報にはブランク(余白)領域を伴って送出されてくるが、あらかじめ想定されていたリフレッシュレートタイミングに表示が間に合わないフレームについては、ブランク領域を適宜引き延ばして、次の実体フレームの送出時間を稼ぐような制御が行なわれる。
そして、引き延ばされている間、以前のフレームの表示時間が継続されることになる。この裏技みたいな表示技術が「VRR=FreeSync=Adaptive-Sync=G-SYNC Compatible」の技術基盤になる。
物理的な映像伝送の仕組み自体はHDMIとDisplayPortで異なるが、論理的な仕組みはほとんど同じなので、送信元(トランスミッタ)と受信先(レシーバ)が、それぞれこの「裏技」の仕組みに対応した制御が行なえれば、「VRR=FreeSync=Adaptive-Sync=G-SYNC Compatible」の仕組みは、DisplayPortでもHDMIでも実現できるわけである。この裏技を最初に思いついた、AMDのエンジニアは天才と言っていい。
今回はここまで。次回は「VRR=FreeSync=Adaptive-Sync=G-SYNC Compatible」の実践的な使い方を見ていくことにしたい。