今天咱们唠唠虚幻4优化这个事儿。刚上手的时候真给我整麻了,那卡得跟我家那台十年老爷机开机似的。后来硬着头皮折腾了小半个月,终于把帧数从幻灯片拽上来了。过程贼真实,你们瞅瞅。
开局就是找病根儿
我那破项目跑起来风扇嗷嗷叫,帧数蹦迪一样忽上忽下。先没瞎搞,直接摁Ctrl+Shift+,(就是那个控制台命令)把性能面板怼脸上。好家伙,GPU负载常年99%,跟焊死了似的。拿鼠标在场景里乱晃,GPU曲线直接窜上天——得,画面这块儿绝对出大问题。
逮住显卡当苦力
顺着线索摸过去,先拿引擎自带的GPU Visualizer当显微镜使。好嘛场景里那几个摆门口的石狮子模型,面数多得快赶上我头发了(虽然我也没几根)。赶紧给它们咔嚓几刀上了LOD(模型细节分级),远看就糊弄成方块也没人在意。光这个操作,帧数当场就涨了七八帧,显卡终于喘上气了。
完事儿又发现树叶简直是性能杀手。开了树叶的单独阴影计算,结果每片叶子都在较劲。立马把树叶阴影全关了,改成让大树阴影整体覆盖。地面少点斑驳就少点,总比PPT强。
别让CPU看戏
GPU轻松了扭头一看,CPU又在摸鱼划水。打开Stat Unit一查,Draw Call(画面渲染次数)多得像春运火车站。几百个瓶瓶罐罐每个都要单独喊话渲染,这不缺心眼吗?直接动手合并!
逮着材质差不多的破烂玩意儿,比如墙上挂的相框、桌上零碎,全丢进Merge Actor(模型合并)里打包。原来两百多次渲染的客厅杂物,合并完就剩十几次。改动完按F跑一圈,CPU负载肉眼可见地掉下去了,帧数稳得能煎鸡蛋。
动态灯光是大爷
半夜测试又翻车了——开了手电筒后帧数直接腰斩。动态光源这玩意儿比甲方还难伺候!把能转静态的灯全给冻结了,实在要动的比如车灯,半径调小、阴影精度降低。再打开逐物体动态阴影,只给主角照亮的那圈地面算精细影子。折腾完举着手电跑图,帧数波动总算不超过五帧了。
收尾三板斧
- 流量控制: 远景的山头直接塞进HLOD(分层细节),省得CPU跟GPU老远就开始较劲;
- 动画优化: 把没必要的骨骼通通折叠起来,穿裙子的NPC再也不用一人带动两百根骨头了;
- 粒子灭火: 火焰特效粒子数对半砍,烟雾用带透明通道的贴片假装一下。
现在这项目跑在中档显卡上能稳住60帧,风扇声比我家空调还小。回头看看踩过的坑,就一句话:别让引擎憋大招,该省的地方往死里省!各位要是卡成狗了,照着这几步先整一遍,保准显卡对你感恩戴德。