移动设备的帧平滑

为移动设备启用并自定义帧平滑

Windows
MacOS
Linux

帧平滑(Frame Pacing) 用于限制应用程序的渲染帧率不超过设备的本地刷新率。它使应用程序能够在渲染中优先考虑一致性和稳定性,避免无止尽地提升帧率,从而提供更为流畅的用户体验。在虚幻引擎4(UE4)中,你可以借助项目配置文件中的 设备描述(Device Profiles),为每台设备单独设置帧率。

在设备描述中编辑帧平滑设置

你可以通过 DeviceProfiles.ini 文件中的CVar控制帧平滑;该文件包含了你的目标设备信息。

  • 如果是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

4.25中推荐用于iOS和Android设备的新方法。刷新率直接为设置的数值。

a.UseSwappyForFramePacing = [value]

a.UseSwappyForFramePacing=1

默认设为0。将此值设置为1将启用Google的Swappy帧平滑解决方案,以替代Android设备的标准UE4帧平滑器。Swappy使用的CVar和UE4帧平滑器所用的相同。

高刷新率指南

帧平滑的最大刷新率通常被限制为60Hz,但启用 bEnableDynamixMaxFPS 会将这一限值提高到120Hz。支持60Hz以上刷新率的移动设备包括:

  • Samsung Galaxy S20

  • OnePlus 7T

  • Google Pixel 4

  • iPad Pro第2代及更高型号

适用于Android的Swappy帧平滑

除传统帧平滑系统外,虚幻引擎4.25还从 Android游戏SDK 集成了Google的 Swappy帧平滑器

在检测到帧提交延迟后,Android硬件的通常做法是,使用帧缓存来显示之前的帧,从而防止画面撕裂。但游戏渲染器往往不知道此过程,导致同步失效,进而先于显示的帧。这会导致帧的显示时间发生大幅变化,而且由于停滞通常发生在输入取样后,这还会导致触屏控件发生明显的输入延迟。

Swappy是Android专门用于解决此问题的帧平滑解决方案,它不仅能提供帧平滑的优势,还能让游戏的渲染周期和Android设备的刷新周期能更有效地通信。这种方法可以取代传统的、在所有其他硬件上使用的UE4帧平滑器, 它是用于所有其他硬件的传统UE4帧平滑器的替代方案。

启用Swappy

在4.25中,由于还需进行测试,Swappy目前还不是虚幻中Android项目的默认帧平滑器,但与传统帧平滑器相比,它始终保持着更流畅的性能。我们建议你启用它,并且我们还计划在未来的引擎版本中,将Swappy作为Android新的默认帧平滑器。

若要为Android项目启用Swappy,请将 UseSwappyForFramePacing=1 添加到对应的Android描述文件中。你可将它添加到 Android_Default 来让所有Android设备启用它。

在C++中控制帧平滑

要在C++中控制帧平滑,你可以从 FPlatformRHIFramePacer 接口调用静态函数。在此类函数中,帧平滑以32位整数的形式作为参数传递。

FPlatformRHIFramePacer::SupportsFramePace 用于检查指定的帧平滑是否与当前设备的刷新率兼容。FPlatformRHIFramePacer::SetFramePace 用于将帧平滑设为指定的整数值,而 FPlatformRHIFramePacer::GetFramePace 则会返回当前帧平滑。

Select Skin
Light
Dark

欢迎来到全新虚幻引擎4文档站!

我们正在努力开发新功能,包括反馈系统,以便您能对我们的工作作出评价。但它目前还未正式上线。如果您对此页面有任何意见与在使用中遭遇任何问题,请前往文档反馈论坛告知我们。

新系统上线运行后,我们会及时通知您的。

发表反馈意见