【VR项目开发系列】使用UE4开发VR项目之性能优化流程

发表于2017-04-25
评论0 4k浏览

下面给大家分享的是使用UE4开发VR项目中的性能优化流程,如果对UE4开发VR项目中性能优化出现的问题和使用技巧不是很了解的开发者可以看一看。

 

·创建测试环境

·运行单独的游戏

·使用暂停的画面

·确保帧数不封顶

 

-game -emulatestereo -res=2160x1200

修改分辨率(命令行)

r.vsync 0

垂直同步关闭(控制台)

r.screenpercentage 137 

更新屏幕百分比(控制台)

 

如果多数时间均为 90 fps,而进行修改后帧数大跌,则很可能是遇到了上文所述的合成器垂直同步问题。问题解决后,帧数则会大大改善。

 

找到瓶颈的方法

Stat Unit

·StatUnit 用来判断帧时间瓶颈出现的地方

StatSlow

·查找性能波动问题。

例:Stat Slow 0.01 10 (渲染在过去的10秒内所有运行时间超过10毫秒的循环统计数据)

Viemode

着色器复杂度

红色

性能消耗高

绿色

性能消耗低

半透明

增加性能消耗

 

光照复杂度

黑色

没有收到动态光源影响

从绿色到红色

受动态光源影响逐渐增加

 

 

关闭stuff查看效率

r.SetRes

调整渲染分辨率

r.MaxQualityMode

设置最高质量

r.MipMapLODBias

Mipmap Bias

r.MobileContentScaleFactor

调整画面缩放比

r.ScreenPercentage

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

r.ShadowQuality

移动端Stationaary灯光动态阴影质量

r.Shadow.MaxResolution

移动端Movable灯光动态阴影质量

 

调整show flag 查看效率

ShowFlags.

开关屏幕反射

ShowFlags. AmbientOcclusion

开关AO

ShowFlags. AntiAliasing

开关AA

ShowFlags. Bloom

开关bloom

ShowFlags. DeferredLighting

开关延迟灯光

ShowFlags.

开关灯光类型

ShowFlags. DynamicShadows

开关动态阴影

ShowFlags.

开关GI

ShowFlags.

开关后期

ShowFlags. ScreenSpaceReflections

开关环境反射

ShowFlags. Refraction

开关折射

ShowFlags. Decals

开关贴画

ShowFlags. Translucency               

开关半透明

ShowFlags. Tessellation

开关曲面细分

 

ProfileGPU

·ProfileGPU(Ctrl+Shift+,)

ProfileCPU

·使用Profiler将数据捕获到磁盘上进行分析

stat game

stat scenerendering

·显示DrawCall数量 (计算公式:Mesh数量 * Mesh ID * 投影灯光数量)

Profiler

STATStartFile,STAT StopFile

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

StatStartFile-StartStatsFile

开始捕获数据到磁盘中(程序启动开始捕捉)

StatStopFile

停止记录和完成统计数据文件

 

StatMemory

·提供关卡中内存使用情况

可能存在的GPU瓶颈

·分辨率

·HMD SP

·投影贴图

·同屏Actor物体数量

·同屏三角面

·顶点数

·灯光数量

·阴影设置

·LOD层级(需要时关闭)

·Shadow 灯光屏幕面积

·三角面密度  如:三角面占屏幕面积小于2*2像素

·顶点处理  点太多

·顶点动画Shader过于复杂

·Tessellation 过于复杂

·有太多套UV

·查看静态模型统计,判断模型顶点和面数差大小

·模型顶点没有合并

·延迟灯光

·使用光照函数 IES 接受投影 区域光

·材质复杂度

·GPU粒子

·反射SSR

·后期AO

可能存在的CPU瓶颈

·DrawCall数量会影响Custom Depth自定义深度

·每个Actor上的Feature 太多

·AI复杂度

·BP复杂度

·屏幕反射追踪

·物理

·内存分配

·动态光源的半径、衰减、 Cone大小角度

·HUD会占用很多性能

· 检查被投影Mesh面数,被投影面数越多,开销越贵,

并且会被灯光数量,投影物体数量放大。

 

 

可能存在的内存占用瓶颈

通过限制贴图数量、尺寸、提高模型、材质、贴图的复用率、控制物件、特效数量、及UI相关资源数量,可以达到控制内存的目的。

可能存在的后期瓶颈

·Scene ColorFringe;

·AmbientCubemap,

·Image BasedLens Flares;

·LPV Off;

·Grain Intensity,

·DOF Off,

·Ssr Off,

·Or Roughness0.01;

·MotionBlur Off

 

 

 

VR.INI 设置(DefaultEngine.INI

r.VolumeMultiplier=1.0

体积乘数

r.screenpercentage=130

屏幕比例设置

r.SeparateTranslucency=0

修复半透明情况下景深的问题

r.HZBOcclusion=0

HZB环境光遮蔽

r.FinishCurrentFrame=1

完成当前帧

r.MotionBlurQuality=0

运动模糊质量

r.PostProcessAAQuality=3

后期特效质量

r.BloomQuality=1

光溢出质量

r.EyeAdaptationQuality=0

模拟眼睛自适应光效质量

r.AmbientOcclusionLevels=0

环境遮蔽质量级别

r.SSR.Quality=1

屏幕空间反射质量

r.DepthOfFieldQuality=0

景深质量

r.SceneColorFormat=2

能够选用不同的 SceneColor 格式

r.SSSSS=0

 

r.TranslucencyVolumeBlur=0

半透明体积模糊

r.TranslucencyLightingVolumeDim=4

半透明灯光体积范围

r.MaxAnisotropy=8

 

r.LensFlareQuality=0

镜头光晕质量

r.SceneColorFringeQuality=0

场景颜色边缘质量(紫边效果)

r.FastBlurThreshold=0

模糊阀值

showflag.decals=0

贴花选项开关

r.SSR.MaxRoughness=0.1

屏幕空间反射粗糙度最大值

r.rhicmdbypass=0

 

r.TiledReflectionEnvironmentMinimumCount=10

反射环境最小值

sg.EffectsQuality=2

特效质量

sg.PostProcessQuality=0

发布质量

 

Reference

https://docs.unrealengine.com/

Mullin--ぼくりん

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引