UE4 /UE5 PC/安卓优化

Posted 飞起的猪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UE4 /UE5 PC/安卓优化相关的知识,希望对你有一定的参考价值。

一、概述

       UE4/UE5场景中的资源越多,消耗的内存就越大,就会越卡顿。这里教大家如何进行场景优化,来减少内存,使得场景更加流畅。

二、模型优化

   2.1、使用3Dmax或者Maya制作的模型,面数最好不要太多,虽然UE4/UE5能支持百万级的面数,但是能减少的面数尽量减少,不需要的部分能删除就删除。

  2.2、材质ID,在Max或者Maya里面,一个模型材质过多的话会分配材质ID,但是在UE4里面如果材质过多,会加大渲染消耗资源。所以在UE里面如果模型简单的话尽量用一个材质解决。

  2.3、这个跟程序设计师有关,模型的坐标一定要在模型中心点的位置,这样后面做交互会更加方便一点。

  2.4、光照贴图和阴影贴图:在往UE4里面导入物体的时候我们一定要记住我们这个物体要有2UV,顾名思义就是两套UV 第一套UV我们是存放光照贴图的,第二套就是存放我们的阴影贴图的。这个在UE里面了则是UV0和UV1表示,默认的就是UV就是1,以及我们光影贴图的分辨率大小也是2的次幂。 

三、灯光优化

  3.1、Lightmass Importance Volume:大场景,不添加则全局构建光照贴图产生全局Indirect Lighting Cache;添加则在指定区域构建光照贴图Indirect Lighting Cache;

 3.2、点光源和聚光灯尽量不要开启Cast Volumetric Shadow;默认只有平行光开启了此选项。开启后的性能消耗为不开启的性能消耗三倍。不开启表示阴影计算方式使用Shadow Mapping,开启表示使用Shadow Volume,前者的阴影计算没有后者精准,但是计算量小;

 3.3、大气雾如果开启体积雾,建议将灯光改成静态光,这样在Build Lighting时会生成预计算的体积雾相关数据,这样可以显著提升体积雾性能。体积雾性能消耗巨大。

 3.4、静态光不用时禁用Static Lighting 

3.5、关闭Support Global clip plane for Planar Reflections,默认关闭,开启后消耗巨大。

 3.7、Ambient Occlusion开启之后,如果是动态光的情况下会消耗资源,开启AO后(Project Settings -> Rendering -> Default Settings ->Ambient Occlusion),引擎默认的AO为SSAO(Screen Space Ambient Occlusion), SSAO无法进行预计算,所以GPU性能开销较大,可以修改为DFAO(Distance Field Ambient Occlusion)以提升性能,因为DFAO可以预计算,代价是增加显存开销;

 四、材质优化

  4.1、材质的复杂度不宜过高,尽量少使用半透明材质,会很消耗资源,材质类型的性能,从快到慢:Opaque -> Masked -> Translucent。

  4.2、材质使用时要提前规划好,相同材质的物体公用一个材质,尽量避免从网上下载的多个材质,每个都用一遍,提高复杂度。

五、植被优化

  5.1、在场景中有大量的植被时,可以使用HierarchicalInstancedStaticMesh进行优化,这样可以减少CPU的开销,因为使用HierarchicalInstancedStaticMesh,可以减少draw call次数,要想场景做到更好的优化,最好的办法是需要减少材质种类,提高材质复用率

  5.2、 为Instanced Mesh设置合适的Cull Distance。

六、碰撞优化

 6.1、在模型制作的所有的模型不需要碰撞,如果是加了碰撞,在引擎里移除碰撞。

 6.2、BoxComponent的 Generate Overlap Events 设置为false。如果不需要Overlap事件,那么就将该属性设置设置为false,默认为true。当BoxCompont达到一定量级时,开启Generate Overlap Events的性能消耗是关闭情况下的两倍。

 6.3、 不需要物理,将 Simulate Physics 设置为false。

 6.4、 不需要Hit事件,将 Simulation Generates Hit Events 设置为false。

 6.5、如果场景中物体类型(WorldStatic、WorldDynamic、Pawn等)很多,且每种数量也很多,则Collision 的 Object Response 通道设置的越少越好,把可以设置为 Ignore 的通道都设置为 Ignore 。如果场景中的物体类型比较单一,即使这种类型的物体在场景中有数百个,Object Response 即使都设置为Block 或者 Overlap,对性能也没有影响。

