原作者:Mullin-ぼくリん

《使用UE4开发VR项目-性能优化》系列文章将分成三篇分别介绍使用UE4开发VR项目的一些工具使用和VR优化思路。目的是总结UE4开发VR项目中常用的一些调试工具和使用方法。本文是第一部分,主要介绍UE4中常用的分析和优化工具。

VR项目初始化设置请参考我的另一篇文章《基于UE4的VR项目基础环境配置和MotionController控制配置》来进行配置。http://gad.qq.com/article/detail/7167914

· 调试分析工具

· GPUProfiling(GPU性能分析)

  GPU分析工具可以快速确定VR项目中的多通道GPU性能消耗,更可精确到绘制调用。

  适用于PC平台GPU相关数据

  控制台命令: ProfileGPU

  快捷键: Ctrl+Shift+,

· Profile 分析工具

  Profile 分析工具用来分析

STATStartFile

STATStopFile

  生成的Profile数据。

1、完整数据图表

2、过滤预设窗口

3、数据图表

4、事件图表

  **双击即可追踪STATS**

· 视图模式

· 着色器复杂度

  着色器复杂度视图模式基于每个像素着色的像素着色器指令来描绘场景。

  红色:意味着性能消耗非常高

  绿色:意味着性能消耗最低

  半透明:意味着增加性能消耗

· 光照复杂度

  光照复杂度视图模式基于动态光源的数量来对场景进行着色。

  黑色:意味着没有收到动态光源影响。

  不同颜色:从绿到红,表示受到动态光源的影响逐步增加。

  最终目标是使得整个关卡显示为黑色(虽然很难实现)。

· 光照贴图密度

· 统计工具

· 调试分析命令

· STATUNIT

  STAT UNIT 这是性能分析的第一步。

  显示 帧/线程/GPU事件(STAT UNIT)

  STAT UNIT 用来判断帧时间瓶颈出现的地方。

  帧时间、

  游戏线程事件、

  渲染线程(描画)时间

  GPU时间

  使用 STAT FPS 命令来在屏幕上显示帧频率和帧时间

· STATSLOW

  STAT SLOW 用来找到性能波动问题

  它可以通过报告运行一帧中特定时间段(默认10毫秒)来逐步定位帧停顿的位置。

  运行速度较慢的数据将会在HUD上显示一段时间,从而判断性能波动。

  参数以秒为单位(所以10ms也就是0.01秒)

  参数可设置持续的时间,默认值是 10秒。

  例:STAT SLOW 0.01 10

  这将会渲染在过去的10秒内所有运行时间超过10毫秒的循环统计数据。

· STATStartFile,STAT StopFile

  把统计数据捕获到磁盘上(推荐):

  控制台:STATStartFile 开始捕获数据到磁盘中

  控制台:STATStopFile  停止记录和完成统计数据文件

  参数:-StartStatsFile 在应用程序启动时立即捕获统计数据

· r.SetRes

  调整渲染分辨率

· r.MaxQualityMode

  最高质量

· r.MipMapLODBias

  Mipmap Bias

· r.MobileContentScaleFactor

  画面缩放比

· r.ScreenPercentage

  用于减小内部实际渲染分辨率,画面会在重新放大

· r.ShadowQuality

  移动端Stationaary灯光动态阴影质量,调整其值查看帧速变化,以判断瓶颈

· r.Shadow.MaxResolution

  移动端Movable灯光动态阴影质量,调整其值查看帧速变化,以判断瓶颈

· statSceneRendering

· statGame

· statDumpFrame -ms=0.1

· statSceneupdate

· STATLEVELS

  STAT LEVELS 命令查看内存中加载的关卡数。

  红色:关卡已加载并且可见

  橘黄色:正在使关卡可见的过程中

  黄色:关卡已加载但不可见

  蓝色:关卡没有被加载,但是处在内存中,当发生垃圾回收时,它将会被清除。

  绿色:关卡没有被加载

  紫色 :正在预加载关卡。

  黄色的关卡是不需要进行加载及推迟加载的最好备选项

  如果一个大的动态载入的关卡,尽量把它进行分隔或者进行优化。

· STATMEMORY

  STAT MEMORY  提供关卡中内存使用情况

  Audio Memory(音频内存)

  NovodexAllocation(Novodex内存分配) 动画

  Vertex Lighting(顶点光照)

  StaticMeshVertex/Index(静态网格物体顶点/索引)

  SkeletalMeshVertex/Index(骨架网格物体顶点/索引)

  DecalVertex/Index(Decal 顶点/索引)

  VertexShader(顶点着色器)

  PixelShader(像素着色器)

  Texture Pool Size(贴图池大小)

  FaceF

