关于UE4中VR项目优化小记
一、参考工具
1、信息日志:提供场景内的各种信息,window>developer Tools>MessageLog
2、输出日志:内容更详细,window>developer Tools>OutputLog
3、视口选项:显示FPS(每秒钟的帧数);
显示数据stat unit:判断游戏中影响性能的主要原因存在于Game逻辑,CPU 还是GPU中
进一步了解可在控制台输入stat GPU 观察占用时间最多的环节,其显示为降序排列 ;也可以使用GPU可视化工具,ctrl+shift+逗号,不显示实时数据,只是当前渲染画面的单帧数据
二、具体优化操作
1、项目一开始最好先使用低质量设置,根据需求逐步完善;
2、设置一些专有控制台变量
找到项目的配置文件夹DefaultEngine.ini,地址Config
在其中找到Script/Engine.RenderSettings
或打开VR示例文件中的config中的DefaultScalability.ini这里的设置可以让VR场景性能更好,很多和抗锯齿,后期处理特效,纹理质量相关,可以将此复制到当前VR项目中。
复制完成后,打开项目设置,Engine,Rendering,定不可以看到移动设备的相关设置,Mobile HDR被禁用,Mobile MSAA(多重抗锯齿)也没启用,即移动设备上的最低标准。接下来可以选择开启Forward Shading(正向渲染),可能让我们得到性能的提升,但无法提供一些有趣的特效;接下来是Default Settings中与后期处理特效相关的选项,包括泛光,环境光遮蔽,自动曝光,动态模糊以及抗锯齿,在VR场景中,最好使用多重采样抗锯齿
VR选项中首先是Instanced Stereo(实例化双目绘制)开启后将先渲染其中一个镜头,然后依据第一个镜头渲染第二个,对性能的提升取决于不同情形,测试后决定是否需要开启。一般是当绘制超过1000次时使用它。该指标,CPU发送给显卡的绘制调用次数,命令是Stat Scene Rendering在网格底部可以找到“Mesh Draw Calls(网格体绘制调用次数)”
4、另一种可以有效降低绘制调用次数的方法是将场景中相邻位置的物体Merge成一个Actor,但并非所有的物体都可以合并,依情况而定;
5、在场景中添加“PostProcessVolume(后期处理体积)”
不开启后期特效的设置:任何在Lens中设置chromatic aberration(色差)强度为0,Bloom泛光强度为0,Lens Flares镜头眩光强度为0,展开ImageEffects的Vignette(暗角效果)强度为0
在RenderingFeatures(渲染特性)中AmbientOcclusion(环境光遮蔽)强度设置为0,ScreenSpaceReflections(屏幕空间反射)强度设置为0
5、优先考虑帧率而非分辨率,可以通过调整屏幕的百分比或头像屏幕的显示比例
在控制台输入R.ScreenPercentage显示当前参数,可以将其设置为合适的参数如R.ScreenPercentage80
6、调整MotionController灵活性,测试后决定是否开启