七、阴影优化

  7.1、Directional Light:Dynamic Shadow Distance(默认为0,表示关闭)。提升性能的原因:Dynamic Shadow Distance 表示在多少距离内使用动态阴影,超过这个距离之外Fade成静态阴影,而Fade成静态阴影后就可以提升性能。

八、UI优化

  8.1、游戏线程优化

    1.GridPanel会遍历所有的ChildWidgets,r然后计算Draw Elements,最后Grid Panel返回一个或者多个Draw Elements进行渲染,如果是是一个复杂的控键数,这个开销也是比较大的。解决的办法是使用Invalidation Box缓存Draw Elements (Vertex Buffer),用Invalidation Box封装GridPanel。

 

这个有一点需要注意的是一个Volatile的概念,如果标志成Volatile的Widget每帧都会重新计算,一些属性的Widget Binding会使得Widget变成Volatile,Check Box放在Invalidation Box下会不起作用,需要设置成Volatile,建议自定义User Widget,用Button实现对应功能。

可见性:HitTestInvisible 可见、当前控件不可点击、所有子控件不可点击,SelfHitTestInvisible 可见、当前控件不可点击、不影响子控件,Hidden 不可见、占用布局空间,Collapsed 不可见、不占用布局空间。

 果大量的Visible会导致点击响应太慢,这个也会消耗很大的性能,Button设置成Visible,其它Widgets可以设置成Self Hit Test Invisible或Hit Test Invisible,Collapsed不占用布局空间, 略优于Hidden,Show/Collapse要优于AddToViewport/RemoveFromViewport。

这里还要讲一个是Widget Binding,某些属性上Widget Binding会导致对应Widget被放入Volatile List,这些属性发生变化,表示对应的控件需要重新计算Vertex Buffer,所以我们尽量避免这个Widget Binding。另外还有一点是Widget Binding会每帧Tick执行,这一点也会带来比较大的性能开销,所以手机上面建议使用C++ Event设置Widget属性。

 8.2、渲染线程优化

渲染线程优化,渲染线程首先介绍一个合并批次,我们在左图看到的是UI的有些可以合并批次,有些不可以合并批次,像不合并批次Canvas Panel、合并批次Grid Panel、Uniform Grid Panel、Vertical Box、Horizontal Box。

 Retainer Box,将UI渲染到Render Target,再将Render Target 渲染到屏幕,另外引擎处理了点击响应区域的映射,鼠标点击区域引擎已经自动在屏幕上面映射了相应的测试。

Widget Render:将UI渲染到Render Target,Slate Render: 使用缓存的Render Target渲染Back Buffer,每隔3帧一个循环进行Retainer Box的更新,将1帧的UI渲染工作量分配到3帧去处理。

九、程序优化

       蓝图的话其实在大多数情况下性能都是没有问题的,但是如果我们要在低端机上面需要追求很好性能的话,其中有计算量比较大的逻辑,我们是不建议放在蓝图里面做,因为毕竟中间有很多的分装,建议可以把一些计算量比较复杂的逻辑下放在C++里面做,运行效率比蓝图高,更灵活,很多C++接口并未开放成蓝图接口,除了UI动画,其它代码都能用C++实现。

对于UI开发,我们建议开发者有Widget Manager,可以在蓝图中,也可以在C++中,就是管理所有User Widget,Brush、Font等资源也可以在Widget Manager中统一管理,这样的项目比较好管理,特别是UI比较多的时候。

对于3DRTT,这个小技巧并不需要每帧Tick,只要和动画频率大致同步就可以,所以我们要把每帧去渲染的两个选项关闭,同时这个蓝图我们设置成0.03秒Tick一次,产生在蓝图当中Tick这样的RTT,另外还有一个小细节就是Render Target的尺寸不要太大,会影响显存和渲染效率。

收集UE4 优化Tips

不包含UE官方文档等资料

 

UE4优化的后期效果

http://www.adriancourreges.com/blog/2018/12/02/ue4-optimized-post-effects/  

以下是我编写的一小部分自定义项/技巧,目的是优化某些效果的运行时成本,同时尽可能接近原始UE4的原始外观。这样做的目的是为您提供一个即插即用的替代品,您可以轻松地将其集成到自己的游戏中,从而在X1上获得更好的性能。在这里,我将主要写以下内容:

UE4创建的UI及优化方法

●目标

●可以使用UMG构建有效的UI

●可以应用UI优化方法

●对象

●UMG艺术家

●TA的实现和优化工程师

 

