1.Stereo Rendering Modes (Player Setting -> XR Setting)
- Single Pass Instanced 选这个
- Single Pass 或这个
- Multi Pass
Single Pass 打包运行时出现分屏现象,要把后处理和Standard Assets重新import。
Motion blur problem on V2 and V1 single pass in VR · Issue #492 · Unity-Technologies/PostProcessing
Single Pass Checkbox splits view inside Oculus (Solved)
高亮插件highlightingsystem升级v5.0
如Single Pass Instanced 报错:undeclared identifier sampler_CameraDepthTexture
修改
uniform sampler2D_float _CameraDepthTexture;
为
UNITY_DECLARE_DEPTH_TEXTURE(_CameraDepthTexture);
某些shader和后处理可能要修改,参考:Single-Pass Stereo rendering
三种方式的性能对比
2.Batching合批
参考
Draw call batchingdocs.unity3d.com
3.GPU Instancing
参考
Unity - Manual: GPU instancingdocs.unity3d.com
4.灯光
不建议是用完全实时照明(fully realtime lighting)和实时全局照明(realtime global illumination),建议使用静态对象的非方向光照贴图(non-directional lightmaps)和动态对象的光探测(light probe)。
可mixed lighting 和 Shadowmask 和 light probes 一起bake,允许动态对象使用实时高光(specular)和阴影。
参考
Lighting Strategy - Unityunity3d.com
5.Cameras
- Camera的方向和位置应该始终响应用户的运动,不要自己模拟变焦、震动。
- 不要用 Depth of field 和 Motion Blur 的后处理特效。
- 避免移动旋转地平线,例如电梯?
- clip plane的设置。
- UI要用 World Space。
6.后处理
少用,Full-frame后处理慎用。如需使用,请使用v2 Post-Processing Stack。
不要用 Depth of field 和 Motion Blur !
7.抗锯齿
- 前向渲染(Forward Rendering)提供了MSAA,在Quality 中设成4x。
- 后向渲染(Deferred Rendering)在Post-Processing Stack提供两种方式:
- FXAA-用于低端PC
- TAA-效果好 用于高端PC
8.Shader
用Single-Pass Stereo Rendering时,一些shader需要修改。
9.Render Scale
XRSettings.eyeTextureResolutionScale < 1.0 会以牺牲图像质量为代价减少GPU的使用,而如果将此属性值设置为1.0以上,则会以牺牲GPU计时为代价获得更清晰的图像,并占用更大的内存
XRSettings.renderViewportScale 默认1.0
10.Asynchronous Reprojection(异步二次投影)
大多数VR平台都实现了一种称为异步重投影的图形技术。开发人员不应该依赖这种技术来代替优化,因为这种技术确实会导致位置和动画抖动。
11.Color Space(Edit>Project Settings>Player)
PC上选Linear,更真实。
12.Rendering Path
如果你使用的是很多动态光源,那么就使用Deferred Rendering,吃硬件。
如果游戏中没有很多的光源并且需要兼容老的设备,那么最好选择Forward Rendering,然后采用静态的Lightmap。
Forward Rendering并启用MSAA抗锯齿时不支持HDR??
Deferred Rendering不支持MSAA抗锯齿,也无法处理半透明物体
13.几何体
移除不必要的Hard Edge以及纹理衔接,即避免Smoothing splits和UV splits
14.VSync(垂直同步)
edit->Project settings->Quality 中的 VSync Count 设成 Don't Sync。