kylda 发表于 2015-11-3 14:55:14

手游特效优化那点事(一)

在论坛里看了很多帅气的特效,确实感觉不错.但是在移动平台的游戏项目,由于硬件限制,特效尤其是3D特效,效果经常大打折扣.这是篇讲解移动平台上美术优化尤其是特效优化的文章,主要目的有2个:一是从游戏美术人员的角度分析移动平台的美术优化技术,尽量少牵扯复杂的程序知识,而是关注于美术同学实际遇到的问题和解决方案.当然也会讲解些底层知识,进一步提高美术人员尤其是特效人员的装逼能力二是我需要一些CG券来下载资源.所以写点东西来赚论坛币. :p需要注意的是,我这里使用的是unity引擎做示范,但实际的技术是各个引擎通用的,只是优化侧重点和工具不同.第一篇讲美术测试环境和Fillrate.如果反响好再写drawcall ,shader这类.能力有限,如果有错误或偏差,欢迎私信讨论.
测试环境的搭建制作移动平台的游戏项目,一个优秀的美术人员应该学会怎么去评估自己资源的消耗.也就是,把所有相关代码去掉,纯美术环境下游戏的运行效率.一个简单的做法就是,把你们的场景文件打开,同时在这样个场景上运行的角色模型动作和特效放上去(比如你想在这个场景中同时出现10个角色放技能,那就模拟游戏环境随机丢10个带动作的角色10个技能特效以及附带受击效果),打包到手机上运行,然后用profiler这类工具来检测下运行运行效率.关于profiler这类工具的使用,百度有详细的教程.比如,要想检查某些美术资源(比如一些特效)的消耗,我会在自家的场景里(下面测试我使用里一个简单的场景和一个特效切换脚本,附带的脚本我后面会提供下载)把想要检查的特效放到Element0~element4中,分别测试运行效率.一.填充率(fill rate)和overdraw. 之所以一开始想说的是Fill rate,而不是draw call或者内存或者shader运算这类,是因为Fill rate造成的瓶颈在移动平台特别明显,并且有一定的隐蔽性不容易被美术人员量化和察觉.下面一个举一个特效上的例子来说明问题.下面是一个常见的爆炸波贴图,用的是普通的alphablend材质(为了让贴图使用ETC1压缩,在shader中把alpha贴图单独拆开了,这个以后说内存优化时再说).然后做一个简单的粒子发射器,然后用这个粒子发射那个贴图的面片模型,面片模型在生成过程中做缩放和旋转动画.这也是特效人员常用的一种扩散波样式.为了问题明显些,我吧生成模型的rate打到比较大的数值200.接下来问题来了.要发射的是什么样子的面片?我下面有个2个面片模型,一个是中间镂空的圆环,一个是最常用的4边形,可以看到面数差距很大,我想基本上特效人员都会用4边形而不是面数高的圆环吧?那在这种情况下实际运行效率如何我们在把刚才的粒子发射器成2个,分别在水平面上发射高面和低面的模型.下面是2个粒子发射器运行时的截图,可以看到,高面粒子场景生成了1万4的的3角面,而低面的场景只有1.4k,10倍的差距.其实眼尖的同学已经注意到了FPS,高面的渲染时间是0.8ms,而低面的是2ms.低面的场景比高面少了1w多边形,渲染时间反而多了一倍!把场景打包到手机上运行,用proflier去检查再次验证了这个结果:在测试手机上高面场景是81ms,而低面是140ms为什么我们明明”优化”了多边形数量,渲染效率反而降低了那么多?从中作怪的就是现在要说的Fill rate和overdraw.**** 本内容需购买 ****
脚本下载**** Hidden Message *****


手游特效优化那点事(二):点我!










wuyiqi 发表于 2020-9-14 15:08:47


南无阿弥陀佛

canaanli 发表于 2019-11-28 09:26:59

有点用

A1021985151 发表于 2019-6-4 10:34:53

资源甚好,发帖艰辛,且阅且珍惜!

E-Night 发表于 2019-5-30 13:31:08

巨大白貓 发表于 2019-5-23 11:21:25

謝謝樓主分享

浩浩荡荡 发表于 2019-5-23 11:04:27

学习了

a784750625 发表于 2019-5-23 09:34:33

牛逼了我的哥

L980326 发表于 2019-4-22 11:54:30

lihaile

_深林 发表于 2019-4-3 08:56:41

谢谢分享
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 手游特效优化那点事(一)