0


UE5性能优化

1.定位瓶颈

首先需要判断瓶颈在哪,UE4命令行输入stat unit

在这里插入图片描述
Game:处理游戏逻辑的时间

Draw:根据剔除物体,收集渲染信息发送到GPU的时间

GPU:渲染,光照计算所需要的时间

哪个时间更接近Frame的时间就从哪里入手,通常代码不出问题情况下,一般都是GPU的问题。

2.Game

如果是Game时间更接近,可以看看Tick代码是否有循环次数比较多的,或者是UE官方不建议在Tick调用的函数一直在Tick里面调用,可以把耗时的操作采用多线程的方式解决,可以使用Unreal Insights工具分析

3.Draw

如果是Draw时间更接近,可以看看是不是物体过多,导致剔除耗时过长,输入stat initviews可以查看情况。还有就是DrawCall,可以通过RenderDoc查看调用的次数,优化场景,可以把一些不需要很高精度的模型合成成1个actor

4.GPU

如果是GPU时间更接近,造成的原因比较多,往往也是主要需要优化的地方,通过RenderDoc截图帧数较低的分析,然后找到Scene节点,这里以延迟渲染为例。
在这里插入图片描述
可以看到主要的渲染流程就是PrePass->BasePass->ShadowDepths->Light->PostProcessing

  1. PrePass主要是执行对不透明物体深度测试,生成一张RT。这里的消耗主要是与actor的数量,以及actor的面数有关

在这里插入图片描述
2. BasePass主要根据Shader输出的颜色,高光,粗糙度等,生成一系列的RT,并存储在GBuffer里,方便后续的阴影和光照计算。这里的计算主要和shader的复杂度,以及贴图的质量有关
在这里插入图片描述

  1. Shodow和Light的计算是耗时最多的,这里和光源的数量,actor的数量,模型的精度都有这密切的关系,具体情况需要具体分析
  2. PostProcessing主要是对输出的画面做处理,与后处理盒子的数量和后处理的Shader有关系

总结:根据RederDoc所反馈的信息,调整耗时高的步骤和DrawCall。通常情况下优化性能,都是从GPU入手,DrawCall是最消耗时间的,减少DrawCall是最有效的优化方法。对于大世界场景建议使用UE5的Nanite,以及一些不需要特别精细的模型可以减少面数并合并成一个模型,阴影可以使用shadowmap,shader的优化也是很重要的,将材质节点转成HLSL更利于优化。减少DrawCall的方法可以从合批入手,合并模型,合并贴图,提高纹理的复用率,合批的模型尽量使用一个材质球。

5.内存

内存占用过高的话,首先是C++里面new了空间,用完要及时的delete,加载了一些资源用完也是需要及时的释放,其次就是避免使用过大的纹理贴图,使用过大的纹理贴图也会影响GPU的消耗,占用过多的显存。

6.半透明物体

半透明物体一般都是最后渲染的,过多的半透明物体对GPU渲染的消耗也是很多的,两个半透明物体重叠时,渲染次序的排序也是比较重要的。

未经允许,禁止转载。

标签: ue5 性能优化

本文转载自: https://blog.csdn.net/weixin_44346103/article/details/128809983
版权归原作者 真的帅! 所有, 如有侵权,请联系我们删除。

“UE5性能优化”的评论:

还没有评论