· ShowFlags

Show Flag 可以用来对渲染特性进行开关。

Show showflagname 可以开关某个具体的特性。

  有些渲染特性即便是在不渲染的时候,也仍然会消耗性能。

  比如 show particles

  能隐藏粒子,但计算模拟时间仍然会运行以便于之后重新打开时功能正确。

  x.freezeparticlesimulation 则能够彻底禁止模拟更新的计算

  how tessellation 会禁用三角形放大,但依然会使用 tessellation shader。

  分析起点应该从下面两点着手

show StaticMeshes

show tessellation

  常用的Show Flag 如下:

ScreenSpaceReflections

  切换屏幕空间的反射效果,可能会非常影响性能,对那些达到一定粗造度的像素有效

AmbientOcclusion

  屏幕空间环境遮罩

AntiAliasing

  切换各种抗锯齿(TemporalAA 和 FXAA,FXAA更快,但效果较差)

Bloom

  影响那些受到 lensflares 和 bloom 功能的画面。

DeferredLighting

  切换所有延迟光照通道。

DirectionalLightsPointLightsSpotLights

  切换不同的光照类型(检查光照类型影响性能时有用)

DynamicShadows

  切换所有的动态阴影(阴影贴图的渲染,以及阴影的过滤和投影)

GlobalIllumination

  切换预烘培和动态间接光照(LPV)

LightFunctions

  切换光照函数渲染

PostProcessing

  切换所有后处理效果

ReflectionEnvironment

  切换环境反射效果

Refraction

  切换折射效果

Rendering

  切换整体渲染

Decals

  切换贴花渲染

LandscapeBrushes StaticMeshesSkeletalMeshes Landscape

  轮询切换几种不同的几何体的渲染

Translucency

  切换透明度渲染

Tessellation

  切换曲面细分(仍将运行曲面细分 shader,但生成更多三角面)

IndirectLightingCache

  切换是否动态物体或者静态物体具有使用间接光照 Cache 时无效的光照贴图。

Bounds

  显示编辑器中当前选中物体的边界框。

VisualizeSSR

  屏幕空间反射像素显示为亮橙色是计算较慢的区域

  命令行:

  r.SSR.MaxRoughness 0.9= 最佳质量(左)

  r.SSR.MaxRoughness 0.1= 运行较快(右)

  Unlit(上)

  show VisualizeSSR(下)

· StartFPSChart,StopFPSChart

  用一段时间来获取状态数据并生成图表(比如用游戏内的过场,或者设置一段摄像机路径作为测试案例)。用Excel打开结果文件.csv

  [ProjectFolder]\Saved\Cooked\Android_ES31\SubwayPatrol\Saved\Profiling\FPSChartStats

· 和优化相关的工具

· MergeActors(融合Actor)

  合并多个Actor以及它们的材质和贴图,可以减少材质数量和材质复杂程度。

· PrecomputedVisibilityVolume(预遮挡计算)

  遮挡较多的地方可以大幅度提高渲染效率

· CullDistanceVolume(裁剪体积)

  根据尺寸裁剪模型

· DeviceProfile(设备概述文件)

对不同设备设置不同的渲染参数以节省性能

· RenderingDetail Mode(渲染细节模式)

设置显示细节模式和配置


· ParticleEmitor 设置

· ModelLOD 设置

  LOD模型不同细节,根据距离参数优化渲染效率

· HLOD

  自动合并静态模型材质减少DrawCall,可以大幅度提高渲染效率

· Material指令及Sampling监控

  最终的指令数量和采样数量会影响性能,尽量优化其数值

· CSM联级动态阴影

  CSM 阴影不会出现调制阴影中的双重阴影,在为多个物体投射阴影时此方法速度较快。

  CSM使用了额外的纹理采样器,可通过项目设置将其禁用:

  Rendering -> Mobile-> Combined Static and CSM Shadowing,

  即可将采样器空出供材质使用。

  接收组合阴影的组件需要勾选

  Receive CombinedStatic

  CSM Shadows fromStationary Lights 标记。

· VR 实例化立体渲染

  实例化立体渲染,可以减轻 UE4 中的 VR 性能影响。

  双眼画面同时渲染运算,能大量降低 CPU 的开销,并改进 GPU 的利用率。

  编辑 -> 项目设置 -> Rendering -> VR ->Instanced Stereo

VR项目中常用的工具基本就这么多,接下来将会介绍VR项目性能优化的一些思路和流程。

转载文章地址:http://gad.qq.com/article/detail/7170307

