一、背景
手里的项目已经在线上运营一段时间了,最近在整理项目工程,发现项目中有很多Material,其中很多都使用了相同的Shader,整体看了一下总共的Material的数量是接近5k,实际使用到的Shader数量是50个左右;这样的比例是1:100左右了吧,所以冗余的东西太多了,重复出现的简直是无法接受;当然出现这些情况和当初立项及项目的相关约定是大有关系的,如果在项目开始的时候没有明确的项目规划,随着时间的推移项目会很难接受的,我现在手里的项目的情况就无法接受;另外这种情况带来了另外一个问题:DrawCall的问题,所以决定花点时间整理出几个系列版本,写出一个完整的优化DrawCall的工程。
二、目的
1.1、减少内存
如背景所说,5k多的Material大概会有20m左右,从单一的来看这个量没有多少,但是对一个项目来说,通过各方面的优化,也是可以从量变到质变的一个问题。【当然,如果合并不合理,反而增加内存,后续会说到】
1.2、减少DrawCall
游戏中在每次进行渲染之前,也就是GPU进行对数据进行处理的时,这里的数据是需要通过CPU传递过来的,CPU每次传递相关的数据给GPU的这一过程【该过程CPU对对需要渲染的数据系列处理】是需要耗时,也会占据CPU的使用,虽然现在的手机较好,但是游戏处理方式不合理,DrawCall数量达到一个瓶颈,那么会