UE4-performance

性能分析

帧率打印

在UE编辑器运行或打包为Development版本的打包文件运行时,可用 “~” 键(键盘数字1键左边的按键)呼出Runtime Command,并执行 stat fps,即可打印帧率和延迟进行实时监测。

GPU Visualizer

在编辑器运行状态下可以使用快捷键“Ctrl+Shift+逗号”呼出GPU Visualizer,截取当前帧的渲染消耗细分列表,对帮助分析性能消耗占比帮助很大。
如下图:因为输出了5个窗口,每个窗口对应了一个Scene,点开可以看到每个画面具体的消耗所占用的毫秒数,右侧Duration可以点击进行升降序排列,分析占用毫秒数最多的条目。
GPU-Visualizer

优化建议

这里将从GPU Visualizer内通常占比较多的模块展开,提供性能优化建议:

  • BasePass
    BasePass的消耗取决于:模型三角面数,物体数量,Decal数量,材质复杂度及分辨率。可以在ViewMode中切换到ShaderComplexity&Quads中检查材质复杂度和面数是否有过于消耗大且密集重叠的区域

  • PostProcess
    后期处理消耗,通常占用较高的包括抗锯齿模式(TSR,FXAA等),后期材质,以及bloom

  • LightCompositionTasks_PreLighting
    此项是实时动态AO占用消耗,可以后期盒子中将AO关闭

  • Lights和ShadowDepths
    动态光影的消耗,通常占比较多。如果没有动态物体的需求,要求使用灯光烘焙。如果一定需要动态光,可以适当平衡动态光影可见范围和质量。也可以在ViewMode中切换到Light Complexity检查动态光照是否有过多重叠的地方

  • Translucency
    透明材质,可以再ViewMode中切换到ShaderComlexity检查透明物体是否有过多重叠的地方

  • Exponential Height Fog
    雾的消耗通常较高,Volumetric Fog消耗更高,请权衡性能和效果选择

  • Lumen相关
    条目名称中带有lumen,以及DiffuseIndirectAndAO都是lumen带来的消耗。lumen的消耗巨大,现阶段还无法在高分辨率情况下得到良好的优化

  • Nanite相关
    Nanite可以在模型三角面数极高时提供针对BasePass的巨量优化,但其本身也会带来实时消耗,注意平衡tradeoff

  • Planar Reflection
    平面反射是消耗最大的功能之一,基本相当于所有渲染的内容的消耗在其范围内翻倍。在没有足够的性能预算时请谨慎使用

其它注意事项

屏幕空间效果

暂不支持基于屏幕空间(Screen-Space)功能和效果,例如后期中的Screen Space Reflection,多窗口间会出现拼接问题。
摄像机方向相关的效果或功能需要被替代,可用摄像机位置计算。

硬件光追

消耗较大,要求关闭

抗锯齿模式

目前支持的抗锯齿模式包括FXAA和TSR

自动曝光

自动曝光需要被关闭

光束(Light Shaft)

在定向光影的设置中关闭光束

粒子

  1. 粒子的屏幕对齐设置使用PSA朝向摄像机位置;
  2. 设置足够大的遮蔽边界,需要覆盖所有体验者可以抵达并看见此粒子效果的位置。

平面反射

  1. 额外视野(FOV)需要在15-30的范围内;
  2. 在Scene capture参数中取消采集每帧和移动时采集的选项;
  3. 尽量避免同时使用多个平面反射;
  4. 避免多个平面反射相互采集对方。

后期处理

  1. Image Effects中的Vignette Intensity设为0;
  2. 关闭屏幕空间反射;
  3. 关闭AO;
  4. 关闭动态模糊;
  5. 空出颜色分级LUT,使用其他方式调色;
  6. 如果使用屏幕UV的失真效果,失真效果需要是四方连续的。

材质

  1. 编写材质时使用摄像机位置计算,避免使用摄像机矢量计算。
  2. 如果使用屏幕UV,贴图需要是四方连续的。

参考链接

UE 性能分析
https://zhuanlan.zhihu.com/p/530921982
https://www.bilibili.com/read/cv16498653
https://www.bilibili.com/read/cv16498653

UE4 性能 - (三) 性能分析工具:Unreal Insights
https://zhuanlan.zhihu.com/p/444191961

------------- 感谢您的阅读-------------
作者dreamingpoet
有问题请发邮箱 Dreamingoet@126.com
您的鼓励将成为创作者的动力