使用UE4开发VR项目_性能优化(一)_常用工具相关推荐

  1. UE4开发VR项目,帧率优化实践

    一:准备好测试环境: 1:确保引擎中帧速最大值没有被限制,在项目设置-通用设置-帧率下: 2:配备好各项参数质量: 3:VR模式后在编辑器中按~键调出控制台,输入r.ScreenPercentage, ...

  2. 新来的同事把公司现有项目的性能优化了一遍,来看看他是怎么做到的

    公司新来了个同事,级别比我高一级,技术一流,来了之后把现有项目的性能优化了一遍,给公司省了不少成本. 后来才知道,他竟然是个「把烂牌打出王炸」的存在.他叫老徐,我希望通过他的故事,帮你找到些可复制的方 ...

  3. AntDB 落地某省电信大数据中心项目的性能优化案例分享

    亚信科技AntDB 落地某省电信大数据中心项目的性能优化案例分享 某省电信大数据中心项目采购了一套亚信科技AntDB 3.1分布式数据库,2018年8月初开始建设,建设周期一个月.9月份投入运行后,至 ...

  4. WebView开发(三):WebView性能优化

    一.Android WebView开发(一):基础应用 二.Android WebView开发(二):WebView与Native交互 三.Android WebView开发(三):WebView性能 ...

  5. (二)性能优化的指标和工具 (告别前端小白,成为大神的必经之路)

    性能优化的指标和工具 为什么要进行前端性能优化 寻找性能瓶颈 移动端挑战多 性能指标和优化目标[了解行业标准] 网络加载性能 交互体验 总结 RAIL测量模型[黄金指南] 什么是RAIL RAIL的目 ...

  6. 前端性能优化(一)性能优化的指标和工具

    前端性能优化(一)性能优化的指标和工具 一.性能指标 1. F12 network进行调试,我们以淘宝为例 2. 此外还有一个瀑布流的概念 waterfall 3.蓝线和红线 4.保存当前网页指标,方 ...

  7. 高性能 php api 开发,ThinkPHP 3.2 性能优化,实现高性能API开发

    需求分析 目前的业务全站使用ThinkPHP 3.2.3,前台.后台.Cli.Api等.目前的业务API访问量数千万,后端7台PHP 5.6,平均CPU使用率20%. 测试数据 真实业务 php5.6 ...

  8. oracle的优化适用于mysql吗_性能优化之数据库优化,适用于Sqlite、Mysql、Oracle、Sql server,详细介绍了索引和事务及部分针对Sqlite的优化...

    本文为性能优化的第一篇--数据库性能优化,原理适用于大部分数据库包括Sqlite.Mysql.Oracle.Sql server,详细介绍了索引(优缺点.分类.场景.规则)和事务,最后介绍了部分单独针 ...

  9. iOS开发中常见的性能优化技巧

    性能问题的主要原因是什么,原因有相同的,也有不同的,但归根到底,不外乎内存使用.代码效率.合适的策略逻辑.代码质量.安装包体积这一类问题. 但从用户体验的角度去思考,当我们置身处地得把自己当做用户去玩 ...

最新文章

  1. jQuery学习笔记(Ajax)
  2. python读写excel数据--pandas
  3. Node Opencv Addon
  4. .NET 将文本转换成语音 (转)
  5. 1088 最长回文子串
  6. 前端技术分享:什么是MongoDB数据库?
  7. 两家云服务器价格比较
  8. DataGirdView 编辑项时的验证
  9. 使用默认方法的界面演变–第一部分:方法
  10. linux essid 异常,Linux无线ESSID:off/any的错误
  11. 服务器c盘临时文件在哪里,excel在c盘哪个文件夹|excel临时文件位置
  12. Thread 1: signal SIGABRT解决方法之一
  13. ros学习(2-2):ros节点创建(python)
  14. 如何安装ruby、rails
  15. HTML+CSS 焦点图设计(详细步骤)
  16. 一幅漫画告诉你:NB-IoT背后,大家都在说的LoRa是啥?
  17. sample 随机抽取样本
  18. PhoneGap介绍
  19. Mysql--day03
  20. 微信小程序页面3秒后自动跳转

热门文章

  1. 停下,驻足思考,再前行
  2. 基于Armitage的MSF自动化集成攻击实践
  3. 中国无创放射外科手术机器人行业市场供需与战略研究报告
  4. 刷题记录:洛谷P4147玉蟾宫
  5. 芯片设计|FPGA 设计的指导原则(二)
  6. jsp-自定义标签Tag
  7. 宏观经济研究:全国各省、地级市-社会融资规模增量数据(包含总额及8类明细)2013-2021年
  8. android-恢复出厂设置
  9. wireshark分析以太网帧结构_分析Ethernet标准和Ieee802.3标准规定的MAC层帧结构
  10. 20家最具创新力的科技创业公司