Samsung Galaxy XR 现已推出,由 Android XR 提供支持!这篇博文是我们 Android XR Spotlight Week的一部分,我们在此期间提供各种资源(博文、视频、示例代码等),旨在帮助您学习、构建应用并为 Android XR 做好准备。
本周,Samsung 推出了与 Google 和 Qualcomm 合作打造的 Galaxy XR。对于开发者来说,这是一个激动人心的时刻,我们希望帮助您充分发挥 XR 应用的性能。
虽然在非 XR 设备上,游戏和应用的性能不佳可能会让用户感到沮丧,但在 XR 世界中,性能不仅是可选的,而且是应用成功的根本。如果您在 XR 中未能达到目标帧速率,可能会导致更严重的问题,例如晕动症。
在本指南中,我们将向您介绍 Android XR 开发需要了解的基本性能优化。您将了解哪些功能可以带来最大的性能提升、何时使用这些功能,以及这些功能如何协同工作来帮助您达到目标帧速率。
我们的目标如下:
- 最低要求: 72fps(这是我们游戏质量指南的一部分)
- 可选: 90fps,每帧预算为 11 毫秒
如需详细了解为什么保持如此高的帧速率非常重要,请查看我们的性能指南。
特定于 XR 的性能功能
首先,我们将介绍两个特定于 XR 的性能功能:注视点渲染和 Vulkan 子采样。
注视点渲染
注视点渲染是一种优化,具有两种模式。第一种是静态模式 ,它以较高的分辨率渲染屏幕中心,并随着视线向外移动逐渐降低分辨率。
第二种是眼动追踪模式 ,它专门以完整细节渲染您注视的区域,同时降低外围区域的显示质量。它本质上模仿了人类视觉的工作方式,即我们只在注视的特定区域看到精细细节。
注视点渲染可以显著减少 GPU 工作负载,而不会牺牲用户感知到的图像质量。注视点渲染的优点在于,用户不会注意到外围视觉中的质量降低,但 GPU 肯定会注意到性能的提升。
假设您正在构建一个博物馆体验,其中包含复杂的 3D 制品。如果没有注视点渲染,您将难以保持 90fps,因为您需要尝试渲染“视野范围”中的所有内容。借助注视点渲染,您可以保留用户注视的高多边形细节,但背景环境以较低的质量渲染。您的用户不会注意到差异,但您将有足够的空间为场景添加更多细节。
Vulkan 子采样
Vulkan 子采样是注视点渲染的最佳搭档。注视点渲染决定以不同的质量级别渲染哪些内容,而 Vulkan 子采样则使用片段密度图处理如何高效渲染不同的质量级别 。
与注视点渲染结合使用时,Vulkan 子采样可额外提供 0.5 毫秒的性能。它还有助于平滑外围视觉中的锯齿状边缘,使整体图像看起来更清晰。
例如,在飞行模拟器游戏中,用户专注于仪表和控件,将注视点渲染与 Vulkan 子采样相结合意味着详细的控件会清晰地渲染,但外围驾驶舱结构使用的资源较少。额外的 0.5 毫秒听起来不多,但它决定了您是否有空间添加额外的互动元素,或者在紧张时刻是否会丢帧。
适用于复杂场景的 GPU 功能
除了注视点渲染和 Vulkan 下采样之外,还有一些 GPU 功能可以通过智能实例化和剔除来减少不必要的压力。这些功能对于具有重复几何图形或显著遮挡的复杂场景尤其有效。
GPU 常驻绘制器
GPU 常驻绘制器会自动使用 GPU 实例化来减少绘制调用并释放 CPU 处理时间。因此,GPU 会将相似的对象批量处理,而不是由 CPU 单独告知 GPU 每个对象。
此功能对于具有重复网格的大型场景最有效,例如森林中的树木、办公楼中的家具或散布在环境中的道具。
想象一下,一个森林场景中有 200 棵树,它们使用相同的基本网格。如果没有 GPU 常驻绘制器,您将有 200 个绘制调用占用 GPU,从而释放 CPU。启用此功能后,GPU 将智能地实例化这些树,这应将其减少到仅 5-10 个绘制调用。这样可以节省大量 GPU 资源,您可以将其用于游戏逻辑或物理计算。
GPU 遮挡剔除
GPU 遮挡剔除 使用 GPU 而不是 CPU 来识别并跳过渲染隐藏的对象。它会自动检测其他对象后面遮挡(隐藏)的内容,因此您不会将 GPU 浪费在用户看不到的内容上。
此功能在具有多个房间的室内空间、密集的环境或墙壁、地板和物体自然遮挡视线的建筑场景中尤其强大。
例如,假设您正在构建一个多房间住宅体验。当用户在客厅时,为什么还要浪费 GPU 周期来渲染完全隐藏在墙壁后面的详细厨房?GPU 遮挡剔除会自动跳过渲染这些隐藏的对象,从而为您实际可见的内容提供更多性能预算。
监控性能
仅仅使用这些功能是不够的。您还需要衡量优化效果,以便量化其影响并验证您的更改是否确实有效。
Metrics API
性能指标 API 提供对应用内存用量、CPU 性能和 GPU 性能的实时监控。它提供来自合成器和运行时层的全面数据,因此您可以准确了解应用中发生的情况。
在进行更改之前建立基准,应用优化,衡量影响,然后迭代。这种数据驱动的方法意味着您知道自己确实在提高性能,而不是猜测。
在启用注视点渲染之前,您的 GPU 帧时间可能为 13 毫秒,这超出了 11 毫秒的预算。启用注视点渲染,再次测量,希望您看到它降至 9 毫秒。这样,您就获得了 4 毫秒的额外空间,可以为场景添加更多细节、在其他地方提高视觉质量,或者只是确保在更广泛的内容范围内获得更流畅的性能。
如果没有这些指标,您就是在盲目优化。性能指标 API 会告诉您哪些内容实际上对您的特定用例有帮助。
帧调试器
帧调试器是 Unity 的内置工具,用于准确了解场景的渲染方式(逐帧)。它会显示绘制调用的顺序,并允许您逐步执行这些调用,以验证优化是否正常运行。
想要确认 SRP 批处理程序是否正常运行?在帧调试器中查找“RenderLoopNewBatcher”条目。检查 GPU 常驻绘制器是否正确批处理?查找“混合批处理组”条目。这些视觉确认有助于您了解优化设置是否确实生效。
逐步执行场景的前 50 个绘制调用。如果您看到相似的对象是单独绘制而不是批量绘制的,则说明您的实例化或批处理功能未正常运行。帧调试器会立即显示这些问题,以便您解决它们。
其他优化
除了上述优化之外,我们的完整性能指南还介绍了其他一些优化。以下是简要总结:
- URP 设置: 为移动 XR 停用 HDR 和后期处理。与在移动硬件上的性能成本相比,这些功能提供的视觉效果影响极小,因此您将获得可衡量的性能提升,而视觉差异几乎难以察觉。
- SRP 批处理程序: 减少使用相同着色器变体的许多材质的场景的 CPU 开销。通过最大限度地减少绘制调用之间的渲染状态更改,您可以显著减少用于渲染的 CPU 时间。
- 显示屏刷新率: 根据场景复杂性在 72fps 和 90fps 之间动态调整。在复杂的序列期间降低帧速率以保持稳定性,然后在更简单的时刻提高帧速率以实现超流畅的互动。
- 深度/不透明纹理: 除非着色器效果有特定需求,否则请停用这些纹理。它们会导致不必要的 GPU 复制操作,从而浪费性能,而不会为大多数应用带来好处。
- URP 渲染缩放: 此设置允许您以较低的分辨率进行渲染以提高性能,或以较高的分辨率进行渲染以增强视觉质量。
如需了解有关这些优化及更多优化的分步说明,请查看我们的完整 Unity 性能指南(适用于 Android XR)。
总结
XR 应用的性能不仅仅是一个技术复选框。它决定了用户体验是舒适、引人入胜,还是让用户感到不适或不舒服。我们介绍的优化是您在最新的 XR 设备上达到关键帧速率目标的工具包。
以下是您的路线图:
- 首先使用注视点渲染和 Vulkan 子采样。这些特定于 XR 的功能可立即显著节省 GPU 资源。
- 如果您有具有重复几何图形或室内空间的复杂场景,请添加 GPU 常驻绘制器和遮挡剔除。
- 使用性能指标 API 监控所有内容,确保您的更改确实有帮助
- 探索其他 URP 优化,以获得额外的性能空间
持续衡量和迭代至关重要。并非每项优化都能为每个项目带来同等的好处,因此请使用 Metrics API 清楚了解哪些内容实际上对您的特定用例有帮助。
后续步骤:扩展技能
准备好深入探索了吗?您可以访问以下资源:
-
产品动态我们很高兴地宣布,Android XR 现已正式支持 Unreal Engine 和 Godot。我们还推出了旨在提高您的工作效率并启用新的 XR 功能的新工具:Android XR Engine Hub 和 Android XR Interaction Framework。
Luke Hopkins, Ryan Bartley • 4 分钟阅读时间 -
产品动态在 Google Play 上,提供安全的在线体验并保护用户免受伤害是我们的首要任务。
Paul Feng • 2 分钟阅读时间 -
2026 年 7 月 28 日2026 年 7 月 28 日
产品动态今天,我们正式庆祝 Jetpack Compose 1.0 发布五周年。从 2021 年 7 月 28 日发布的 1.0 版本到最新的 1.11 版本,我们见证了 API 在过去几年中的显著发展,现在我们来庆祝一下。
Rebecca Franks, Nick Butcher, Loryn Hairston • 5 分钟阅读时间
每周通过电子邮件接收最新的 Android 开发洞见 每周。