UE4开发VR项目,帧率优化实践

一:准备好测试环境;

 1:确保引擎中帧速最大值没有被限制,在项目设置-通用设置-帧率下;

2:配备好各项参数质量;

3:VR模式后在编辑器中按~键调出控制台,输入r.ScreenPercentage,这个相当于画面分辨率,默认是100,你可以输入更高或更低的值,确定一个你觉得清晰度合适的数值,比如说120.

4:准备好测试环境后,调出控制台,输入stat unit查看当前画面中的各项运算耗时数据

二:查找具体是哪些因素导致的GPU消耗高

 转到视野范围内按Ctral+shift+,调出GPU查看器

通过这里你可以查看具体是哪几块在占用渲染时间(红框内是渲染总时长),条越长的说明耗时越久。这个图上可以看出最消耗的是basepass,灯光和后期三大块(当然这里面不止这三块,每种颜色代表一块)。

 1:basepass消耗高的话,就需要了解下哪些模型,贴图,材质开销太大。 面数过高的模型就减面;半透明用的多的物件就斟酌下是否必要;材质是GPU消耗过高的一大元凶,比较耗的材质可以检查下节点,关闭一些非必要的效果。材质复杂程度在这里可以查看,越红的越消耗,原则上减少使用点动画和曲面细分等一些效果。

另外,场景里摆放的模型如果不需要参与碰撞计算的话,最好关闭碰撞,减少运算消耗。

传统游戏的LOD做法在VR游戏里并不是必须的,因为很多VR游戏的活动范围很有限(设计上避免眩晕不要让玩家大范围位移),不需要由远及近的切换模型状态,并且设置不合理的话,在VR游戏里看到一个模型来回切换状态是非常明显的,比较影响体验。由于UE4对面数计算优化不错,所以建议活动区域较小的话模型做精,场景大的话中远景直接用低模。

  游戏运行时在控制台里使用showflag(隐藏)命令可以帮我们快速定位具体是模型?特效?光照?等等哪个消耗高,消耗高的就优化,列举几个常用的showflag命令:
showflag.Translucency
showflag.ambientocclusion
showflag.particles
showflag.staticmeshes
showflag.dynamicshadows
showflag.decal

2:灯光消耗高的话,需要检查动态光照数量(固定光也可以投射动态光照),是否有过多重叠的照射区域,照射范围参数是否开的太大。由于静态光照Build后已将灯光信息存储进了Lightmap,游戏中不再计算,所以灯光的主要消耗来自动态光源。先在世界大纲里查看所有灯光类型,确定有几盏动态光和固定光,前面有红点的是动态,黄点的是固定。

再进一步查看固定光的照射范围的重叠部分是否太多,重叠的越多,交集处越亮越红。用灯的原则是能不用动态光就不用(消耗主要来自被投照射的Mesh),灯光照射范围尽量不重叠,且同一个地图里固定光不能超过4盏。

关闭灯光的投射动态阴影也可以降低一些消耗,甚至一些灯光可以直接关闭投射阴影功能。

3:后期处理是另一个GPU消耗过高的元凶,需要慎用,原则是尽可能的把一些不必要的参数关掉,尤其是SSR,后期AO,Bloom等。一些参数默认会自带一些数值,没必要的全部清零,抗锯齿模式切换成FXAA

27412581f15c4e617d.png

PS:当然还有其他一些需要优化的因素,例如雾效,反射球等

原文http://www.element3ds.com/thread-86863-1-1.html?_dsign=0516bca9

猜你喜欢

转载自blog.csdn.net/m0_37380369/article/details/80256750
今日推荐