ディスプレイのリフレッシュレートを設定する
更新日時: 2026/10/16
ディスプレイリフレッシュレートは、ヘッドセットの画面が1秒間に更新される回数を表します。リフレッシュレートが高くなると、フレームレートが高くなるため、アウトプットがより鮮明になり、彩度が向上します。ただし、リフレッシュレートが高いほど、アプリにはより短い時間で処理を実行することが求められます。
アプリのデフォルトのディスプレイリフレッシュレートは72 Hzです。それ以外のリフレッシュレートでアプリを実行したい場合は、アプリがそのレートを維持するのに十分なパフォーマンスで動作するようにする必要があります。目的のディスプレイリフレッシュレートで一貫したレンダリングができないアプリは、Meta Horizonストアの審査で不合格になります。そのようなアプリでは、ジャダー(映像のカクつき)や周辺部のちらつく黒い領域、その他のパフォーマンスに関連する問題を引き起こす可能性があります。
デバイスでサポートされているリフレッシュレートを取得する
ヘッドセットモデルによっては、ほかよりも高いディスプレイリフレッシュレートを設定できるものもあります。以下の表に、現在主に利用可能なリフレッシュレートを示します。
| デバイスモデル | 60 Hz | 72 Hz | 80 Hz | 90 Hz | 96 Hz | 100 Hz | 120 Hz |
|---|
Quest | メディア アプリのみ | ✓ | - | - | - | - | - |
Quest 2 | メディア アプリのみ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Quest Pro | - | ✓ | ✓ | ✓ | - | - | - |
Quest 3 | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Quest 3S | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Meta Quest 3では、OpenXR 1.0.63、1.1.63、またはそれ以降のパッチバージョンを対象にビルドされたアプリの場合、サポートされているリフレッシュレートのリストに96 Hzと100 Hzが含まれます。古いバージョンでビルドされたアプリでは、リストに表示されていなくても、これらのレートをリクエストすることができます。詳しくは、
古いバージョンのOpenXRを対象にビルドされたアプリをご覧ください。
60 Hzはメディアプレイヤーアプリでしか使用できません。60 Hzは、30 FPSまたは60 FPSの動画をディスプレイリフレッシュレートと同期させて滑らかに再生する方法として提供されています。なお、メディアアプリではさらに高いリフレッシュレートを使用できます。ただし、リフレッシュレートがデバイスでサポートされていて、アプリのパフォーマンスが維持される範囲に限ります。メディアプレイヤー以外のアプリでディスプレイリフレッシュレートを60 Hzに設定すると、ストアの審査で不合格になります。
ヘッドセットの現在のリフレッシュレートを確認する方法
- Meta Horizonモバイルアプリで開発者モードを有効にします。手順については、開発者モードを有効にするをご覧ください。
- Meta Quest開発者ハブのデスクトップで以下の操作を行います。
- OVR Metricsツールをインストールします。手順については、Meta Horizonストアをご覧ください。
- 設定の歯車アイコンを選択し、フレームレートを表示するようにMeta Quest開発者ハブのMetrics Performance HUD Settings (指標パフォーマンスHUD設定)を設定した後、Average FPS (平均FPS)の2つのボックスにチェックを入れます。
デバイスでサポートされているリフレッシュレートのリストを取得する方法:
注: このAPIが返すリフレッシュレートをリクエストしてください。リストにないリフレッシュレートは、ディスプレイハードウェアで実行できる場合でも、ランタイムによって拒否されます。唯一の例外は、
古いOpenXRバージョンに対してビルドされたアプリに記載されています。将来のヘッドセットとの互換性を最大限に高めるには、上の表に記載されているリフレッシュレートを使用してください。
float[] freqs = OVRManager.display.displayFrequenciesAvailable;
アプリで72 Hz以外のリフレッシュレートを設定したい場合は、Androidマニフェストのサポート対象のデバイスのセクションに、このレートをサポートするデバイスを含める必要があります。Unity向けのMeta Quest統合は、Quest 2サポートの<meta-data android:name="com.oculus.supportedDevices" android:value="quest|quest2"/>をAndroidマニフェストファイルに自動的に追加します。ただし、カスタムのマニフェストファイルを使用している場合は、自分で確認する必要があります。
リフレッシュレートの設定方法
OVRPlugin.systemDisplayFrequency = 90.0f;
72 Hzより高いディスプレイリフレッシュレートが設定されたアプリで過熱イベントが発生すると、動的スロットリングの最初のステップとして、リフレッシュレートが72 Hzに下がることがあります。過熱状況が悪化すると、動的スロットリングの追加のステップが実行され、リフレッシュレートを維持しつつフレームレートが変更されることがあります(minVsyncs=2に相当)。
動的スロットリングによってリフレッシュレートが低下していることをアプリが認識して、何らかの方法で応答できるようにする場合は、OVRManager.DisplayRefreshRateChangedイベントを関数署名Func(float fromRefreshRate, float ToRefreshRate)を使って登録します。
OVRPlugin.systemDisplayFrequency = 90.0f;
OVRManager.DisplayRefreshRateChanged += DisplayRefreshRateChanged
private void DisplayRefreshRateChanged (float fromRefreshRate, float ToRefreshRate)
{
// Handle display refresh rate changes
Debug.Log(string.Format("Refresh rate changed from {0} to {1}", fromRefreshRate, ToRefreshRate));
}
アプリが動的スロットリングを処理する方法をテストする
より高いディスプレイリフレッシュレートにおける動的スロットリングをシミュレートできます。アプリの実行中に、adbシェルのアクティビティマネージャを使用して、インテントをブロードキャストします。例えば、次のコマンドは10秒間のスロットリングをシミュレートします。
adb shell am broadcast -a com.oculus.vrruntimeservice.COMPOSITOR_SIMULATE_THERMAL --es subsystem refresh --ei seconds_throttled 10
目に見える変化がアプリに見られない場合は、OVRPlugin.systemDisplayFrequencyを読んでリフレッシュレートの変更を確認できます。
Meta Quest 3のリフレッシュレートの拡張
Meta Quest 3は、120 Hzを超えるディスプレイリフレッシュレート(最大240 Hz)をサポートしています。これはMeta Quest 3に固有の機能です。Meta Quest 3Sおよびその他のヘッドセットでは利用できません。Meta Quest 3Sでは、120 Hzより高いレートをサポートしない別のディスプレイパネルが使われています。
拡張リフレッシュレートを使用するには、HorizonOS v2.7以降が必要です。
拡張リフレッシュレートは、Meta Quest 3に搭載されているディスプレイハードウェアによって異なります。将来のヘッドセットが120 Hzより高いレートをサポートすることを想定しないようにし、拡張レートをアプリ実行の必須条件にしないようにしてください。拡張レートのリクエストに失敗した場合、デバイスが報告するリストにあるレートにフォールバックします。
144 Hz、180 Hz、200 Hz、207 Hz (標準)
Meta Quest 3では、上記の標準APIを通じて144 Hz、180 Hz、200 Hz、207 Hzをリクエストできます。その際に追加の設定は不要です。OpenXR 1.0.63、1.1.63、またはそれ以降のパッチバージョンを対象にビルドされたアプリの場合、デバイスが報告するサポートされているリフレッシュレートのリストには、96 Hzと100 Hzに加えてこれらのリフレッシュレートも含まれます。207 Hzは、システムがフル解像度でデータのフルフレームをディスプレイに配信できる最大レートです。
120 Hzより高いその他のレートは、標準APIでは利用できません。
古いOpenXRバージョンに対してビルドされたアプリ
Meta Quest 3では、1.0.63より前のOpenXR 1.0、または1.1.63より前のOpenXR 1.1を対象にビルドされたアプリの場合、サポートされているリフレッシュレートのリストには、72 Hz、80 Hz、90 Hz、120 Hzしか表示されません。すでにリリースされているアプリが引き続き動作するよう、ランタイムでは、96 Hz、100 Hz、144 Hz、180 Hz、200 Hz、207 Hzのリクエストを引き続き受け付けます。リストにないレートは拒否されます。
新規開発では、OpenXR 1.0.63、1.1.63、またはそれ以降のパッチバージョンを対象にビルドし、デバイスから報告されるリストに含まれるレートのみをリクエストしてください。
207 Hzを超えるリフレッシュレートの場合、フル解像度のフレームがディスプレイへの転送に利用可能な帯域幅を超えるため、表示スケーリングが必要になります。開発者モードを有効にしてから、次の両方のコマンドを実行します。
adb shell setprop debug.oculus.forceDisplayScaling 1
adb shell setprop debug.oculus.refreshRate 240
最初のコマンドは、表示スケーリングを有効にします。フレームは低解像度でレンダリングされ、より小さなペイロードとしてディスプレイに送られ、ディスプレイハードウェアによってパネルのネイティブ解像度にアップスケールされます。小さなペイロードは、240 Hzで利用可能な帯域幅に収まります。
2番目のコマンドはターゲットのリフレッシュレートを設定します。72から240までの整数を指定できます。
表示スケーリングでは、画質と引き換えに必要な帯域幅を抑えます。アップスケールされた画像は、ネイティブでレンダリングされたフル解像度の画像と同一ではありません。違いは、小さいテキストや細いジオメトリなどの細部に現れます。
両方のプロパティをリセットしてデフォルトの動作に戻すには、次のようにします。
adb shell setprop debug.oculus.forceDisplayScaling ''
adb shell setprop debug.oculus.refreshRate ''
拡張リフレッシュレートでは、知覚されるモーションブラーが変化します。各フレームの表示時間が短くなるため、長時間フレームで動く物体を追跡することによる不鮮明さが軽減されます。この変化は、明るいオブジェクトが暗い背景を横切って移動する場合など、コントラストの高い場面で最も顕著に現れます。コンテンツを実際に配信するときのレートでモーションをテストしてください。結果はシーンのコントラストやモーションの速度に応じて異なってくるからです。
リフレッシュレートが高くなるほど、アプリが各フレームを生成する時間は短くなります。各レートのフレームバジェットは次のとおりです。
| リフレッシュレート | フレームバジェット |
|---|
72 Hz | 13.9ミリ秒 |
90 Hz | 11.1ミリ秒 |
96 Hz | 10.4ミリ秒 |
100 Hz | 10.0ミリ秒 |
120 Hz | 8.3ミリ秒 |
144 Hz | 6.9ミリ秒 |
180 Hz | 5.6ミリ秒 |
200 Hz | 5.0ミリ秒 |
207 Hz | 4.8ミリ秒 |
240 Hz | 4.2ミリ秒 |
240 Hzでは、アプリのフレームバジェットは72 Hzの場合の3分の1未満になります。この予算に達しないアプリはジッターが発生し、レートを上げた意味がなくなってしまいます。延長されたリフレッシュレートは、ライトシーンをレンダリングするアプリに適しており、低遅延とスムーズなモーションが求められるリズムゲーム、対戦型シューティングゲーム、スポーツやレーシングタイトル、シンプルなハイコントラスト環境などで活用できます。シーンが密集しているアプリ、後処理が多くかかるアプリ、ドローコールの数が多いアプリは適していません。
動的スロットリングは、72 Hzを超える場合と同じように、拡張レートで適用されます。