Unity 特效drawcall优化
来源:互联网 发布:汉仪南宫体简下载 mac 编辑:程序博客网 时间:2024/05/21 06:55
参考原文地址:
1.http://blog.csdn.net/github_32062421/article/details/49203501
2.https://www.cnblogs.com/wantnon/p/5619386.html
在做动作游戏中总会有很多重复的特效出现。比如:受击特效,治疗特效等公用特效。我们的程序跟我们说为了减少DC(DrawCall),要求说受击后播放了受击特效后,再次受击是不会再次播放一个受击特效的。要等第一个受击特效播放完后如果还受击了那再播放受击。
一开始我是拒绝的,但是因为我们项目DC的确蛮高了。后面我还是答应了。
最后测试后打击感差了2的1024次方。最后为了解决这个问题,我研究了Unity3d粒子系统。并做了测试。
这是我们的受击特效。DC是5个
如果创建N个的话 DC会怎么样呢?
可以看到Batches 1257....难怪卡死了....
这个特效是由5个例子特效组成的。我把每个粒子特效的OrderInLayer重新设置。2000,2001,2002,2003,2004
确保每个粒子的OrderInLayer不同.不要重复.
接下来就是见证奇迹的时候了......0 0、
可以看到重复创建的特效都跑到Saved by batching了。
大家理解了吗?特效又有新的事情要做了。
PS:关于单个特效也是能优化的。原理是一样的
这是一个散射子弹的特效。看这个特效的结构是相同的特效复制了5份换成了不同的角度。
我还是一样的把OrderInLayer重新设置了。不过每个sq_skill_3_ball,sq_skill_3_fire,sq_skill_3_light都是设置成一样的。
再一次见证奇迹的时刻- -、
没修改前DC的顶峰会随时间在12-16徘徊。
修改后DC的顶峰稳定在8.
你懂了吗?快叫特效去改吧
unity, particleSystem的batch优化
一,单个光效的batch优化
理想状态下一个由若干粒子堆出来的光效只需要一至两个draw call:
(1)至多使用alpha blend(垫底色)和additive(曝光)两个材质球,两shader均需要支持顶点色,不需要带tint color。
(2)使用粒子系统的Start Color和Color over Lifetime来改变粒子颜色(它们都是顶点色),而不是使用shader上的tint color。
(3)相同材质的粒子放到一个图集,使用粒子系统的Texture Sheet Animation来切分图集。
(4)不使用mesh作为粒子(mesh粒子不会合批)。
(5)不同材质的发射器赋予不同Order in layer值,相同材质的发射器使用相同的Order in layer值,有助于避免材质打断(即避免出现“materialA,materialB,materialA”的情况)。
(6)开启dynamic batch。
二,多个相同光效的batch优化
如果场景中有多个光效A,设单个光效A的draw call数为n,那么我们希望所有的光效A加起来只消耗n个draw call,而不是每个光效A都单独消耗n个draw call。
总结:
根据上面的方法复制多个相同的特效,位置不同的情况下,设置Order In Layer之后SetPassCall的数量和一个是一样的,不设置就是乘法运算。但是修改Order In Layer会影响到粒子的渲染先后顺序,可能导致效果发生变化(之前的效果全都是0),而且如果有两种特效在重叠,会出现不管位置如何,Order In Layer大的都会在上面,看起来不正常,所以使用之前可能还需要考虑更多的东西。
有时候就觉得,可能一个不起眼的设置,就会对结果有巨大的影响,所以要想用Unity做好游戏,得把里面所有的模块研究透彻才行。
- Unity 特效drawcall优化
- unity优化DrawCall
- unity优化DrawCall
- Unity DrawCall优化
- Unity Drawcall 优化
- Unity优化----drawcall系列
- Unity3d特效DrawCall优化介绍
- Unity3d特效DrawCall优化介绍
- [Unity优化]减少DrawCall:批处理
- Unity优化之减少Drawcall
- Unity性能优化之DrawCall
- [Unity优化]减少DrawCall:批处理
- Unity之DrawCall优化感想
- [Unity优化]减少DrawCall:批处理
- DrawCall相关优化(Unity 5.4)
- Unity UGUI的DrawCall优化(一)
- DrawCall 优化
- DrawCall 优化
- before、after、prepend、append四个的区别
- tensorflow API:tf.reduce_sum
- iOS在同一个Https目录下放不同ID的包导致的下载问题
- Angularjs实现分页和分页算法
- Java虚拟机专题之内存分配(读书笔记)
- Unity 特效drawcall优化
- Linux下OpenSSL 安装图文详解
- eclipse导入MyEclipse项目之后运行不起来没有Run On Server
- Gobblin CLI
- 各种问题答案
- MyEclipse中搭建spring-boot+mybatis+freemarker框架
- 自动化测试之技术文档--好的技术分析链接
- mysql日历表
- c++调Java走的坑