UE4项目优化(帧数优化)相关知识

2023-05-16

控制台命令

  • r.screenpercentage 0~100 0是百分之百 如果改了这个 游戏运行超级流畅说明瓶颈在GPU上
  • stat fps 显示帧率(Frame Per Second)(或者快捷键Crlt+Shift+H 显示帧率)
  • stat unit 把Frame拆分 其中最接近 Frame的就是瓶颈,Game为游戏逻辑方面的(CPU端)
  • stat rhi 查看draw call和三角面数量
  • stat game 查看每一帧有多少tick操作
  • stat memory 查看内存使用情况
  • r.maxfps 80 更改帧数限制
  • show static/skeleton mesh 显示隐藏静态/骨架网格体
  • show translucency 显隐半透明材质
  • stat sceneRendering (类似于rhi)场景渲染查看、检查CPU使用率 主要看 Draw calls
  • r.shadowquality 0~5 阴影质量 0是无
  • freezerendering 冻结渲染,即冻结此刻摄像机所在的位置 查看当前帧所渲染的内容。此刻绘制进程是停止状态,可以查看锥形剔除的效果
  • Stat initviews 提供有关遮挡的概览
    下方Counters里面 Processed primitives(进行中的图元)——目前渲染的图元数量
    Frustum culled primitives(椎体剔除的图元)——目前被椎体剔除的图元数量
    Statically occluded primitives(静态遮挡图元)——因遮挡而被剔除的图元数量

其他相关知识

  • Ctrl + Shift + ,GPU可视化工具
    此工具可以看到GPU在引擎各个工作上面的性能消耗
    如果是Postprocess消耗过高,可以删除一些光源,或者改用静态光源
  • Draw call降低方式
    draw call 引擎代码发送的用来绘制一组多边形的指令,CPU发出的
    影响因素:多边形数量、材质复杂性
    解决办法:减少对象数量、合并对象(多个对象组合成一个,只用一个draw call)、移除外部材质通道、减少动态投射的阴影数量
  • 性能消耗查看——视图模式
    • Light Complexity:看光照对GPU的消耗。用渐变的颜色显示场景,绿->红->白等颜色性能消耗递增,优化方法:减少光照重叠区域,静态模型用静态光。
    • Shader Complexity:看着色器使用数量,跟材质有关的,比如绘制透明材质消耗很大,如果透明材质互相重叠则性能影响更大时。优化方法:换材质
    • Quad Overdraw:模型面数可视化。优化方式:LOD、剔除距离体积
  • Jacketing功能
    通常导入的建筑或者工业模型会有一些用户永远看不到的面数又很大的部分,这时候需要用jacketing功能来剔除对象和不需要的多边形。注意这个操作是不可逆的,所以通常以防万一需要备份原来的模型。
    启用“Polygon Editing”插件,在视口中选择要修改的对象或者对象组,右击选择jacketing,弹出框内,Action level 选择level或者mesh
    level适合用于一个对象含有许多零件,而这些零件在外部任何角度都看不见,剔除构件。
    mesh从单个三角形的层面出发,剔除某个模型从外部任何角度都看不见的三角面,剔除三角面。
  • 实例化静态网格体 Instanced Static Meshes
    多个网格体只有一次Draw call

项目设置

  • Target Hardware
    设置目标硬件是Table/Mobile,选移动平台会禁用很多效果,提高性能,还可以设置项目注重画面质量还是运行速度。

  • General Setting -> Framerate(帧率)
    Fixed Frame Rate(使用固定帧率)
    Smooth Frame Rate(范围内平滑帧率)

  • Rendering -> Culling
    确保Occlusion Culling(遮蔽剔除)是开启的。(默认开启)

  • Rendering -> Reflections
    调整分辨率或者反射步骤来节省GPU绘制时间,数值2的次方

  • Rendering -> Default Settings
    这里的设置是”后期处理”的内容,是全局性的,会被后期处理体和摄像机Actor中的设置覆盖

  • Rendering -> Default Settings -> Ray Tracing
    实时光线追踪非常消耗性能,如果不需要实时光线追踪来实现真实反射效果、全局照明等效果 请禁用。此设置在VR和Mobile应用中无效。

