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分析器 指南。
6.3.2 显示渲染统计¶
Unity提供了一种特定的渲染模式来查看场景中的超量绘制。从场景视图控制栏中,在下拉的渲染模式选择框中选择OverDraw。
在这种模式下,半透明的颜色会累积起来,提供一个过度绘制的 “热图”,其中更饱和的颜色代表过度绘制最多的区域。
6.4 Metrics Tool¶
实时监控工具(Metrics Tool)可以让开发者追踪 pico移动设备上运行的应用程序的各种性能统计数据。并且可以为开发者提供应用程序性能的概述,并用于验证预期。
使用统计工具时,开发人员必须选择要跟踪的统计信息。这可以通过使用应用程序主页面上的 Basic 和 None按钮来选择一组统计数据,或者在 Stats 选项卡上手动选择统计数据。
详细信息请参考 SDK官网介绍。
6.5 高级渲染功能¶
6.5.2 Multiview¶
基于Unity的multiview的原生功能,用一个摄像机实现立体渲染,比使用两个摄像机减少一半的DrawCall和遮罩剔除,对复杂的场景帧率提升明显。但是multiview模式不支持屏幕后处理。该选项针对所有场景,全局生效。
详情可参考:第8.7章节Multiview
6.5.3 URP配置说明¶
URP相关内容参见 Unity官方网站。
以Unity2019.4.2f1为例。
1.打开Window/Package Manager
图6.1 Window工具栏
2.选中Show preview packages
图6.2 Packages的advanced选项
3.选中Universal RP后,点击右下角的Install
图6.3 安装URP
4.创建Universal Render Pipeline Asset
图6.4 创建URP Asset
5.使用UniversalRenderPipelineAsset
把第四步创建的文件拖到Project Setting/Graphics的Scriptable Render Pipeline Setting中
图6.5 使用URP Asset
- 取消HDR
图6.6 取消HDR
7.更新项目中的materials为URP materials
图6.7 更新项目中的materials
6.5.4 透传层¶
“Compositor Layers”技术对于显示“旨在作为场景焦点”的信息、文本、视频以及纹理非常有用,也可以用于显示简单的场景环境和背景。
详情可参考:第8.5章节Compositor Layers