合并网格

如之前在线框可视化解释中提到的,减少三角形和顶点的数量永远都是提高性能的方法,但是很多时候,一个单独网格比多个网格刻画集合图形的性能要好得多(一个有1000个顶点的网格可能比10个有100个顶点的网格的更新和渲染都快)。这是因为不仅这些网格可能会分别单独调用GPU来绘制,也因为UE4会为每个网格单独保存和更新变换信息,而且可能检查这些独立网格间的碰撞。所以,如果没有功能性的原因来设置单独网格的话,你应该考虑在把它们引入UE4之前在DCC工具中选择合并它们。

关于合并网格反对的说法是:一个单独的网格可能不能被部分剔除,所以如果它的任何一部分是可见的,整个网格都会渲染。由于这个原因,可能把你的整个关卡都合并成一个单独网格可能不是一个好主意,但是让每一个三角形都成为一个单独网格同样也不是最理想的,所以在两种极端中取得平衡至关重要。

由大量网格组成的单一对象

使用由很多独立网格组成的对象(比如说一辆车的每个独立部分由成百成千的单独网格组成)对于引擎来说可能任务非常繁重,如果引擎在仿真时把每个网格当做独立对象,而且为每个网格单独运行引擎系统(例如:在你的对象中为几千个网格进行单独的挽歌物理仿真)。

像这样对许多网格组件进行父处理并且把它们作为一个对象处理比较好,但是我们有一些建议提供给你,来避免在这些事情上浪费不必要的CPU和GPU的周期。

首先,如果你的对象中有许多网格并且经常不可见,试着不要在移动场景中建立这些网格直到它们可见。即使网格没被渲染,每当一个父级网格组件的变换改变时,每个子网格组件的变换都会被更新,而且在网格需要可见前不要调用Components.Add()方法,这样可以节省许多处理器周期。

同样道理也适用于在游戏系统中注册不可见的网格,如果网格不可见,它的物理形态等可能不需要每帧都更新,所以,在网格需要变为可见之前不要在不可见网格组件上调用RegisterComponent()方法。

避免在由相同对象组成的、或不需要相互碰撞的网格间运行碰撞检测。

对于那些不需要碰撞的子网格组件,把它们的碰撞情况设置为无:

ChildMeshComponent­>SetCollisionProfileName(UCollisionProfile::NoCollision_ProfileName);

如果你的角色一点也不需要碰撞,那么就在你的父级网格组件上设置相同的内容,否则就在父级上启用碰撞,但是给它一些能表示它和它的孩子的碰撞说明。

如果包含你的角色的网格组件是接触的或重叠的,它们就会产生重叠时间。如果你不在意这些事件,禁用它们会提升性能:MeshComponent­>bGenerateOverlapEvents = false;

屏幕剔除系统用网格组件的边界来确定该网格是否应该在这一帧中渲染。对于那些含有许多网格组件的对象来说,即使对象部分在屏幕外,为每个独立子对象检查边界的代价也可能比单纯渲染所有网格组件的代价要大。试着设置子网格组件使用它们父级组件的边界,来测试观察性能是否没有提升。

ChildMeshComponent­>bUseAttachParentBound = true;

给所有这些网格单独打光是不必要的繁重任务——在CPU配置文件中渲染线程部分中“更新间接照明缓存”的毫秒数值很高。通过在你对象的根组件中设置bLightAttachmentsAsGroup为true,你可以选择在你的对象的每个网格中使用相同的间接照明缓存信息,这会节省独立更新网格的时间。

推荐的光线性能设置

动态对象的每个对象阴影可以通过不选关卡平行光中的bUseInsetShadowsForMovableObjects 的flag来禁用,这会提升性能。

在你的关卡的平行光属性中,经常减少动态阴影级联的数量不会对阴影外观产生非常大的影响,但是会提升性能,我认为默认的是5,但是减少至大约3的样子就会产生大致差不多的效果。

动态阴影

动态阴影的代价可能很大,尤其是全局动态阴影。这是因为三角形必须得为动态阴影映射重新渲染。如果你在移动光源上需要许多动态阴影来使多边形尽可能少,如果你想要更多多边形,那就试着少用带有动态阴影的可移动光线。