LOD 细节等级设置

  • LOD:Level of Detail,LOD是同一3D模型的不同版本具有不同程度的细节,根据观看者离物体的距离决定的。里相机越远则选用面数越低的模型

  • 设置LOD:打开模型编辑器,左上角可以看到Triangles的数量,在LOD Picker下可以选择是自定义或者自动生成LOD“Custom”“Auto”.其中LOD Auto:下面有LOD Settings,可以在LOD Group里面选择削减方式,如SmallProp。

  • 批量设置LOD:内容浏览器中选中所有的模型,右键->Asset Actions-> Bulk Edit via Property Matrix
    通过属性矩阵进行批量编辑。这个窗口中可以同时更改多个对象的设置

  • 设置LOD后,在编辑视口->视图模式-> Level of Detail Coloration -> Mesh LOD Coloration 可以用颜色显示模型在什么时候显示什么等级的细节

使用Data Smith插件在导入前进行LOD优化

  • 首先用DataSmith从3D建模软件把模型导出成udatasmith格式文件
  • UE4中右键创建 DataPrep Asset,这里面可以在模型导入编辑器之前 对其进行预览和处理;打开后 Imputs+,选择udatasmith文件,然后点击左上角 import。
  • 在大型建筑群项目用这个方法会非常好,首先要设定“选择标准”,在Select By下找到Triangle Count即用三角面数作为选择条件,拖入右边窗口。选择高于500面,然后在Operations下拖出“set LOD Group”,点击Execute,会自动处理,处理完毕后 点击Commit提交

渲染方式

  • 正向渲染:每个draw call 渲染一个物体,把物体的顶点属性走一遍渲染管线,最后进行光照计算得到渲染结果。后续每次渲染新的物体都是在前一次渲染结果上进行叠加。VR AR等小项目多用这个,抗锯齿更好
  • 延迟渲染:第一个pass中,走一遍渲染管线,渲染场景的几何信息,把可视范围内的所有物体的顶点属性(位置、法线、uv等)分别渲染到一张纹理图上。在第二个pass再走一遍渲染管线,一起做光照计算,性能提升非常大,对于多光源场景有着不错的性能表现。UE4默认渲染模式,用于大型游戏 重影是缺点
    • 延迟渲染有个GBuffer缓冲区,存放每一帧光照计算要用到的信息
  • UE4以draw call 为单位进行渲染 主要FPS影响在于draw call数量, 如场景中对象全部是复制品,面数极高,但是帧数可能会高于面数低但全为不同对象的情况,因为批量相同的对象只占用1个draw call

距离剔除

  • 每个对象细节面板rendering>lod下面的最大绘制距离 可以控制远处对象不渲染(单个物体进行设置),但是如果用CullDistanceVolume 可以对盒子内所有的物体 同时设置渲染距离

椎体剔除

  • 这是图形学基本概念,只渲染视椎体内部的对象,只有一个像素看到那个对象也会将其整个渲染,以对象为单位

预计算可见性体积PreconputedVisibilityVolume

  • 要先添加一个与计算可见性体积盒子,盒子内的对象都会被预计算可见性的单元格填充,所有格子内的对象都会预先在CPU中预计算对于任何一个方向的可见性,即从一个方向看这个volume中的东西,能看见哪些格子,在渲染时就可以很快的剔除那些不可见的小格子。这些单元格要通过光照构建才能生成,之后必须在视口 显示>可视化>设置预计算可见性单元格勾选。
  • volume中的每个单元格都包含一个表格,记录了当前位置可以看见的对象,当摄像机进入任何一个单元格,都会访问表格,判断谁可见,谁不可见。

抖动过渡Dithered LOD Transition

  • UE4会自带某个临界距离,远则模型粗糙,近则模型细致,但是这个变化是特别突兀的。
    在母类材质中,搜索Dithered LOD Transition勾选,可以平滑过渡这一变

