モバイル デバイス向けフレーム ペーシング

モバイル デバイス向けフレーム ペーシングの有効化とカスタマイズ

Frame Pacing (フレーム ペーシング) は、デバイスのネイティブ リフレッシュ レートより低いフレーム レートでフレームのレンダリングを行うよう、アプリケーションを制限するシステムです。この機能によりアプリケーションは、レンダリングの一貫性と安定性を優先して、フレームレートを制限しない実行よりもスムーズなユーザー エクスペリエンスを実現できます。In Unreal Engine 4 (UE4) のフレーム ペーシングは、プロジェクトの構成を記述する Device Profiles (デバイスプロファイル) を使用してデバイスごとに設定できます。

デバイスプロファイルでフレーム ペーシング設定を編集する

フレーム ペーシングは、対象のデバイスを記述した DeviceProfiles.ini ファイルの CVars で制御します。

  • iOS デバイスの場合は [/Script/IOSRuntimeSettings.IOSRuntimeSettings] でデバイスプロファイルを追加可能

  • Android デバイスの場合は [/Script/AndroidRuntimeSettings.AndroidRuntimeSettings] でデバイスプロファイルを追加可能

フレーム ペーシングを制御するパラメータを以下に示します。

パラメータ

使用方法

説明

FrameRateLock = [value]

FrameRateLock=True

True に設定すると、すべてのフレーム ペーシングを許可します。

bEnableDynamicMaxFPS = [value]

bEnableDynamicMaxFPS=True

True に設定すると、対応するデバイスで 120Hz を許可します。

4.24 以前で利用可能

rhi.synchinterval = [value]

rhi.synchinterval = 1

4.24 以前でフレーム ペーシングのリフレッシュ レートを設定する従来の変数で、1 の値を 60Hz のリフレッシュ レートとして扱います。

4.25 以降で利用可能

r.setframepace [value]

r.setframepace 30

r.setframepace 30 4.25 で iOS と Android に推奨する新しい方法で、リフレッシュ レートを指定する値に直接設定します。

a.UseSwappyForFramePacing = [value]

a.UseSwappyForFramePacing=1

デフォルトの設定は 0 で、この値を 1 に設定すると Android デバイス標準の UE4 フレーム ペーサーの代わりに、Google が提供する Swappy フレーム ペーシング ソリューションを有効化します。Swappy は UE4 フレーム ペーサーと同じ CVar を使用します。

高リフレッシュ レートのガイドライン

フレーム ペーシングの最大リフレッシュ レートは通常 60Hz に制限されていますが、bEnableDynamixMaxFPS を有効化するとこの制限を 120Hz に上げられます。60 Hz を超えるリフレッシュ レートをサポートするモバイル デバイスの例を示します。

  • Samsung Galaxy S20

  • OnePlus 7T

  • Google Pixel 4

  • iPad Pro 第 2 世代以降

Android 向け Swappy フレーム ペーシング

Unreal Engine 4.25 は従来のフレーム ペーシング システムに加えて、Android Game SDK で Google が提供する Swappy フレーム ペーサー を統合しています。

通常、Android ハードウェアはフレーム バッファーを使用して、フレーム準備遅延の検出時に過去のフレームを表示することで画面のテアリングを防止します。ところが、ゲームに使用するレンダラの多くがこのプロセスに対応しておらず、同調せずに表示したフレームよりも先に進みます。通常は入力のサンプリング後に遅延が発生するので、フレームの表示時間が大幅に変動し、タッチスクリーン制御で入力のレイテンシーが増大します。

Swappy はこの動作を安定させるために設計された Android 独自のフレーム ペーシング ソリューションであり、フレーム ペーシングの機能を提供するのはもちろん、ゲームのレンダリング サイクルと Android デバイスの更新サイクルの効率的な通信を可能にします。これは他のハードウェアすべてに使用してきた、従来の UE4 フレーム ペーサーの代替手段です。

Swappy を有効化する

4.25 の時点で Swappy にはさらなるテストが必要で、現状 Unreal の Android プロジェクトでデフォルトのフレーム ペーサーではありません。しかし従来のフレーム ペーサーと比較して、実質的にスムーズなパフォーマンスを実現しています。そのため、これを有効化することを推奨します。今後のバージョンのエンジンでは Swappy が Android に対する新しいデフォルトのフレーム ペーサーになる予定です。

Android プロジェクトで Swappy を有効化するには、使用する Android プロファイルに a.UseSwappyForFramePacing=1 を追加します。また、すべての Android デバイスで有効化する場合は、これを Android_Default に追加します。

C++ でフレーム ペーシングを制御する

フレーム ペーシングを C++ で制御する場合は FPlatformRHIFramePacer インターフェースから static 関数を呼び出します。こうした関数のパラメータとして使用する場合は、フレームのペースを 32 ビットの整数として渡します。

FPlatformRHIFramePacer::SupportsFramePace は、指定したフレームのペースが対象デバイスのリフレッシュ レートと互換性があるかどうかを確認します。FPlatformRHIFramePacer::SetFramePace は指定する整数値をペースに設定して、FPlatformRHIFramePacer::GetFramePace は現在のフレームのペースを返します。

このページは Unreal Engine の前のバージョン用です。現在リリースされている Unreal Engine 5.3 に対して更新は行われていません。
Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル