粉丝27
关注 0
获赞 78
Unity3D手游美术优化心得(特效专题)

[教程] Unity3D手游美术优化心得(特效专题)

[复制链接]
5193 13 17 94 3年前 举报
Unity3D手游美术优化心得(特效专题)
前言:相似的文章有很多,这里交流一下我对这方面的理解和经验,也是为了履行承诺和回应期待。
本文主要介绍Draw Calls与Overdraw方向优化,开始之前简单说下其他游戏卡顿原因。
游戏中第一次释放技能发生卡顿:检查贴图是否过大并且没有压缩,特效用模型是否过大,二者均会造成加载慢或卡顿(无论是否预加载或是否是动态加载);游戏中每次释放特效都会卡顿机器还会发烫:(更全面的优化详情看我上一篇文章,本章针对特效进行展开)这时候开始针对Draw Calls与Overdraw开始优化。
Draw Calls
特效DrawCalls峰值最好不要太高,平时保持15以内如今的手机绝对不会有问题,这里根据效果重要程度判断(特写或大招效果特别的出众,DrawCalls达到20-30为了效果那是情有可原的)
减少DrawCalls的方式,Unity会将相同Layer或相同RenderQueue的同贴图进行合批。(UI合并成图集和MOBA游戏使用动态UI图集的原因)
1.png
具体方式如下:
现在8个prefab和一台摄像机一共9DrawCalls(4张贴图4个shader相同的材质球)RenderQueue均为3000
2.png 3.png 5f0ad1c22796f.png
现在分别改成不同的RenderQueue,3001/3002/3003/3004。
4.png 5f0ad1e5864fc.png
变成5 DrawCalls,每个1 23 4只会产生1 DrawCalls(这里不同贴图材质的粒子系统改成不同的Order in Layer也会合批)
5.png 5f0ad1fc9b498.png
说到这里优秀的你一定想到了一个更好的优化方式,创建一个1234的序列图,用粒子系统或shader去使用需要的部分,这时已经降到2了。
6.png 5f0ad1fc5d2b1.png
活用这种方式可以尽情制作自己想要的效果了,并且场景等特效任你摆(这里需注意Overdraw不要过分绘制,序列图集的大小不要过大,压缩后会损失太多效果)。
这里随口说一下为什么很多项目程序不让改粒子系统的Order in Layer,因为担心会Layer冲突打乱其他资源的合批,能靠RenderQueue解决不要改Order in Layer,或者与程序沟通一个特效使用的范围。
7.png
Overdraw
Overdraw的检查方式如下
8.png
这里左右两边为相同的材质球和效果(如下图),但是右边的绘制区域比左侧更少,用少量的模型定点数去减少绘制区域起到优化Overdraw的效果
9.png
10.png
环装特效就建环状模型,使无像素部位不计算。
11.png
12.png 13.png
绝对避免下图情况的发生,3D游戏需考虑摄像机位移至各个位置时是否会出现这种情况。
14.png
有见过特效师将粒子透明度降到很低,然后用大量粒子堆叠出效果的情况,控制好MaxParticles。
15.png
(这就是为什么上古时期很多公司特效制作不让用粒子系统的原因,不是不能用,是怕乱用。)
最后说一句卡顿不一定就是特效的问题,优化也一定不能一条腿走路,更多的可优化方案可看我上一篇文章,最后感谢大家的支持,有什么说的不对的地方请务必指正。
下次分享一下ShaderLab的学习心得吧,如果有下次。

17
点赞
0
打赏
94
添加到收藏夹
打赏一次,1个CG券
全部评论13
您需要登录后才可以回帖 登录 | 立即注册

学习了
2年前
回复

使用道具 举报


感谢楼主分享!
3年前
回复

使用道具 举报


感谢楼主分享!
3年前
回复

使用道具 举报

66666666666
3年前
回复

使用道具 举报

感谢楼主分享!
3年前
回复

使用道具 举报

ZHowe 发表于 2020-7-14 13:51
相同贴图的相同,并且不能和非本贴图的相同。就试一下就会好理解的多

大佬留个联系方式吗,想跟你探讨一下,刚好我们马上开新项目了,我需要更多了解这方面的东西
3年前
回复

使用道具 举报

ZHowe  
月月月月1 发表于 2020-7-14 13:15
有点不明白,既然相同Layer或相同RenderQueue的同贴图会进行合批,那么你这上面 刚开始默认RenderQueue都30 ...

相同贴图的相同,并且不能和非本贴图的相同。就试一下就会好理解的多
3年前
回复

使用道具 举报

有点不明白,既然相同Layer或相同RenderQueue的同贴图会进行合批,那么你这上面 刚开始默认RenderQueue都3000的时候为什么也是9个DC,不应该也是5个吗
3年前
回复

使用道具 举报

感谢分享啊~学些学习~{:6_205:}
3年前
回复

使用道具 举报

数据加载中....
没有更多评论了