检查内存使用率

  • 影响内存的因素主要是场景中的纹理Texture
    window > statistics > 下拉选择Texture Stats,查看Fully Loaded Memory即加载全部纹理需要的内存容量,点击这个选项卡更改为从高到低排序,可以查看哪个纹理占用的内存最大。在内容浏览器中找到它,点开后更改最大纹理尺寸 Maximum Texture Size 为更小的尺寸(2的整数次方),再去查看就可以看到总的加载内存消耗变低了。
  • 控制台:Streaming PollSize +整数MB 选择用多少MB内存来流送纹理
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UE4项目优化(帧数优化)相关知识 的相关文章

  • c语言/c++中指针的动态初始化及释放

    提醒 xff1a 使用指针最容易犯得错误是 xff0c 没有初始化就直接操作 xff01 xff01 xff01 1 指针的初始化 释放 1 xff09 指针指向一个内存单元 i c语言 xff1a char ch 61 char mall
  • c语言函数参数为指针的情况分析

    指针取 解引用 表示的是指针所指向内存单元中内容 xff1b 或者理解为该内存空间 指针传递其实也是一种值传递 xff0c 只不过传递的是地址值 xff0c 如果通过该地址取 解引用 xff0c 是可以改变形参指针的原值的 xff0c 但如
  • MATLAB快速傅里叶变换(fft)函数详解

    转载 xff1a https blog csdn net me4weizhen article details 53688848 定义 xff1a The 39 i 39 in the 39 Nth root of unity 39 是虚数
  • C++中substr()函数用法详解

    定义 substr 是C 43 43 语言函数 xff0c 主要功能是复制子字符串 xff0c 要求从指定位置开始 xff0c 并具有指定的长度 如果没有指定长度 Count或 Count 43 Off超出了源字符串的长度 xff0c 则子
  • 101、104规约解析

    转载 xff1a 电网101 104规约解析 xff08 Java xff09 张二狗和苗翠花的博客 CSDN博客 iec101 java 1 前言 最近在研究广东电网的101与104规约 xff0c 也就是DL T634 5101 200
  • 第一范式(1NF)、第二范式(2NF)和第三范式(3NF)

    第一范式 xff08 1NF xff09 xff1a 列1唯一确定列2 列3 列4 xff0c 即列2 列3 列4 不能再分裂出其它列 假设有关系模式列1 订单名 列2 商品 一个订单下可以有多个商品 xff0c 即列2 商品可以分裂成商品
  • 关于 傅里叶变换 的一些理解(通俗版)

    什么是傅里叶变换 xff1f 对随时间变化的曲线 xff0c 不再从时间轴上去看他的变化 xff0c 而是消去时间因子 xff0c 从出现的频率上来分析他的变化情况 例如 xff1a 股市变化曲线是随时间变化的曲线 xff0c 而通过傅里叶
  • excel取消多行隐藏

    同时取消多行隐藏 xff0c 需要选中隐藏行的上一行和下一行 xff0c 然后右键点击取消隐藏行
  • 双面打印说明

    长边翻页表示以A4纸较长的边翻页 xff0c 类似A4纸张大小的书本的翻页 xff0c 短边翻页则是以较短的边翻页 xff1b 长边翻页是从右往左翻页 xff0c 短边翻页是从下往上翻页 xff0c 翻页后文字观看方向不同 xff1b 长边
  • Segment routing分段路由

    为了解决传统IP转发和MPLS转发的问题 xff0c 业界提出了SR xff08 segment routing xff0c 分段路由 xff09 SR的转发机制有很大改进 xff0c 主要体现在以下几个方面 1 基于现有协议进行扩展 xf
  • mount: RPC: Unable to receive; errno = No route to host

    环境 xff1a gec2440开发板 VMware8 0 43 Ubuntu10 04 uboot xff0c kernel xff0c rootfs都是之前做好的 xff0c 调试驱动都反复用过很多次 今天只是搬了台电脑 xff0c 换
  • 实现Charles+Postern抓包

    实现Charles 43 Postern抓包 在实际抓手机App包场景中 有很多种方案 经典的就是Fiddler 但是Fiddler会有一个问题 如果App设置了不走代理这个选项 那Fiddler就不行了 xff0c 比如说大众点评 xff
  • STM32学习—systick系统定时器

    SysTick定时器配置步骤 SysTick定时器的操作可以分为 4 步 xff1a xff08 1 xff09 设置SysTick定时器的时钟源 xff08 2 xff09 设置SysTick定时器的重装初始值 xff08 如果要使用中断
  • Mac 关闭设置系统升级红点

    关闭系统更新提醒红点 xff1a 在终端输入 xff1a defaults write com apple systempreferences AttentionPrefBundleIDs 0 killall dock
  • 图像特征提取算法之Haar特征原理(一)

    文章目录 笔记截图问题积分图例子结论 笔记截图 用白色的特征值之和 黑色的特征值之和 61 这一个区域的特征值 你也可以理解为用卷积进行提取 xff0c 白色的区域为1 黑色的为 1 xff08 邪恶的黑色 xff09 然后进行相加既可以得
  • CAS方式实现单点登录

    单点登录 xff0c 英文是 Single Sign On xff0c 缩写为 SSO 多个站点 192 168 1 20X 共用一台认证授权服务器 192 168 1 110 xff0c 用户数据库和认证授权模块共用 用户经由其中任何一个
  • 双系统重装Ubuntu经验分享

    真的很喜欢ubuntu 但又没有恒心把它学通透 xff0c 毕竟不是相关专业 第一次重装是因为没多少经验 xff0c 安装qqforlinux的时候多了两个东西 xff0c 还自己生成了快捷方式 xff0c 就想点开看看是啥 xff0c 结
  • PCL三维点云拼接融合

    1 PCL三维点云拼接融合技术 2 PCL系列 拼接两个点云
  • ubuntu20版本忘记或重置密码的问题

    前段时间把ubuntu密码忘了 xff0c 进不去并且有些需要密码权限的功能也用不了 xff0c 在网上搜了一大堆 xff0c 都是什么从开始就摁shift或Esc xff0c 好家伙摁烂了也不行啊 解决如下 xff1a 首先 xff0c
  • 程序员申请加班调休被HR拒绝:996是行规,不想加班就滚?

    现如今 xff0c 很多公司为了不给员工加班费 xff0c 一般都会允许他们进行调休 也就是你加班了多少个小时 xff0c 等项目不忙的时候 xff0c 你们可以选择多休息几天 公司的这种做法 xff0c 大多数员工还是能接受的 xff0c

