马上注册,加入CGJOY,让你轻松玩转CGJOY。
您需要 登录 才可以下载或查看,没有帐号?立即注册
×
Cz_wang的特效学习群338763172,在这里只有学习特效,分享资源,什么开车的撩妹
子的统统踢掉,打造良好的学习环境,为爱学习的宝宝们留下一片净土。
因为最近项目要求比较严格,在工作同时一边整理一些关于特效资源量控制的一些知识点,角度比较个人,不一定大家都适用,如有不对之处还望谅解。 1. 粒子贴图压缩,将过大的贴图通过PS尽量减少尺寸,比如一张512*512,压缩到256*256的话,可以将单张贴图资源量缩小至四分之一左右,如果项目内贴图量过大时,压缩贴图时很必要的。 2. 当贴图导入到unity内时一般会勾选一些默认参数,其中有些参数实在特效中,一般使用不到的,这时可以把不用的参数关掉,来减少资源量。这里举个例子: Generate Mip Map:生成Mip地图 这个参数大概意思为,当摄像机足够近的时候会较清楚,当摄像机较远时,变得模糊。 通过实际测试,该张纹理图由42.7KB(勾选参数)减少到32.0KB(取消参数),减少了10.7KB,也减少了大约四分之一的资源量。 3. 一般使用add的粒子,我们可以使用黑底不带通道的贴图,去掉通道无疑可以一定程度上减少不小的开销。这里我们用128*128,一个很小的贴图测试一下。 4. 大面积下的粒子或者模型,尽量使用add的渲染模式,因为alpha模式会渲染通道,会消耗比较大的内存。 5. 当粒子发射模型时,尽量使用填充率较高的模型,这将大大降低的渲染压力。 6. 同理如果在后期优化时,摄像机下粒子特效重叠面积过多或过大,这时也要尽量减少粒子数,删除一些不太影响整体效果的多余粒子及发射器。官方点的话就是减少视窗内单个像素多次渲染从而减少渲染压力。 7. 有关着色器(shader)的使用方面,一般没有特殊要求时尽量使用,mobile模式下的shader,如果有特殊的效果需求,有使用shader forge连接的shader,这时需要程序优化。因为shader forge中会自带一些框架代码(个人理解),其中有些并不是我们需要的,但是他们已经准备好了。这时要是将代码精简到只使用的代码时,就会减少不少CPU的计算量(读取量)。如果使用开关的话可以,让一个开关对应一个宏或者通过if句式来读取利用率。 8. 自己编译的shader,需要尽量少的使用开关,比如我们自己编写了一个材质球,可以识别两张贴图加或乘纹理时,代码会把两个都读取,通过开关来判定你选择的是那个。在一定程度上会比较浪费,需要注意一下。 9. 在粒子系统(粒子发射器)使用方面,一般使用多少个粒子,最大粒子数就写多少,我个人开始以为,默认一千,我瞬时发射十个,没有触及到上限,就不需要修改。后来通过学习和观看资料时,发现其实这个参数的准确含义还包括粒子缓冲池(个人理解),大概意思就是系统提前给你准备了一千个粒子的位置。这就像你去食堂打饭,你打一碗饭,你不拿一个碗,你拿了个大水缸,说我最多能放一千碗饭,你给我盛就完了。这样是不对的(很浪费)。 10. 一般的特效粒子,都不需要加入接受光影或产生光影效果,所以可以把这个参数去掉,减少计算量。 11. 大部分特效当中不要加入灯光参数,如果需要表现灯光效果,可以使用glow来模拟光照效果。 12. 特效中模型资源的合并,在unity中采用一个模型会计算一个draw calls,如果把一些一起使用的模型整合到一起,这样会减少draw calls。这个方面在我以前帖子3分钟制作纸屑特效中有过使用,大家可以去简单看一下。(3dmax中使用附加参数将多个体合到一起) 13. 特效中用到的模型只使用一个skinned mesh render. 14. 特效中如果使用到骨骼动画,骨骼数量尽量不要超过30. 15. 特效中的模型,不要使用mesh collider(模型碰撞包围盒), 16. 从3dmax中导出的FBX文件,如果在不使用动画的情况下,把一些参数关掉, 17. 在叠加光晕时,尽量使用瞬时发射一个,透明度给满的,减少使用瞬时两个,透明度给80%的使用情况。(原理同第六条) 18. 特效中使用动画,可以在父级上使用一个动画,将子级下多个动画都制作在一起。当然这很麻烦,如果资源控制足够严重时,需要注意。 19. 贴图压缩格式:IOS尽量使用PVRTC,Android中尽量使用ETC。 20. 在制作图集时(或普通贴图)最好不要高与1024*1024,否则游戏安装后,低端机会出现游戏崩溃的问题,因为手机系统版本低于2.2时,无法读取超过1000的图集导致的。 21. 贴图尺寸尽量保持1:1,2的幂次方的标准。 22. 特效中用到的模型要避免高面数的模型。 23. 单个特效预制体(prefab)最好保持在1.2MB以下。 24. 贴图带通道的贴图,最好使用256*256及以下尺寸。 25. 贴图使用上,尽量统一使用png格式贴图。现在dds好像项目里都不怎么用了,tga部分项目还是可以使用的,如果项目要求严格,还是养成多用png格式的。 26. 单个界面内或预制体内使用的特效材质,尽量使用单张图集(序列除外),通过发射器的 Texture Sheet Animation参数来找到对应贴图位置。原因是在加载一个界面时,系统会有预加载(预读)机制,如果你16个粒子发射器使用16个材质,这时就会预读16个材质,如果合成一个材质就会减少为预读一个,另外每加载一个材质(shader)就会多调用一个draw calls(openGL图形绘制接口)。这在一定程度上会减少很多压力。 27. 特效中尽量减少音频数量和AudioClip的引用。 28. 添加shader预加载,防止游戏内卡顿的问题,关闭不使用或淘汰的shader来减小包体大小。 29. 特效制作时,尽量将粒子发射器里的缩放模式(Scaling Mode),这样有时不同界面的特效或者预制体交到程序那边时可以自行缩放,这样可以减少一样特效不同大小预制体个数。(个人理解)不得不说制作的时候改了缩放模式这个好用,比如根据效果图对特效时,可以通过缩放父级直接来修改特效大小,避免重做(跑题警告!)
30. 关于线性颜色空间下的项目,合理使用Post Process(后处理),来提升效果,不要改完颜色空间后变暗,直接就多发射一直叠加,不仅不出效果还非常的浪费(同第六条)。 31. 导入的贴图根据是否涉及到Alpha通道给不同的压缩模式。
下载文件中有带图版的。
借鉴了历届大佬的经验,如有不足敬请谅解。
|