6 性能优化指南¶
6.1 多场景配置说明¶
1、场景中放置Pvr_UnitySDK预制体后,需要删除Unity自带的Main Camera。
2、如果项目中有多场景,需要在主场景内放置Pvr_UnitySDK预制体,然后在此预制体下增加“DontDestroyOnLoad”方法。保证切换场景的时候只有一个Pvr_UnitySDK预制体。
6.2 帧率及场景的要求¶
帧率:¶
G2 4K需要保证不低于30帧,建议45帧以上,Neo 2需要保证60帧以上,Neo 3 需要保证稳定达到72帧。
场景:¶
同屏模型三角面片控制在10万以内
同屏模型顶点数控制在10万以内
普通unity灯光例如电光源数量控制在50以内
普通unity粒子系统数量控制在50以内
Unity shader尽量使用效率较高的
6.3 高级渲染功能¶
6.3.2 透传层¶
VR Compositor Layers技术可提升画面清晰度,对于文本、纹理、视频类资源比通过Eye-buffer渲染具有更高的的显示质量。为了更好的理解VR Compositor Layers的工作原理和与Eye-buffer渲染和区别,请参考8.8章VR Compositor Layers
详情可参考:8.8章VR Compositor Layers
6.3.3 单目相机¶
使用单张图像,渲染到两只眼睛上,可有效减少渲染。适用于非立体画面(e.g. 普通图片、视频)展示。 详情可参考:8.9章 单目相机
6.3.4 SinglePass¶
基于Unity的Single Pass的原生功能,用一个摄像机实现立体渲染,比使用两个摄像机减少一半的DrawCall和遮罩剔除,对复杂的场景帧率提升明显。但是Single Pass模式不支持屏幕后处理。该选项针对所有场景,全局生效。
详情可参考:8.12章 Single Pass
6.3.5 URP配置¶
以Unity2019.4.2f1为例。
- 打开Window/Package Manager
图6.1 Window工具栏
- 选中Show preview packages
图6.2 Packages的advanced选项
- 选中Universal RP后,点击右下角的Install
图6.3 安装URP
- 创建Universal Render Pipeline Asset
图6.4 创建URP Asset
- 使用UniversalRenderPipelineAsset
把第四步创建的文件拖到Project Setting/Graphics的Scriptable Render Pipeline Setting中
图6.5 使用URP Asset
- 更新项目中的materials为URP materials
图6.6 更新项目中的materials
6.4 缓解发热¶
1.检查VR应用程序当前的帧率。
要使用Pvr_UnitySDK实时显示帧率,请按照8.1章显示帧速率中的说明进行操作。 您也可以在设备上进行设置。进入设置->更多-> 系统 -> 用户配置。在“特殊设置”下,打开“ VR应用帧率显示”。
2.在Pvr_UnitySDK的Inspector面板可以限制帧率,可参考8.3章限制帧率。
3.启用Foveated Rendering。建议将Foveation Level设置为高。
6.5 工程推荐配置¶
6.5.1 SDK推荐配置。¶
请参考章节3.3 SDK推荐配置。
6.5.2 Quality Settings推荐配置。¶
Pixel Light Count:1
Texture Quality:Full Res
Anisotropic Textures:Per Texture
Anti Aliasing:2x
Soft Particles:Disable
Realtime Reflections Probes:Disable
Billboards Face Camera Position:Disable
6.6 UI清晰度推荐设置¶
通过调整Canvas组件下DynamicPixelsPerUnit的值来提高UI组件的清晰度,从而避免部分UI组件模糊,闪烁等问题。
图 6.7 Canvas Scaler面板图
推荐设置公式:
L=distance*tan(fov/2)*2
N=1/Scale
PPU=EyeBuffer/(L*N)
其中,distance表示当前Canvas与Camera的距离,fov表示当前视场角(G2 4K系列和Neo 2设备的视场角为101度,Neo3为98度),Scale表示当前Canvas的scale值,EyeBuffer表示当前设置的RenderTextureSize。