随机推荐

  • 博士生如何进行文献阅读和文献整理?

    一 阅读文献之前 先了解写文章的规则 SCI的架构 TITLE ABSTRACT main message INTRODUCTION why did you do this job METHODS how did you do it RES
  • 结构体之offsetof宏详细解析

    1 define offsetof TYPE MEMBER size t amp TYPE 0 gt MEMBER include linux stddef h 1 1 功能 xff1a 返回结构体TYPE中MEMBER成员相对于结构体首地
  • 解决curl: (7) Failed to connect to raw.githubusercontent.com port 443

    解决办法 xff1a 一 首先查询域名 raw githubusercontent com对应的ip地址 去这网址查询 xff1a https tools ipip net domain php 二 修改hosts文件 linux系统一般都
  • 关于使用Maix Bit所遇到的OSError: Reset Failed问题

    一 问题 今天在使用Maix Bit学习的时候遇到了这样一个问题 xff0c 我使用Maixpy连接上了Maix Bit xff0c 然后进行下载程序的时候 xff0c 下载失败 xff0c 弹出来一个OSError Reset Faile
  • 致小白的K210模型训练与运用

    致小白的K210模型训练与运用 文章目录 致小白的K210模型训练与运用 前言一 模型训练方法二 详细介绍1 使用MixHub平台进行训练2 使用Mx yolov3自己搭建平台进行训练3 V3模型4 V4模型 前言 由于我也是刚接触K210
  • 使用APP inventor来制作一个属于自己的蓝牙串口软件

    使用APP inventor来制作一个属于自己的蓝牙串口软件 本文主要讲述蓝牙的发送和接收功能的制作 一 准备 1 APPinventor的网址 xff1a http app gzjkw net 二 蓝牙APP界面的设置 首先我们新建一个项
  • 一起卷吧,arduino/mixly语音识别模块,10元,可以自定义,提供自制的mixly库

    一 效果演示 制作的语音风扇演示一起卷吧 xff01 语音识别 xff0c 10元 xff0c 串口通信 xff0c arduino可用 xff0c 提供自制的mixly库 操作简单 xff0c 可以语音播报 哔哩哔哩 bilibili 制
  • arduino/mixly红外发射接收模块

    一 资料 http 资料链接 xff1a https pan baidu com s 1idRcrVCxQ5zWLh59EFpi9g 提取码 xff1a n8ud 默认波特率9600 串口通信 xff0c 可以发送也可以接收 发送格式 二
  • openmv学习十三:特征点匹配

    适用于匹配多角度的物体 xff0c 需要现场提取之后才能使用 http docs openmv io library omv image html http docs openmv io library omv image html cla
  • arduino/Mixly使用TCS230颜色识别传感器

    一 器材 TCS230 arduino uno 二 接线 TCS230arduino unoGNDGNDVCC5VS0D2S1D3S2D4S3D5OE LEDD6OUTD7 三 程序 mixly程序 arduino程序 define tcs
  • arduino/Mixly心知天气

    一 准备 首先百度一下心知天气 xff0c 获取一下密钥 xff0c 具体的可以看这一篇Blynk中WebHook组件的使用方法 moshanghuaw的博客 CSDN博客 然后再准备一个esp8266或者esp32都可以 二 程序 mix
  • C For Linux之内存访问-内存简介

    1 内存 1 1 计算机为什么需要内存 存储器是计算机系统中非常重要的组成部分 计算机中的存储器分为两类 xff1a 内存储器的外存储器 xff08 也叫辅助存储器 xff09 所谓外存储器在PC机中一般指硬盘 U盘 光盘等 xff0c 而
  • 每天一分钟玩转golang:基础类型之字符串(四)

    大家好 xff0c 我是加摩斯 xff0c 觉得文章有帮助的小伙伴 xff0c 记得一键三连哟 xff5e 申明 xff1a 本系列两天更新一篇 xff0c 纯原创 xff0c 转载前请与我沟通 字符串类型也是一种基本类型 xff0c 底层
  • 项目二:电子骰子

    项目二 xff1a 电子骰子 文章目录 项目二 xff1a 电子骰子一 导入 5分钟 xff09 学习目的 二 新授 65分钟 1 预展示结果 5分钟 2 本节课所用的软硬件 5分钟 3 硬件介绍 1分钟 4 图形化块介绍 1分钟 5 单个
  • 项目三:双人骰子

    项目三 xff1a 双人骰子 文章目录 项目三 xff1a 双人骰子一 导入 5分钟 xff09 学习目的 二 新授 65分钟 1 预展示结果 5分钟 2 本节课所用的软硬件 5分钟 3 硬件介绍 1分钟 4 图形化块介绍 1分钟 5 单个
  • 项目四:无极调光台灯

    项目四 xff1a 无极调光台灯 文章目录 项目四 xff1a 无极调光台灯一 导入 5分钟 xff09 学习目的 二 新授 65分钟 1 预展示结果 5分钟 2 本节课所用的软硬件 5分钟 3 硬件介绍 5分钟 4 图形化块介绍 10分钟
  • Windows10安装anaconda之后pip3不能使用

    1 在命令行中切换到你自己的anaconda环境中 xff0c 2 在命令行中 xff0c 切换到你的anaconda环境中的Scripts目录中像我是在 xff1a D software anaconda3 az envs py3 pyt
  • UE4蓝图通信-蓝图接口

    蓝图接口 除了最常用的cast to蓝图节点可以实现通信以外 xff0c 进阶的通信方式就是蓝图接口 目的 xff1a 与多个对象中的特定几个对象进行通信方式 xff1a 对检测到的对象发送消息消息 xff1a 发出的消息是接口消息 xff
  • UE4蓝图通信-事件分发器(Event Dispatcher)

    事件分发器在蓝图编辑器的我的蓝图选项卡中创建 在我的蓝图 xff08 My Blueprint xff09 面板中的 进行创建输入事件分发器的名称 xff0c 该字段显示在 我的蓝图 xff08 My Blueprint xff09 选项卡
  • UE4项目优化(帧数优化)相关知识

    控制台命令 r screenpercentage 0 100 0是百分之百 如果改了这个 游戏运行超级流畅说明瓶颈在GPU上stat fps 显示帧率 Frame Per Second 或者快捷键Crlt 43 Shift 43 H 显示帧