[美术规范] 美术资源量控制及优化——特效向

查看:6063 |回复:6 | 2019-12-1 11:41:25

您需要 登录 才可以下载或查看,没有账号?注册

x
因为最近项目要求比较严格,在工作同时一边整理一些关于特效资源量控制的一些知识点,角度比较个人,不一定大家都适用,如有不对之处还望谅解。
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通道给不同的压缩模式。

借鉴了历届大佬的经验,如有不足敬请谅解。


image.png

评分

参与人数 2元素币 +11 活跃度 +18 展开 理由
源支始 + 11 + 10
胖纸Jeremy + 8

查看全部评分

2019-12-1 11:41:25  
 赞 赞 0

使用道具 登录

6个回答,把该问题分享到群,邀请大神一起回答。
2#
您可以在此展示你的链接,或者个人主页!
回复 收起回复
2020-1-16 19:06:11   回复
 赞 赞 0

使用道具 登录

3#
讲解的很好!!!!!!!!!!!!!!
回复 收起回复
2020-7-28 18:23:00   回复
 赞 赞 0

使用道具 登录

4#
挺好的讲解,挺多都讲到了
回复 收起回复
2021-3-22 18:03:51   回复
 赞 赞 0

使用道具 登录

5#
感谢分享~~整理的很详细~~
回复 收起回复
2021-4-16 12:29:10   回复
 赞 赞 0

使用道具 登录

6#
谢谢分享  攒
回复 收起回复
2021-8-10 09:51:12   回复
 赞 赞 0

使用道具 登录

7#
学一下
回复 收起回复
2021-8-10 18:50:37   回复
 赞 赞 0

使用道具 登录

CG 游戏行业专业问题

ArtBible规格文档美术规范开发规则
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表