6 性能优化指南

本指南回顾了基线目标、建议、工具、资源以及用于Unity VR应用程序的性能分析和解决bug的常见工作流程。

6.1 常规提示

VR应用分析提供了对应用性能的洞察力,然后隔离和消除问题和瓶颈。首先关注瓶颈问题。一次只改变一件事,例如,分辨率、硬件、质量、配置。

6.2 性能目标

FPS:Neo 3需要保证稳定在72帧。

Draw Calls:有几个因素会影响Neo 3每帧的draw calls

  • 切换Pipeline状态,包括在draws之间修改shaders、textures、meshes
    • 尽量的共享meshes和实例meshes
    • 推荐使用全局纹理数组
    • 使用一个不产生变体的最小的统一shader
  • 图形API
    • Vulkan和OpenGL ES
    • 多线程渲染 低延迟和帧后处理
    • 使用无衬垫的纹理/间接绘图
  • 三角面数量
    • Neo3: 控制在100万以内

6.3 Unity Profiling工具

6.3.1 Unity Profiler

Unity的profile工具提供了有价值的信息,如每一帧的CPU和GPU性能指标,这可以用来帮助识别瓶颈。你应该在剖析前锁定你的CPU/GPU水平,以获得一致的剖析结果和衡量改进。关于Unity Profile的更多信息,请到 Profiler手册 中查看

你也可以通过使用adb或WiFi在Neo 3上运行时对你的应用程序进行剖析。确保在剖析前锁定你的CPU/GPU水平,以获得一致的剖析结果并衡量改进。关于使用Unity GPU分析器的步骤,请查阅 GPU分析器 指南。

_images/6.3.1.png

6.3.2 显示渲染统计

Unity提供了一种特定的渲染模式来查看场景中的超量绘制。从场景视图控制栏中,在下拉的渲染模式选择框中选择OverDraw。

在这种模式下,半透明的颜色会累积起来,提供一个过度绘制的 “热图”,其中更饱和的颜色代表过度绘制最多的区域。

_images/6.3.2.png

6.3.3 Unity Frame Debugger

Unity Frame Debugger可以让你浏览任何场景的绘制调用顺序。即使你不主动调试,它对于理解Unity是如何将你的场景组合在一起和调试pipeline问题也是很有用的。

更多信息,请参阅 Unity官网说明

6.4 Metrics Tool

实时监控工具(Metrics Tool)可以让开发者追踪 pico移动设备上运行的应用程序的各种性能统计数据。并且可以为开发者提供应用程序性能的概述,并用于验证预期。

使用统计工具时,开发人员必须选择要跟踪的统计信息。这可以通过使用应用程序主页面上的 Basic 和 None按钮来选择一组统计数据,或者在 Stats 选项卡上手动选择统计数据。

_images/6.4.1.png

详细信息请参考 SDK官网介绍

6.5 高级渲染功能

6.5.1 注视点渲染FFR

注视点渲染可以优化渲染场景的能力,为视野焦点提供高分辨率,周边视野则大大降低场景的细节。

详情可参考:第8.4章节注视点渲染

6.5.2 Multiview

基于Unity的multiview的原生功能,用一个摄像机实现立体渲染,比使用两个摄像机减少一半的DrawCall和遮罩剔除,对复杂的场景帧率提升明显。但是multiview模式不支持屏幕后处理。该选项针对所有场景,全局生效。

详情可参考:第8.7章节Multiview

6.5.3 URP配置说明

URP相关内容参见 Unity官方网站

以Unity2019.4.2f1为例。

1.打开Window/Package Manager

_images/6.1.png

图6.1 Window工具栏

2.选中Show preview packages

_images/6.2.png

图6.2 Packages的advanced选项

3.选中Universal RP后,点击右下角的Install

_images/6.3.png

图6.3 安装URP

4.创建Universal Render Pipeline Asset

_images/6.4.png

图6.4 创建URP Asset

5.使用UniversalRenderPipelineAsset

把第四步创建的文件拖到Project Setting/Graphics的Scriptable Render Pipeline Setting中

_images/6.5.png

图6.5 使用URP Asset

  1. 取消HDR
_images/6.6.png

图6.6 取消HDR

7.更新项目中的materials为URP materials

_images/6.7.png

图6.7 更新项目中的materials

6.5.4 透传层

“Compositor Layers”技术对于显示“旨在作为场景焦点”的信息、文本、视频以及纹理非常有用,也可以用于显示简单的场景环境和背景。

详情可参考:第8.5章节Compositor Layers