Meet RealityKit Trace
Spatial Computing 进阶 20m

认识 RealityKit Trace

Meet RealityKit Trace

2023年6月5日

在 Apple 官方观看视频

一句话判断

Instruments 15 新增 RealityKit Trace 模板——用红绿橙三色标记每帧渲染状态,自动检测性能瓶颈并给出修复建议,空间计算应用的性能调优终于有了专业级工具。

这场 Session 讲了什么

RealityKit Tools 团队的 Sarina Wu 和性能分析工程师 Harjas Monga 联合介绍了 Instruments 15 中全新的 RealityKit Trace 模板。

空间计算对性能有严格要求。渲染管线涉及应用进程、渲染服务器和合成器三个组件。应用在 Shared Space 和 Full Space 中的性能表现不同——Shared Space 中其他应用会影响你的渲染性能,Full Space 中只有你自己的应用在渲染。

Session 用一个 Hello World 应用做实例演示,该应用有一个卫星绕地球运行的沉浸式体验,因为使用了过于精细的 3D 模型导致交互卡顿。

RealityKit Trace 模板包含多个工具:RealityKit Frames(逐帧渲染时间追踪)、RealityKit Metrics(瓶颈检测和指标分析)、系统功耗影响评估。

帧渲染以颜色标记:绿色(远在截止时间内完成)、橙色(刚好完成)、红色(超时导致掉帧)。目标帧率是 90fps,但系统会根据内容和环境动态调整。

值得深挖的点

Shared Space vs Full Space 的性能测试策略:调查性能问题或分析系统功耗时,应在 Full Space 中单独测试你的应用。测试用户体验时,应在 Shared Space 中与其他应用一起测试。两种场景的表现可能截然不同。

瓶颈自动检测:RealityKit Metrics 自动分析渲染管线的完整时间信息,识别瓶颈类型和严重程度。扩展详情视图中提供诊断建议和缓解措施。不需要你自己逐帧分析时间线。

90fps 的动态目标:系统不总是以 90fps 运行——它会根据当前显示内容和设备环境选择最合适的帧率。每一帧都有自己的截止时间。红色掉帧不仅看帧时间是否超过 11ms,还要看是否超过了当前目标帧率的截止时间。

系统功耗影响:RealityKit Metrics 中有专门的功耗影响指标。空间计算设备对功耗比 Mac 和 iPhone 更敏感——功耗过高会导致系统降频,影响所有应用的体验。

代码片段

// 空间计算渲染管线的理解
// Shared Space: 你的应用 + 渲染服务器 + 合成器
//   - 其他应用的渲染工作会影响你的性能
//   - 性能 = 你自己的工作 + 渲染服务器处理其他应用的时间

// Full Space: 只有你的应用 + 渲染服务器 + 合成器
//   - 其他应用被隐藏,不影响你的渲染
//   - 性能只取决于你自己的工作
// 性能优化的主要方向
// 1. 减少 3D 模型的多边形数量
//    - 使用 LOD(细节层次)根据距离切换模型
//    - 远距离使用低精度模型

// 2. 优化材质和纹理
//    - 减少纹理尺寸
//    - 使用压缩纹理格式

// 3. 减少每帧的 RealityKit 系统工作量
//    - 优化自定义 System 的 update 函数
//    - 使用 Time Profiler 定位热点代码

最佳实践

  • 性能测试用真机而非模拟器:模拟器的硬件与设备不同,时间信息不准确。但可以用模拟器做快速迭代和非时间相关的统计优化。
  • 优先关注红色掉帧区域:在时间线中找到红色密集区域,用 RealityKit Metrics 查看该时段的瓶颈。
  • 单独测试和联合测试都要做:Full Space 了解应用自身的性能天花板,Shared Space 了解用户体验。
  • 关注系统功耗指标:功耗过高会导致系统级降频,影响所有应用的帧率。
  • 结合 Time Profiler 优化自定义系统:RealityKit Metrics 显示系统执行时间,Time Profiler 显示具体代码热点,两者配合使用。

还有什么值得关注

  • Instruments 15 的 RealityKit Trace 可以分析模拟器和真机上的应用,但真机数据更准确。
  • 帧率不是唯一指标——系统功耗影响同样重要。一个 90fps 但功耗过高的应用不如一个功耗合理的 60fps 应用。
  • Session 用卫星绕地球的例子完整演示了性能分析流程:发现问题 -> 用 Trace 定位 -> 用 Metrics 分析瓶颈 -> 优化模型 -> 验证改善。
  • 渲染管线的三个阶段(应用、渲染服务器、合成器)都有各自的性能约束,瓶颈可能出现在任何阶段。
WWDC 2023