UE4渲染优化笔记

目标:FPS和发热,寻找性能要点
=GPU 调试方式=====
1、stat fps
一帧渲染的时间

2、渲染信息显示
左上角:Stat-Engine-FPS、Unit、UnitGraph、UnitMax、UnitTime
stat unit
stat unitgraph

Frame:一帧渲染时间;
Game:CPU Code,蓝图
Draw:CPU准备渲染工作
GPU:GPU渲染耗时

3、不同模块渲染时间查看
为了准确测试,需要在设置中关闭平滑渲染,测试完成后可以打开
Engine->General Setting:Framerate->Smooth Frame Rate

stat SceneRenering
Draw calls
Trangle Count
Light count
Translucency

4、实时设置分辨率为一半
r.ScreenPercentage = 50
r.SetRes 480x270

5、查看GPU简单信息
看每一个GPU通道信息命令
GPU

6、GPU详细调试方式
a)、GPU Visualizer的使用,显示当前一帧的详细消耗信息,可以按照时间排序
b)、三个同时按下:Ctrl Shift ,
c)、在单个游戏运行过程中也可以使用,不过没有界面,只有保存到txt数据,Saved\Log中可以看到;

7、游戏中数据记录调试
stat file/Startfile
stat Stopfile
在Windows->Developer Tools-Session Frontend,Window-Profiler-Load
目录:\Saved\Profiling\UnrealStats下
右边上面关注GPU:左边在Stats dump brower下面设置需要查看的指标
右边下面关注CPU

8、游戏调试步骤
观察现象->问题复现方式(场景、硬件)->导致问题的原因-细化分离问题(排除法)-假设
时间消耗GPU/CPU
Vertex Shader/Tesselation/Geometry Shader/Pixel Shader
Draw Call/Material/Mesh

9、Pixel问题检测:
分辨率、复杂灯光、复杂shader运算、后期效果处理
半透明、半透明粒子(LOD)、三角网格大小
如果修改分辨率导致FPS提升,说明这方面有问题

10、三角网格大小
避免过细小的三角面;
使用LOD;
尽量让三角面一样大(在游戏摄像机中看到的物体三角网格大小差不都都一样);
对于不透区域最好裁剪到和实际形状差不多(让网格更加接近植被形状);

11、避免过多的UV层数

12、聚光灯优化:Attenuation Radius衰减半径尽量小

13、贴图通过通道打包到一张图中

14、显存分布:
最快:SharedMemory、 L1Cache、 Texture Cache
其次:L2Cache
最慢:DRAM

15、保持UV的连续性
GPU会把最近访问访问的贴图缓存到最快的显存内存区域

16、调试GPU Texture占用情况在DRAM
stat streaming
分辨率、Minmap、裁剪

17、延迟渲染(灯光多,需要更多的渲染内存)
法线、粗糙度、基础颜色

18、Forward渲染(没有灯光,渲染内存占用小)

19、动态灯光调试
Lit-Optimization ViewModes-Light Complexity
显示每个灯光的半径及其叠加消耗
删除或改为静态

20、渲染消耗调试
Lit-Optimization ViewModes-Shader Complexity

21、三角网格数量问题
Lit-Optimization ViewModes-Quad Overdraw
小的网格叠加在一起或者半透叠加

22、LightMap信息调试
Lit-Optimization ViewModes-LightMap Density
在每个物体属性Lighting-Overridden Light Map Res来设置其使用的Lightmap烘焙分辨率(越小越好)

23、查看贴图大小合理性
windows-Statistics-Texture Stats
查看其分辨率(Max Dimension)和对应的屏幕占比(Current Dimension)
点击问题贴图名字,定位Content对应位置,打开图片编辑器设置最大分辨率

24、测试每个区域不同功能消耗
比较不同方案,找到瓶颈,避免前期优化,提前发现问题
在游戏中放置多个摄像机(玩家可能走到地方)

25、设置运行分辨率
菜单按钮更多箭头-Active Play Mode-Advanced Settings…(最下面)
Level Editor-Play-Play in New Window-New Window Size

26、QulitySetting or Content Settings
系统设置或者单个项属性设置来优化
如在PostProcessVolume项中可以设置AO的效果以及设置后对渲染的影响
一个Pass就是一个DrawCall(Command From CPU to GPU)

=GPU Visualizer=====
27、Pass分类
Post Process:buffer
Ambinent Occlusion:buffer (GBuffer、ZBuffer)
Base Pass:meshes、Shaders

