众所周知,Quest 2极为严格的控制SoC运行频率,目的就是保证整机的“散热性能”,说白了就是发热不能严重、风扇噪音不能大。这也是VR头戴设备中降低用户体验的两个关键指标。
对于Quest 2很直接的一个优势就是,用户大多时候听不到狂转的风扇噪音。不过,Meta在最新的v55系统中进一步释放了Quest 2和Quest Pro的频率限制,CPU、GPU都有大幅提升,这些能力可以提升游戏帧率或渲染分辨率,对体验提升都有重要作用。
那么,刚刚发布的苹果Vision Pro是如何进行控制和管理的呢?
根据现场已经体验的媒体反馈,大部分人反馈Vision Pro发热不明显。准确的说,这句话缺少“场景”描述。因为Vision Pro的演示中大部分都还是以2D场景为主,如果在2D场景下还发热明显,那显然不是苹果的实力,更会被大家看笑话。因此,更应该看的是Vision Pro运行3D应用时的发热表现。
这几天我也看了WWDC关于visionOS的相关课程,其中发现visionOS对于App分类有三种:
- 1. Windows,也就是窗口类2D内容,每个App可拥有多个窗口,支持调整大小;
- 2. Volume,轻量3D内容,支持2D窗口和3D内容混合显示;
- 3. Space,专属3D应用,开启后隐藏其它App,并且支持在透视和沉浸模式切换。
visionOS性能优化策略
虽然现在还不能体验,但是我们通过其中一个课程(WWDC2023/10100)了解到visionOS对App功能和性能优化的内容,从中我们了解到更详细的信息。
- 侧重:visionOS中优先热管理、而非续航;
- 路径:分析你的App类型,找到优化方法;
- 目标:降低发热、避免内容占用过大。
和iPhone等移动设备上App的功耗的性能要求不同的是,在Vision Pro和visionOS系统中系统会实时更新,不管你的App的资源占用情况如何。
比如,只要用户移动身体(转头、转身等)、挪动手、转动眼睛等动作,系统就需要实时渲染出每一帧,也就是内容是在实时更新的。再比如,多任务场景中空间算法也实时运行,以此保证用户同时运行多个应用的交互和视觉效果。
和移动平台中优化性能的逻辑有些不同,visionOS中概念和优先级发生了变化:优先考虑散热性能,而不是电池续航或寿命。很显然,这一点上苹果和Meta策略是一致的。
权重方面,不同于iPhone上后台“挂起”影响相对较小,在visionOS中,即便是短暂的暂停、卡顿会对体验破坏性的影响。
visionOS性能优化的核心:渲染、交互、ARKit、音频视频播放、SharePlay、以及避免来自系统层面的停止运行。
渲染方面,visionOS渲染帧率默认为90(支持更高帧率),因此应该避免渲染延迟情况。对比其它平台优先侧重UI和动画流畅性,visionOS考虑的更多比如:
- 1,应用单独运行时的功耗;
- 2,在与其它App同时运行时的功耗;
- 3,在复杂交互时的功耗;
- 4,在播放视频和音频,如FaceTime、或Personas时的功耗;
- 5,如果是iOS应用,也需要进一步分析和优化。
当然,里面提到了很多内容涉及渲染优化部分,这里主要提取一些重要的点。
- 1,渲染目标是确保延迟更低,减少帧丢失。需要从SwiftUI、UIKit,或者RealityKit、Metal分别进行优化。
- 2,交互方面,因为visionOS刷新率在90Hz或更高,因此最佳输入延迟要<8ms。另外,要尽可能减少内容之间的重叠。
- 3,SharePlay要避免在多个设备之间同步传输大量渲染工作,避免热堆积以及附带的降频问题。
- 4,提醒:设备过热、系统内存不足等,会出现App终止运行的情况。这就需要,在设备过热时降低复杂的渲染和计算。
对此,苹果还提供了Metrickit和Xcode Organizer等性能分析工具,进一步帮助开发者优化自己的应用。
参考:Apple