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.1 注视点渲染

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

详情可参考:8.7章 注视点渲染

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配置

URP相关内容参见:https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@10.3/manual/whats-new/urp-whats-new.html

以Unity2019.4.2f1为例。

  1. 打开Window/Package Manager
_images/3.8.png

图6.1 Window工具栏

  1. 选中Show preview packages
_images/3.9.png

图6.2 Packages的advanced选项

  1. 选中Universal RP后,点击右下角的Install
_images/3.10.png

图6.3 安装URP

  1. 创建Universal Render Pipeline Asset
_images/3.11.png

图6.4 创建URP Asset

  1. 使用UniversalRenderPipelineAsset

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

_images/3.12.png

图6.5 使用URP Asset

  1. 更新项目中的materials为URP materials
_images/3.13.png

图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.5.3 Player Settings推荐配置。

Scripting Backend:IL2CPP

Target Architectures:ARM64

6.6 UI清晰度推荐设置

通过调整Canvas组件下DynamicPixelsPerUnit的值来提高UI组件的清晰度,从而避免部分UI组件模糊,闪烁等问题。

_images/6.6.png

图 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。