60fpsアクションを実現する秘訣を伝授 解析編    介绍实现60fps动作分析的秘诀

60fpsアクションを実現する秘訣を伝授 基礎編    介绍实现60fps动作的秘诀

そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>              是的,对于UE4。许多让您的手机游戏更舒适的酷方法第1部分<Shader Compile,PSO Cache>

讲座视频:https://youtu.be/A_l65FlY25I

         注意:在考虑引入LRU缓存时,请考虑同时启用OpenGL.UseEmulatedUBs。

移动游戏开发特有的许多问题,例如由于着色器编译而导致的卡顿,它们会导致用户压力。 UE4具有解决此问题的功能,但是如果您没有根据用法和剂量正确使用它,则会出现另一个问题。因此,在本讲座中,我们将解释如何使用这些功能和注释(我们计划使其对其他平台开发有用)。

 

そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロファイル, Auto Instancing編>            是的,对于UE4。许多使您的手机游戏更舒适的酷方法,第2部分<纹理流,内存配置文件,自动实例化>

讲座视频:https://youtu.be/A_l65FlY25I

 

[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法    [版本4.20] UE4中的加载和GC分析和优化

从4.20开始,GC扫描处理可以分布在多个帧中,因此我添加了它。

(如果您要减少由于UE4中的GC而导致的加载时间或停顿(停顿),我们已总结了如何确定问题部分以及如何对其进行优化的第一步。我很高兴。)

UE4におけるLoadingとGCのProfilingと最適化手法        如果您想减少由于UE4中的GC而导致的加载时间和停顿(停顿),我们已总结了如何识别问题部分以及如何对其进行优化的第一步。希望能为您提供参考。

 

徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!                      彻底的解释!使用UE4开发手机游戏中内容更新的秘密!

アーティストの為のプロファイル入門! 楽しいRenderDocの使い方       艺术家简介! 〜使用RenderDoc的有趣方式〜

[UE4]艺术家可以处理的优化工作

这次,我想简要介绍一下艺术家实际上可以在项目中完成的优化工作。

我将介绍多边形缩小,LOD设置,纹理大小限制和反弹设置。

多边形缩小

View Mode > Optimization Viewmode > Quad Overdraw

StaticMeshのDetail > LOD0 > ReductionSettings

LOD设置

纹理大小限制

剔除(边界)设置

 

UE4 Texture/Material/Cascade optimization tips

UE4纹理/材质/级联优化技巧

  • 包含许多优化UE4性能的技巧的长文档
  • 主要针对材料和视觉特效相关的优化

 

 

 

《Learning Unreal Engine Android Game Development》 章节:Mobile performance and optimization

https://subscription.packtpub.com/book/game_development/9781784394363/7/ch07lvl1sec52/mobile-performance-and-optimization

移动性能和优化

每个开发人员都希望通过各种方式使他们的游戏变得美观漂亮

后处理的类型,复杂的着色器,照明等。虽然这是完美的在PC /控制台上进行游戏时很好,您必须记住,移动设备平台具有某些技术限制,可能会导致您的游戏表现不佳,从而导致销售不佳。这里有一些技巧和窍门您可以优化游戏以获得最佳性能。

•整个场景的DC要求应小于700,以实现最棒的表演。

•尽管动态灯光使游戏看起来不错,但在技术方面。因此,除非您绝对要求他们避免使用动态灯。另外,建议您在搭建照明之前您可以在设备上移植游戏。

•整个场景的三角形数理想上应为500,000或更少。

•除非绝对需要,否则应关闭“移动高清”渲染(HDR)。这会关闭照明功能,并大大改善在移动设备上的性能。

•同样,除非需要,否则应关闭后处理功能,以便更好性能。

•当涉及纹理时,为防止内存浪费,请使用其分辨率应该是2的幂(256 x 256、512 x 512、1024 x 1024,依此类推)。您可以在引擎的“项目设置”中设置一些“渲染”选项类别,位于“渲染”部分下。

 

 

[UE4]艺术家可以处理的优化工作

https://historia.co.jp/archives/12838/

 

 

虚幻引擎4的PowerVR性能提示

https://www.imgtec.com/blog/powervr-performance-tips-for-unreal-engine-4/

  • 渲染设置
  • 禁用Pre-Z Pass
  • 更改渲染API
  • 设备配置文件
  • 可视化方法和分析工具
  • 移动内容优化

 

 

UI optimization tips in Unreal Engine 4

https://topic.alibabacloud.com/a/ui-optimization-tips-in-unreal-engine-4_8_8_10274886.html

在2017年虚幻开放日活动中,Epic Games开发人员支持工程师Guo Chunbiao先生向在场的开发人员介绍了虚幻引擎4中的UI优化技术。以下是语音记录。

      大家好,我是Epic Games的开发人员支持工程师Guo Chunbiao。今天,我将向您介绍UE4的UI优化体验。之前我们已经收到国内开发商的一些投诉。他们觉得打开手机上的UI后,性能会迅速下降。今天,我将为您特别介绍如何在UE4上进行UI优化。本文介绍的UI优化方法不仅适用于移动平台,而且对于其他平台(例如PC和主机)上的复杂UI系统也具有很大的性能改进。

文章目录:

1 UI的基本概念

1.1术语解释

1.2渲染过程

1.3性能指标

2优化计划

2.1游戏线程优化

2.1.1失效框

2.1.2可见性(Widget可见性)

2.1.3 Widget绑定

2.2渲染线程优化

2.2.1合并批次

2.2.2保留盒

2.2.3事件驱动的保留盒

2.2.4切换材料

2.3其他优化

2.3.1 C ++开发

2.3.2管理器类

2.3.3可用纹理存储

2.3.4 3D RTT优化

2.3.5新功能

3效果测试

4总结... 34

[UE4] Optimization Guide (the program)[UE4]优化指南(程序)

https://www.codetd.com/en/article/7259795

  1. GPUProfile的时间性能统计要消耗,在编辑器模式下不是很准确,因为编辑器的消耗量也要枚举,如果您这样做,最好在游戏模式下查看。
  2. UE4不支持640X480分辨率,如果在此分辨率下运行程序将导致程序崩溃(4.4版,我不知道最新版本是否仍然存在问题)。
  3. 如果具有大量Component的角色需要附加,则在使用附加时,尽可能对所有附加进行加载,或者当场景中有许多角色时,将出现严重的性能问题。
    例如:场景中有数百个角色,但并非每个角色都需要一个摄影机和一个弹簧臂,因此不要在构造函数中创建摄影机和弹簧臂组件。
  4. 即使在移动终端中,UE4也不敏感。在ipad 4上,5000万用于三角形,可以将帧率的操作稳定到30fps,移动终端主要是Map Size,材质的复杂度敏感。
  5. 编辑地形时,请使用“实例化静态网格物体”。实例化会增加GPU的成本,但可以大大减少CPU开销。注意:实例化不会减少CPU绘制调用的数量,要减少绘制调用的数量,需要减少物料类型,提供物料重用率。
  6. C++ 比 蓝图快100到1000倍
    [Test] Blueprint vs C++ Performance vs Nativized BP
    https://www.reddit.com/r/unrealengine/comments/6qtxy3/test_blueprint_vs_c_performance_vs_nativized_bp/
  7. 打开Occlusion Culling (默认打开项目设置->引擎->渲染->遮挡剔除)。如果您需要加强遮挡剔除努力(在不计成绩的费用是意外)来提高渲染效率,增加以下属性值:
    最小屏幕灯为半径
    最小屏幕早期的Z-通为半径
    最小屏幕半径级联阴影贴图
  • 照明优化
  • 阴影优化
  • 材料优化
  • 物理和碰撞优化
  • 动画优化
  • UI优化
  • 优化显示数量
  • 特殊效果优化
  • AI优化
  • 专用服务器优化
  • 参考资料

 

 

 

UE 教程 性能优化

  • 开发者的笔记
  • 统计计数器
  • 托尔瓦工具

 

 

UE4-静态网格优化选项概述

当您开始构建更大的级别时,您开始意识到渲染大量静态网格物体的性能成本。渲染大量的静态网格物体可能会占用大量处理能力,并会降低您的帧速率以进行爬网。虚幻引擎支持多种选择,可以帮助优化静态网格物体。

https://www.casualdistractiongames.com/post/2017/01/07/ue4-overview-of-static-mesh-optimization-options

 

虚幻引擎4优化必备知识

由于所有移动设备的多样性,移动优化可能具有挑战性。从高端平板电脑/手机到低端智能手机。硬件变化很大,甚至每年都在变化。

https://ctalyst.com/blog/must-know-unreal-engine-4-optimization/

 

虚幻引擎优化-第1部分

https://www.stateofartacademy.com/en/unreal-engine-optimization-part1/

如何分析虚幻引擎场景的性能

软件:Unreal Engine 4.19.2

插件:RenderDoc(免费)

硬件规格:CPU英特尔i7-6900K(8 + 8核)| GPU GTX 1060 6GB

       性能分析和随后的场景优化是项目创建中的两个基本步骤。但是,要优化场景,首先必须分析问题所在。这样,我们不必优化整个场景,而只能专注于最需要优化的区域。

        在本教程中,我们将看到性能分析过程的一小部分,以了解降低场景渲染速度的原因。

虚幻引擎优化–第2部分

如何分析虚幻引擎场景的性能

           在本教程的第二部分中,我们将看到如何找到在第一部分中分析的问题的解决方案,以便我们可以改善游戏的性能。

 

 

 

虚幻艺术优化UNREAL ART OPTIMIZATION

 

| 使用RYZEN THREADRIPPER进行游戏开发–优化UE4的构建时间

https://gpuopen.com/learn/threadripper-for-gamedev-ue4/

 

| 在虚幻引擎4中进行性能分析

https://gpuopen.com/unreal-engine-performance-guide/

进行分析时减少CPU开销

分析时考虑使用测试版本

分析前执行最后检查

重复分析

从一个位置分析

减少分析结果中的噪声

考虑制作自己的测试场景

CPU绑定或GPU绑定?

| 使用RGP

RGP和UE4示例

| 内置轮廓分析工具

UE4 stat命令

GPU可视化器

FPS图表

| 在虚幻引擎4中进行优化

优化几何

优化您的DrawCall

优化您的GPU执行

优化视图模式

| GPUOPEN UE4优化案例研究

案例研究1:使用一个三角形进行全屏绘制

 

 

 

 

 

 

Unreal * Engine 4优化教程,第1部分

https://software.intel.com/content/www/us/en/develop/articles/unreal-engine-4-optimization-tutorial-part-1.html                  (知乎有翻译版本)

在本教程中,我们介绍了在引擎内外使用的一系列工具,以及编辑器的一些最佳实践,并通过脚本编写来帮助提高项目的帧率和稳定性。

内容

Unreal * Engine 4优化教程,第2部分

https://software.intel.com/content/www/us/en/develop/articles/unreal-engine-4-optimization-tutorial-part-2.html

内容

Unreal * Engine 4优化教程,第3部分

https://software.intel.com/content/www/us/en/develop/articles/unreal-engine-4-optimization-tutorial-part-3.html

内容

Unreal * Engine 4优化教程,第4部分

https://software.intel.com/content/www/us/en/develop/articles/unreal-engine-4-optimization-tutorial-part-4.html

内容

 

 

 

ARM Guide for Unreal Engine 4 Optimizing Mobile Gaming Graphics针对虚幻引擎4的ARM指南优化移动游戏图形

https://documentation-service.arm.com/static/5e8348fe11772b3fd10d66a5?token=

            看过Unity版本的(有中文), 2017年的文档,硬件跟引擎在进步,所以有些内容会过时,但是依然有用。

https://developer.arm.com/documentation/100959/latest

 

游戏开发优化研讨会   PPT

内容

上半场

  1. 验证应始终(始终)
    • 在保持质量的同时进行优化
  2. 顶点处理和像素处理
    • 让我们有效地扭转波涛
  3. 重复写入无用的像素
    • 精心创建数据的意义
  4. LOD的真正效果
    • 多边形不仅仅需要缩小

后半

  1. 动态阴影和静态阴影
    • 最后烧掉阴影
  2. 高效地组织远景模型
    • 并非所有人都应该合而为一
  3. 关于纹理分辨率
    • 大纹理不是改善质量的方法
  4. 注意在UE4中进行绘图调用
    • 这不是应该放在乌云中的东西

*内容使用了虚幻引擎4中的示例,但是无论环境如何,都可以使用概念本身。

 

游戏开发演示幻灯片中的优化研讨会
https://docs.google.com/presentation/d/1f7dJu60Sy2KQgebX1Eju2TMIig1mqBAoymdaUsFMsrM/edit?usp=sharing

 

 

以上是关于UE4 /UE5 PC/安卓优化的主要内容,如果未能解决你的问题,请参考以下文章

UE4UE5模型鼠标点击选中边缘高亮(附UE5工程)

UE4,UE5虚幻引擎源码版下载

ue5渲染布料抖动

UE4/UE5引擎 FPS游戏逆向工程

UE4UE5触摸屏touch事件:单指双指

UE5 UE4 WorldCreator地形快速制作