搜索 Unity

Adaptive Performance 4.0助你优化移动性能

2022年6月29日 类别 技术 | 11 分 阅读
Image of performance chart/bar on top of a dark red background
Image of performance chart/bar on top of a dark red background

快来下载Unity 2022.1Tech Stream、探索Adaptive Performance 4.0吧。新增的物理、贴画、个人定制和层级剔除四个缩放器,外加对可视化编程的支持,能让应用在三星设备上的性能更进一步。

Unity 2022.1向开发者提供了抢先体验新功能的机会,并为下一个长期支持(LTS)版提供参考。经过验证的Adaptive Performance 4.0带有一些超棒的新功能,用于提高应用的可扩展性,并增强其整体性能。

在GDC 2022与三星共同举办的讲座:Unfolding Your Gaming Potential with Galaxy GamdeDev上,我们分享了Adaptive Performance 4.0的最新更新。你可以在下文了解详情。

可视化编程

在集成了可视化编程后,任何人都可以用Adaptive Performance来增减应用性能并延长电池寿命。安装Adaptive Performance 4.0后,Unity的可视化编程系统将自动提供Adaptive Performance指标的节点单元,无须用户自行用C#编写任何东西。

A screenshot of Unity's visual scripting menu
Unity Visual Scripting系统的Adaptive Performance 4.0单元

换句话说,一旦你安装了可视化编程包,Unity会自动激活Adaptive Performance节点单元。接着,你可以将Adaptive Performance添加到项目的可视化编程节点图中,然后重新进行编译。详细的演示和最佳实践可在Adaptive Performance样例文档中查看。

在Unity生成Adaptive Performance单元后,你可以右击任意节点图背景来添加新节点。你可以在Adaptive Performance子菜单到新节点。

《Boat Attack》的粒子效果

下面例子演示了怎样在可视化编程中使用Adaptive Performance。下图为《Boat Attack》的可视化脚本片段,其中所有的粒子效果会在“即将过热”时被禁用,在警告解除时再度启用。我们调整了浪花、引擎烟雾和滑翔伞轨迹等效果的表现,因为它们对CPU和GPU的影响很大。这样一来,我们既能尽量不改动游戏本身,又能提高性能。

Visual Scripting flowchart

每当出现过热警告时,我们让粒子系统做出反应,然后再关停或再度启用粒子系统。当然,这可以根据游戏的需要进行调整。比如,你不一定需要完全禁用效果,而是能增减emitter的粒子数量或源图像的质量。

所有可视化编程的Adaptive Performance API都被重新设计过。完整的API清单及其相关信息可在可视化编程集成文档中找到。

缩放器

除了已有的缩放器外,我们还在Adaptive Performance 4.0中新增了四个新缩放器(Scaler):

  • Layer Culling(层级剔除)缩放器
  • Decals(贴花)缩放器
  • 自定义缩放器
  • Physics(物理模拟)缩放器

采用索引系统来创建所有缩放器的好处包括:

  • 稳定的帧率
  • 更少的过热保护
  • 及时解除过热保护
  • 在运行时自动缩放内容
  • 无须重新编译即可在数百万设备上完成缩放
  • 整合简单
  • 质量高
  • 无须经常维护

Unity Profiler的自定义Adaptive Performance模块可显示缩放器的活动,它们是否能很好地完成工作,还是说需要做些调整。下例的《Boat Attack》运行于三星Fold3的展开模式下,采用了相当高的分辨率。

Boat attack's main menu's scalers

《Boat Attack》的菜单场景在启动时就打开了许多缩放器,使菜单在截图发生之前就稳定了下来。例中,设备的温度在运行时迅速上升,很快就进入了过热保护状态。

而Adaptive Performance试图稳定局面,减少游戏对GPU的依赖,因为这部分显然出现了性能瓶颈。游戏的阴影缩放器迅速降低了阴影的质量,但这还不够,于是可视距离和分辨率也被下调。这时帧率开始稳定,温度也出现下降。游戏不再会触发过热保护,帧率也提高到了60 fps。

Layer Culling(层级剔除)缩放器

Layer Culling缩放器可以在运行时动态地调整层级剔除的距离

该功能使用索引系统来决定怎样或何时来增加或降低多少剔除距离,来实现最佳的性能和稳定的设备热量。

我们的Adaptive Performance样例会一直在中等CPU负荷空转,在到达临界帧率时降低剔除距离。这样一来,图层的剔除距离就会根据CPU和GPU负荷的变化而变化。

你可以为每一层设置不同的剔除距离,使其按一定比例缩放。你也可以借助该功能来找出那些可以提前剔除的对象。详情请参阅这段代码样例

Adaptive Decals(适应性贴花)

Adaptive Decals主要作用于视觉效果。在游戏《Amazing Adventures of Dr. Arm》里,有一场Boss战使用了大量的粒子和贴花效果。在当设备变热、过热保护即将出现(或已经发生)时,缩放器便会减少发射的粒子数。并且,很多不太显眼的粒子发射器,如风中吹动的树叶、微小的火花等等元素则会被完全关闭。缩放器同时也会降低贴花的剔除距离。

没有过热警告时

A character wielding a sword faces a cloaked wizard in a forest, who makes red thunderbolts fall from the sky
(图片由Arm提供)

过热保护时

A character wielding a sword faces a cloaked wizard in a forest, who makes red thunderbolts fall from the sky
(图片由Arm提供)

甚至,部分粒子的碰撞也会被禁用。一旦设备的热量降低,我们就可以再度开启/增强这些效果。

自定义缩放器

你可以使用自定义缩放器来制作雾缩放器,或者其他我们未提供的缩放器。当热量过高时,你可以用自定义的缩放器来加厚远处的迷雾、降低可视距离。从而减轻系统负荷,使热量恢复正常。

后处理效果有时会成为能耗最高的渲染部分之一。这种视觉特效虽然对游戏性来说并不关键,但可以让氛围更加浓厚,并强化开发者苦心制作的艺术效果。

Adaptive Performance支持应用完整的后处理效果,并且能在设备负荷过高时缩减不必要的特效。在过热保护时,我们会关闭《Amazing Adventures of Dr. Arm》里的几种特效,这些效果主要用于增强场景的气氛,对游戏性并没有实质性影响。雾效、柔光、景深、屏幕空间环境遮蔽(SSAO)和运动模糊这些亮眼的视觉特效的确能让游戏增色不少,但它们对游戏来说不是必须的。调整这些效果能让游戏的性能得到显著改善。

没有过热警告时

Scene with a forest and field background with an figure aiming at a target through fog
(图片由Arm提供)

过热保护时

Scene with a forest and field background with an figure aiming at a target
(图片由Arm提供)

Adaptive Physics(适应性物理)

Adaptive Physics会改变物理引擎更新的fixed delta time。如果delta time被用于其他系统,这些系统也将被缩放。此时,你可能需要编写自己的物理缩放器来应用更详细的设置,而不是单纯在fixed delta time中修改。  

上方就比较了原Time.fixedDeltaTime值设定及其缩小版。原版的平均帧时间为28毫秒,缩小版的平均帧时间为21毫秒。

我们的Adaptive Performance团队正不断努力扩展软件包及其平台兼容,新的设备供应商会在不远的将来上线。同样,我们也欢迎大家在Adaptive Performance论坛向我们留下反馈。不要犹豫,立即联系我们吧!

2022年6月29日 类别 技术 | 11 分 阅读
相关文章