28、LightComposiontTask_PreLighting
Screen-Space Ambinent Occlusion
Decals(non-DBuffer type)

消耗因素:
渲染分辨率
AO radius和AO fade out距离
Decal的数量(不包括DBuffer decals)

29、CompositionAfterLighting
Subsurface Scattering(真正的,而不是假的)
Subsurface Profile类型在Stat gpu中的CompositionPostLighting中看到其消耗
消耗因素:
分辨率、屏幕对应SSS材质面积大小

30、ComputeLightGrid
默认Deffer渲染,半透用Forward渲染
动态灯光数量
优化:用静态灯光、减少灯光数量
在Buffer中可以查看
Lit-Buffer Visualization中可以查看到延迟渲染所存的信息

31、Light -NonShadowLights
消耗因素:
渲染分辨率;
灯光数量;
Radius of light;
关闭:Use Inverse Squared Falloff
衰减Full off Exponnet(越小越好)

32、Lights-ShadowedLights
消耗因素:渲染分辨率;投射阴影网格数量(如果不需要就关闭);灯光数量;Radius of light;

33、FilterTranslucentVolume
半透,使用Volumetric (Non)Directional Light Mode
影响因素:灯光数,投射阴影的灯光和投射阴影的网格数

34、ShadowDepths
影响因素:Shadow-Cast Object,ShadowQuality,ShadowMap数量,灯光数量;
sg.ShadowQuality 0 (0-4,0没有shadow,4高质量shadow)

35、ShadowProjection
最终输出一张shdowmap,代表一个灯光的效果,stat gpu:可以看到其数量;
影响因素:分辨率、Shadow-Casting 灯光的数量

==Geometry,HZB,Base Pass=
36、PrePass DDM_…
ZBuffer生成
应用:DBuffer Decals、Occlusion Culling
Z-pass渲染设置:ProjectSettings Engine-Rendering-Optimization-Early Z-pass
DBuffer Decals会用到这个设置:masked meshed
影响:Opaque网格数和物体、OverDraw、Masked materials的复杂度
Masked materials会导致OverDraw

37、HZB
生成:Hierarchical Z-Buffer
使用:HZB Occlusion Culling 和 ScreenSpace Ray Tracing(Used by Reflection、AO)
编辑器中测试不准
Stat gpu或者文本输出中可以查看
影响:分辨率

38、Base Pass
目的生成数据到GBuffer中
BaseColor、Netallic、Specular、Roughness、Normal、SSS Profile
位于Node-based part Shders
影响因素:分辨率、物体数量、shader复杂度、Decals的数量、网格数量
读取LightMaps和Indirect Lighting caches 到GBuffer,需要注意:带宽、和显存
应用于:DBuffer Decals、Fog、计算最终的Velocity

内存调试,最好在导出的运行的程序中测试
调试:
Stat RHI 通过降低分辨率可以查看效果
通过调节场景颜色格式(GBuffer中存储的格式)来查看:r.SceneColorFormat

39、Translucency
消耗:材质中shader和灯光的消耗,半透明覆盖的区域,Overdraw
调试:stat gpu中分为 Translucency 和Translucency Lighting

如果使用Surface ForwardShading,那么灯光数也会影响。

Surface ForwardShading:会接受阴影,会有法线效果
Volumetric Directional:不会接受阴影,会有法线效果
Volumetric NoDirectional:不会接受阴影,不会有法线效果

40、ParticleSimulation/Injection
在GPU运行的粒子系统
需要在粒子发射器中打开的并影响性能的有:GPU Sprites、Collision 、粒子发射器和发射粒子的数量
Collsion在Screne Depth(Z-Depth)中计算

==Post Process
41、PostProcess
Anit-aliasing(Temporal or FXAA);
Depth of field;
Lens flares,bloom;
Auto exposure;
Tonemapping,color grading;
影响因素:分辨率、处理复杂度、处理精度和次数

42、ReflectionEnvironment
读取并混合Reflection Captures的结果到Scene Reflection Buffer中
影响因素:Reflection Capture actors的数量和Radius半径、分辨率
调试:Lit-Reflections

43、RenderVelocities
保存每一个顶点的Velocity,应用于之后的PosotProcess中的运动模糊
影响因素:物体数量,运动物体的三角面数量

44、ScreenSpaceReflections
实时动态发射
在PostProcess中完成,使用到ScreenSpace RayTracing技术
可以通过设置SSR的计算精度和质量来进行优化
投射的精度:r.SSR.MaxRoughtness 0.0-1.0
反射图像的精度:r.SSR.Quality 0-4

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值