原创作品

Unity3D手游美术优化心得(特效专题)

Howe 发表于   2020-07-12 16:44:07
6285
8
60

Unity3D手游美术优化心得(特效专题)

(重新编辑版)

前言:相似的文章有很多,这里交流一下我对这方面的理解和经验,也是为了履行承诺和回应期待。

本文主要介绍Draw Calls与Overdraw方向优化,开始之前简单说下其他游戏卡顿原因。

游戏中第一次释放技能发生卡顿:检查贴图是否过大并且没有压缩,特效用模型是否过大,二者均会造成加载慢或卡顿(无论是否预加载或是否是动态加载);游戏中每次释放特效都会卡顿机器还会发烫: (更全面的优化详情看我上一篇文章,本章针对特效进行展开)这时候开始针对Draw Calls与Overdraw开始优化。

Draw Calls

特效DrawCalls峰值最好不要太高,平时保持15以内如今的手机绝对不会有问题,这里根据效果重要程度判断(特写或大招效果特别的出众,DrawCalls达到20-30为了效果那是情有可原的)

减少DrawCalls的方式,Unity会将相同Layer或相同RenderQueue的同贴图进行合批。(UI合并成图集和MOBA游戏使用动态UI图集的原因)

image.png

具体方式如下:

现在8个prefab和一台摄像机一共9DrawCalls(4张贴图4个shader相同的材质球)RenderQueue均为3000

image.pngimage.png

image.pngimage.png

image.pngimage.png

现在分别改成不同的RenderQueue,3001/3002/3003/3004。

image.png

image.png

变成5 DrawCalls,每个1 2 3 4只会产生1 DrawCalls(这里不同贴图材质的粒子系统改成不同的Order in Layer也会合批)

image.png

image.png


这里随口说一下为什么很多项目程序不让改粒子系统的Order in Layer,因为担心会Layer冲突打乱其他资源的合批,能靠RenderQueue解决不要改Order in Layer,或者与程序沟通一个特效使用的范围。

image.png

 

Overdraw

Overdraw的检查方式如下

image.png

这里左右两边为相同的材质球和效果(如下图),但是右边的绘制区域比左侧更少,用少量的模型定点数去减少绘制区域起到优化Overdraw的效果

image.png

image.png

环装特效就建环状模型,使无像素部位不计算。

image.png

 

image.pngimage.png

绝对避免下图情况的发生,3D游戏需考虑摄像机位移至各个位置时是否会出现这种情况。

image.png

有见过特效师将粒子透明度降到很低,然后用大量粒子堆叠出效果的情况,控制好MaxParticles。

image.png

(这就是为什么上古时期很多公司特效制作不让用粒子系统的原因,不是不能用,是怕乱用。)

 

最后说一句卡顿不一定就是特效的问题,优化也一定不能一条腿走路,更多的可优化方案可看我上一篇文章,最后感谢大家的支持,有什么说的不对的地方请务必指正。

 

下次分享一下ShaderLab的学习心得吧,如果有下次。


没有标签
确定
评论(8)
Howe
这篇文章本意并非让特效合并图集,但是如果已经对其他人的工作造成不良影响,那我这篇文章也就非改不可了。另外最好的优化就是不要优化,从初期方方面面资源使用得当,避免临上线走极端,例如盲目合并图集所损失的时间与美术效果,时间成本也是研发成本之一。
回复
1354天前
北极悠蓝
合并贴图 一开始用不到 特效没几个 贴图没几张 后面要用到的时候 几十张上百张图 还有shader也不同 特效也几十个 一合并 几十个特效 几百层的粒子挨个点开看材质 去替换打图集的材质 要是合并贴图这么好用 那么多游戏为什么不用图集 贴图都是散的 因为合并贴图就是个坑爹的方法 遇到需要合并贴图的地步了 我建议不要特效
回复
1354天前
北极悠蓝
回复
北极悠蓝
我是在项目里体验过一次 最坑爹的优化就是让特效合并贴图 这优化真的不如删几层粒子
回复
1354天前
Howe
回复
北极悠蓝
嗯,这篇文章本意不是让项目合并图集。虽然我强调不必盲目合并图集,如果因为这篇文章增加了很多人的不必要的工作量,那我也觉得这篇文章改更改一下了。
回复
1354天前
Howe
回复
北极悠蓝
嗯,已经违背我的本意了,虽然只是分享一下Unity一个功能,但是影响到别的特效师,那这个文章就必须改了。
回复
1354天前
Howe
这里补充一下,释放DrawCalls方式很多,切勿盲目合并图集,浪费过多时间成本,也会使特效贴图质量下降。更多内容可看上一篇美术优化文章
回复
1359天前
Howe
回复
Howe
例如场景关卡中大量重复使用的场景特效,调整RenderQueue可有效且大量降低DrawCalls。
回复
1359天前
一个认真学习的小萌新
如果都能合并,,那其他游戏的特效贴图都不会这么散乱了。
回复
1359天前
Howe
回复
一个认真学习的小萌新
主要还是看需不需要,我也不提倡说盲目让特效合并图集,耗费大量时间成本
回复
1359天前
萌新提莫队长啊
实际应用中,能合批的材质其实很少的,要求挺苛刻
回复
1365天前
地板
说实话没太懂,我自己实操了一遍。dc值还是不变
回复
1373天前
布景
回复
地板
通俗说 你的DC数量和你使用材质球数量有关系
回复
1373天前
Humphrey
说的很棒~
回复
1378天前
涟漪
听君一席话,胜读十年书
回复
1380天前
没有更多啦~
  • 咨询
    客服
  • 扫码加入QQ群 或搜索QQ群号: 797421367
  • 扫码关注公众号 或微信搜索: cokey游戏特效