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
移动性能和优化
每个开发人员都希望通过各种方式使他们的游戏变得美观漂亮
后处理的类型,复杂的着色器,照明等。虽然这是完美的在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
- GPUProfile的时间性能统计要消耗,在编辑器模式下不是很准确,因为编辑器的消耗量也要枚举,如果您这样做,最好在游戏模式下查看。
- UE4不支持640X480分辨率,如果在此分辨率下运行程序将导致程序崩溃(4.4版,我不知道最新版本是否仍然存在问题)。
- 如果具有大量Component的角色需要附加,则在使用附加时,尽可能对所有附加进行加载,或者当场景中有许多角色时,将出现严重的性能问题。
例如:场景中有数百个角色,但并非每个角色都需要一个摄影机和一个弹簧臂,因此不要在构造函数中创建摄影机和弹簧臂组件。 - 即使在移动终端中,UE4也不敏感。在ipad 4上,5000万用于三角形,可以将帧率的操作稳定到30fps,移动终端主要是Map Size,材质的复杂度敏感。
- 编辑地形时,请使用“实例化静态网格物体”。实例化会增加GPU的成本,但可以大大减少CPU开销。注意:实例化不会减少CPU绘制调用的数量,要减少绘制调用的数量,需要减少物料类型,提供物料重用率。
- 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/ - 打开
Occlusion Culling
(默认打开项目设置->引擎->渲染->遮挡剔除)。如果您需要加强遮挡剔除努力(在不计成绩的费用是意外)来提高渲染效率,增加以下属性值:
最小屏幕灯为半径
最小屏幕早期的Z-通为半径
最小屏幕半径级联阴影贴图
- 照明优化
- 阴影优化
- 材料优化
- 物理和碰撞优化
- 动画优化
- UI优化
- 优化显示数量
- 特殊效果优化
- AI优化
- 专用服务器优化
- 参考资料
UE 教程 性能优化
- 开发者的笔记
- 统计计数器
- 托尔瓦工具
UE4-静态网格优化选项概述
当您开始构建更大的级别时,您开始意识到渲染大量静态网格物体的性能成本。渲染大量的静态网格物体可能会占用大量处理能力,并会降低您的帧速率以进行爬网。虚幻引擎支持多种选择,可以帮助优化静态网格物体。
虚幻引擎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部分
在本教程中,我们介绍了在引擎内外使用的一系列工具,以及编辑器的一些最佳实践,并通过脚本编写来帮助提高项目的帧率和稳定性。
内容
Unreal * Engine 4优化教程,第2部分
内容
Unreal * Engine 4优化教程,第3部分
内容
Unreal * Engine 4优化教程,第4部分
内容
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
内容
上半场
- 验证应始终(始终)
- 在保持质量的同时进行优化
- 顶点处理和像素处理
- 让我们有效地扭转波涛
- 重复写入无用的像素
- 精心创建数据的意义
- LOD的真正效果
- 多边形不仅仅需要缩小
后半
- 动态阴影和静态阴影
- 最后烧掉阴影
- 高效地组织远景模型
- 并非所有人都应该合而为一
- 关于纹理分辨率
- 大纹理不是改善质量的方法
- 注意在UE4中进行绘图调用
- 这不是应该放在乌云中的东西
*内容使用了虚幻引擎4中的示例,但是无论环境如何,都可以使用概念本身。
游戏开发演示幻灯片中的优化研讨会
https://docs.google.com/presentation/d/1f7dJu60Sy2KQgebX1Eju2TMIig1mqBAoymdaUsFMsrM/edit?usp=sharing
以上是关于UE4 /UE5 PC/安卓优化的主要内容,如果未能解决你的问题,请参考以下文章