记住,设置了4个以上的重叠固定光线会迫使半径最小的那个变成可移动的,这样就会开始投射动态阴影。本文他处讨论的固定光重叠可视化是确保没有过多重叠的好方法。

限制后过程效果

后过程效果同样是代价很大的,禁用你不需要的效果也可以很大地提升性能。一些可以考虑禁用的后过程效果包括镜头闪光、土地深度和屏幕空间反射。为了提升性能,你可能也想要以低质量运行屏幕空间抗混叠,以更小的散景尺寸运行散景DOF,因为这里的尺寸与性能是负相关的(更大的散景意味着更差的性能)。

如果最终你可以在其它系统中取得足够的性能提升,你可以之后选择性地把这些效果重新启用。

高存储低质量影响

在后过程设置中禁用scene color fringe

禁用 ambient cubemap,用 LightmassEnvironmentColor代替

通过设置强度在后过程设置中禁用imagebased lens flares 。

在单一镜头中限制贴花数量

如果在摄像头中同时有许多彼此接近的贴花,有时这样的代价是很大的。如果你有比如说50个贴花正同时被渲染,这对于性能可能有消极影响。试着稀释或扩散这些贴花,那么就不会有那么多贴花同时被渲染了。

以更低分辨率和更少变形渲染

如果你想要试着以稍低的分辨率和稍少的变形进行渲染来节省性能,试着做、看看它看起来和运行起来效果如何是非常简单的。

当游戏运行时,你可以打开控制台输入“r.screenpercentage 90”,其中90是全凭尺寸和渲染的百分比。

更永久的设置方法是:选中你的后步骤列表里的“覆写屏幕百分比”框,之后将屏幕百分比设置成想要的百分比(小于等于100)。

场景捕捉对象

场景捕捉对象(如场景捕捉立方体)的默认设置是捕捉每帧。捕捉这些基本涉及到从不同视角渲染整个场景(对于一个场景捕捉立方体来说,会这做6次,每次渲染立方体的一个面),还有从玩家的视角来渲染。这样的代价明显是很大的(如果一个场景中有许多这样的对象尤其如此),所以,除非每帧都抓取它们是你的游戏的一个重要特点,抓取应该被禁用。

总体来讲,同样的原因,限制场景抓取物件的总数量是有道理的。

其它涉及事项:

设置最大和最小帧率

可以在DefaultConfig.ini.文件中设置来控制这个变量,默认如下:

[/Script/Engine.Engine]bSmoothFrameRate=true MinSmoothedFrameRate=22

MaxSmoothedFrameRate=62

禁用遮挡剔除

对于一些特定类型的游戏,遮挡剔除可能会花费比它本身所节省的时间更多。比如:在打斗游戏中,通常场景中的所有内容都应该是被渲染的,不常见的情况是许多几何图形被其他对象遮挡,在这些情况下,使用全局预计算可见复选框也许有帮助。

