Gordon520 发表于 2021-1-29 09:08

Unreal 4 优化?性能?还是原理? 菜, 菜就对了!

1000\30 = 33.3333 毫秒内渲染 才能达到 30帧

1000\60 = 16.666
1000\90 =11.111
1000\120=8.333
~键可调出控制台输入指令:

ctrl+Shift+,
弹出 GPU 可视化分析器。
statunitgraph
Game: 在cpu上游戏代码的运行时间
Draw: 是cpu在为gpu准备数据时的工作(遮挡剔除,隐藏不可见的对象以进行优化)
GPU是在渲染帧上所花费的原始时间
stat fps 直接显示目前场景的FPS 值第一个会显示的很详细
在项目设置中禁用平滑帧可以更准确的获得测量结果,以防四舍五入。
Stat SceneRendering
三角面绘制的成本
动态光的消耗成本
透明材质的消耗成本
stat GPU
显示GPU 消耗的模块化
如果在使用该指令的时候遇到问题,在自己的安装的ue4 下找到 ConsoleVarables.ini 文件
文本形式打开
stat startFile
Stat StopFile


打开前端会话   seesion frontend
这是对GPU和CPU的同时分析


r.ssr.maxroughness   0.01.0   最大粗糙度
r.ssr.Quality    0...4   反射质量
stat RHI查看目标渲染内存
sg.ShadowQualitynum 0-4   阴影的质量
R.ScreenPercentage 设置屏幕渲染分辨率
R.SetRes 480*270
stat Memory   统计数据内存   可以看到纹理内存池的大小
r.Streaming.PoolSize     纹理池默认大小是2000MB    这个命令后面跟参数就能直接修改纹理池大小
VS:三角形绘制,骨骼动画, 阴影
PS:材质球,灯光,后处理
材质的优化和性能。

顶点着色器和像素着色器分别来绘制计算机图像中的每一个顶点和像素的。ue4采用的是HLSL语言来编写材质的,基于DX。ALT+8   可以直接查看场景中材质球的着色器的消耗程度。屏幕上会有个十字准星,指向的位置会消耗条下会有PS,VS的字母显示,VS:顶点着色器,PS:像素着色器。 会通过彩条的方式显示消耗的程度。PS和VS,可以转化消耗负担。绿色为0 白色为2000红色约600-800ue4只支持120帧的上限输出。材质编译器下面会有显示渲染多少指令的,值越高消耗越大。

pc性能消耗指数:低端:50-100         正常:100-200      略高:超过300条       高:500条   太高了: 1000条指令   尽可以的去优化材质指令,提升材质效果VR应该要更低构建某种可视化,如影视电影效果可以把指令数给推上去。


半透明的材质尽量保持简单,反复叠加的半透明材质性能爆炸,尽量避免。Mask材质性能消耗要低很多,透明通道只有1和0所以草从,树叶植物这些都使用mask,模型尽可能在不增加面数的情况下去裁剪以免造成不必要的消耗。四边形过渡绘制。大部分使用的是SM5,SM4太老了。ios系统上使用ES2或者是ES3_1..Quality Switch,手动制作针对不同机器所做的材质节点,这样可以把材质的优化在不同的机器上做到质量和性能的最优解。左边的细节面板中有一个Fully Rough(完全粗糙)的参数,点开后悔移除部分指令,减少材质开销。
还可以在项目文件里优化场景内的一些选项,与场景光照输出图形程序版本等
PBR材质

高光数值可以根据情况调整
Glass   0.5                  plastic0.5                  quartz    0.57                   ice      0.224               
water    0.255            milk   0.277               skin   0.35
详细的参数请参考文档
优化视图是使用:
光照复杂度: 动态光源叠加的越多 消耗越大颜色也就越鲜艳
光照贴图密度:为了最大程度的节约,尽可能的让光照贴图的颜色呈蓝色
着色器复杂度:材质球的复杂度
四边形过渡绘制: 在透明或者mask材质中贴图在模型上绘制越透明的边缘会有以一个边界因为图形是由像素绘制形成的,所以就会有三角面拼接而成,三角面越小四边形绘制就越过渡,也就意味着消耗越大。
中间插一句:地形优化,选中需要优化的单个地形。在详细中 有一个lod 偏差,提高,可以减少地形的面数(这个功能我目前没有试验成功。)


对于GPU可视化的详细分析:






压缩纹理的原理:

BC:块压缩 。
DXTC(DXT):DirectX纹理压缩。   
VectorDisplacementmap(RGBA8)为未压缩格式。
Default为压缩格式
Ue4格式压缩命名很混乱 比如Grayscale,就是未压缩的灰度图的格式。根据选择的格式查看文件大小来判断图片是否有压缩。
DeferCompressopm延时压缩仅在保存图片的时候压缩纹理,加快开发进度
BC3(DXTC5) 带通道的压缩                BC1(DXTC1)不太通道的压缩
如果图片BC3和BC1   压缩画质损失太严重,很不舒服。请使用最后一个压缩BC7。
法线的压缩格式是BC5,如下图是原理:
纹理管理:statistics(统计管理)   Texture stats    可以参看使用的纹理的状态
Cooker stats    可参看你最近一次打包时的状态
多级渐进纹理,纹理尺寸和纹理池

纹理池默认2000MB
Mipmap多渐进纹理    可以加快纹理加载的速度并且降低GPU的负担    必须为2的幂次方
打开图片的设置,MipGenSettings    可以修改mipmap的设置,如果纹理的处理不清晰可以自己去修改
lodBias 可以修改纹理的lod设置
texture grounp   可以给纹理分类,统一管理纹理,方便项目操作
左边是有mipmap的右边是没有的。
Developer Tools   ——》   Device prifiles    开发者工具——》设备描述      
可以看到不同设备的资源管理,这样就可以进行多版本开发管理。比如开发手机端,纹理贴图的lod管理,在建立游戏初期做好这些项目管理可以很有效的开发或者是多版本开发。
材质球纹理采样限制的问题

一个材质球针对纹理数量是16个贴图为上限的,但是还有光照贴图 阴影贴图其他的纹理采样,所以只能包含13个纹理采样。在13个到16个纹理不够的情况下(一般做地形)可以修改纹理采样模式   wrap共享包装      和clamp共享限制   如果在不知道差别的情况下一般选wrap    这样这个材质球就能容纳128个纹理。还有一种方法可以绕过纹理采样数量限制的方法,就是归并贴图。需要到ps里去制作Tex_B_彩贴Tex_M_材质贴图 红通道金属 绿通道粗糙 蓝通道AO Tex_N_法线贴图Tex_A_通道贴图 红通道透明 绿通道自发光 蓝通道流动遮罩 这些是我平时使用的归并贴图的通道方式。
还有一点需要注意过滤器的选择问题,在纹理的细节面板中,filter不同的选择可以让纹理的像素显示方式不一样,把纹理放到最大可以看到纹理像素点的细节变化。做老照片像素点的效果可以选择来试试看。
页: [1]
查看完整版本: Unreal 4 优化?性能?还是原理? 菜, 菜就对了!