ue4渲染速度太慢_技术汇丨如何在UE4中实现最佳性能和高质量视觉效果相关推荐

  1. ue4渲染速度太慢_[UE4]性能优化指南(程序向)

    封面来源:A Cold Stop(Mixer 制作材质.UE4渲染 ) [UE4]性能优化指南(美术向)玄冬Wong:[UE4]性能优化指南(美术向)​zhuanlan.zhihu.com 内容都是处 ...

  2. ue4渲染速度太慢_推介飞向月球纪录片基于Unreal实时渲染引擎的三维流程化制作...

    作者:中央电视台 葛小丁 2019年1月3日上午10点26分,"嫦娥四号"探测器成功着陆在月球背面东经177.6度.南纬45.5度附近的预选着陆区,并通过"鹊桥" ...

  3. echart 实例显示位置_技术分享:如何在Unity中使用实例化渲染?

    编者按 在日常开发中,通常说到优化.提高帧率时,总是会提到批量渲染.之前简单总结了静态合批(点此查看全文)以及动态合批(点此查看全文),这次作者将和大家聊聊实例化渲染. 作者:枸杞忧天 (本文内容由公 ...

  4. ue4渲染速度太慢_UE4 渲染性能设置

    LightingAllow Static Lighting : 是否开启静态光照, 开启后将生成 lightmap, shadow map之类的可在静态光照下使用的贴图,否则仅使用动态光照, 修改此项 ...

  5. 骨架屏技术讲解以及如何在Vue中实现骨架屏

    骨架屏技术讲解以及如何在Vue中实现骨架屏 写在前面 骨架屏是什么 如何实现(原理分析) 一个生动的例子 实现方式(具体实现) 方案一.在模版中来实现骨架屏 方案二.使用一个Base64的图片来作为骨 ...

  6. dota2html颜色代码,技术向教程 如何在DotA2中使用彩色字体

    技术向教程 如何在DotA2中使用彩色字体 编译:M82A1炸菜 如何使用16进制编辑器对DotA2文字就行颜色编辑 需要:十六进制编辑器.记事本.控制台 1.打开steam平台 2.在游戏库中选择D ...

  7. doe报告模板_技术漫谈|关于制剂研发过程中的实验设计(DOE)误区讨论

    技术漫谈 第01期 关于制剂研发过程中的实验设计(DOE)误区讨论 // 作者:合全药业制剂业务后期项目部 感谢合全药业制剂研发后期团队朱莹.夏彬等同事对本稿件的支持 早在2004-2005年,FDA ...

  8. 设计有三个窗口的框架结构网页_技术周刊丨钢框架结构直接分析设计与传统设计方法对比研究——恒荷载作用结果对比...

    ▲ 点击上方蓝字,关注SAUSAGE非线性!作者:侯晓武 丨 职位:技术经理 仁荷大学(韩)建筑工学博士 曾任建筑软件(MIDAS Gen/Building)技术负责人 拥有11年建筑软件技术支持经验 ...

  9. java生成sm4算法的对称密钥_技术分享丨这是一篇简单的小科普——什么是对称加密算法?(下)...

    原标题:技术分享丨这是一篇简单的小科普--什么是对称加密算法?(下) 大家好~我是贾正经,又到了干货满满的技术分享趴啦~ 上期我们讲解了对称加密算法的小知识,并介绍了国密算法中SM4算法的原理. 本期 ...

最新文章

  1. 购买Entrust SSL 数字证书?你怎么看?
  2. Android中使用EventBus事件发布/订阅框架实现事件传递
  3. toj 3616 Add number (没想到啊~~)
  4. $(document).ready()和window.onload之间的差异
  5. PHP 与go 通讯,Golang和php通信
  6. 列运算_DAX表操作基础第二招:增加列
  7. 若依如何防止请求重复提交?
  8. java 字符串换行问题
  9. 小明历险记:规则引擎Drools教程详解
  10. Web_php_unserialize,XCTF-Web_php_unserialize
  11. 如何用python搜索要用的素材_一篇文章教会你利用Python网络爬虫获取素材图片
  12. Vue之点击收藏与取消收藏
  13. 鼠标事件 onmouseover、onmouseenter、onmouseleave和onmouseout
  14. 【05】制作鸿蒙版蜻蜓短视频系统-事件原理及完成点击,长按,双击等操作实现跳转-优雅草伊凡
  15. 约束constrain,SystmVerilog语法
  16. 三轴高速激光扫描振镜
  17. 手把手教你搭建完美的 Android 搞机/逆向环境
  18. 一看就懂!!各进制转换方法
  19. zblog php伪静态,zblog php 伪静态设置详解
  20. 学习索引结构的一些案例——Jeff Dean在SystemML会议上发布的论文

热门文章

  1. 二进制的科学计数法?白话谈谈计算机如何存储与理解小数:IEEE 754
  2. mysql4.52_phpMyAdmin 4.5.0.2 发布下载,MySQL 管理工具
  3. 寻找不到iframe元素
  4. 怎么实现FineReader选项卡中的保存模式的修改
  5. unity 获取预制体_Unity打包插件AssetsBundleBrowser的使用
  6. python 系统策略禁止这个安装_电脑无法安装软件提示设置了系统策略禁止此项安装怎么办?...
  7. sv_labs学习笔记 专栏说明博文目录
  8. Spring在SSH中的角色和作用
  9. android SQLite常用数据类型
  10. freebsd 6.2 安装配置笔记[转]