恭喜你成为UI中国推荐设计师 (详情)
//百度统计 20220402 uicn

您的意见是我们 UI 中国进步的动力!
点击立即反馈按钮,发表您的意见!
立即反馈
QQ群反馈
您也可以加入UI中国官方反馈群进行反馈!
群号:302892100
备注:反馈问题后@管理员能让我们及时了解您的意见

提交需求

赛事与广告咨询合作,请填写需求表单,我们会在第一时间与您联系!

0/20
0/200

设计大赛

  • 设计大赛
  • 发布广告
  • 发布招聘
  • 其它需求

提交完成
感谢您对UI中国的支持和信赖!
CGJOY干货|手游特效优化那点事(一)
0.0°
2016-12-16 原创文章 经验/观点 举报 3228 2 2 0

关注CGJOY在线课堂▲每周get新干货

本文内容来自于CGJOY会员,kylda,感谢他的热血提供。也欢迎各位访问我们CGJOY论坛:http://www.cgjoy.com

在论坛里看了很多帅气的特效,确实感觉不错.但是在移动平台的游戏项目,由于硬件限制,特效尤其是3D特效,效果经常大打折扣。

       这是篇讲解移动平台上美术优化尤其是特效优化的文章,主要目的是从游戏美术人员的角度分析移动平台的美术优化技术,尽量少牵扯复杂的程序知识,而是关注于美术同学实际遇到的问题和解决方案.当然也会讲解些底层知识,进一步提高美术人员尤其是特效人员的装逼能力。

高能预警

需要注意的是,我这里使用的是unity引擎做示范,但实际的技术是各个引擎通用的,只是优化侧重点和工具不同。

美术测试环境和Fillrate

1.测试环境的搭建

        制作移动平台的游戏项目,一个优秀的美术人员应该学会怎么去评估自己资源的消耗.也就是,把所有相关代码去掉,纯美术环境下游戏的运行效率.一个简单的做法就是,把你们的场景文件打开,同时在这样个场景上运行的角色模型动作和特效放上去(比如你想在这个场景中同时出现10个角色放技能,那就模拟游戏环境随机丢10个带动作的角色10个技能特效以及附带受击效果),打包到手机上运行,然后用profiler这类工具来检测下运行运行效率.关于profiler这类工具的使用,百度有详细的教程.比如,要想检查某些美术资源(比如一些特效)的消耗,我会在自家的场景里(下面测试我使用里一个简单的场景和一个特效切换脚本,附带的脚本我后面会提供下载)把想要检查的特效放到Element0~element4中,分别测试运行效率。

Image title

Image title

         一.填充率(fill rate)和overdraw. 之所以一开始想说的是Fill rate,而不是draw call或者内存或者shader运算这类,是因为Fill rate造成的瓶颈在移动平台特别明显,并且有一定的隐蔽性不容易被美术人员量化和察觉.下面一个举一个特效上的例子来说明问题.
下面是一个常见的爆炸波贴图,用的是普通的alphablend材质(为了让贴图使用ETC1压缩,在shader中把alpha贴图单独拆开了,这个以后说内存优化时再说).然后做一个简单的粒子发射器,然后用这个粒子发射那个贴图的面片模型,面片模型在生成过程中做缩放和旋转动画.这也是特效人员常用的一种扩散波样式.为了问题明显些,我吧生成模型的rate打到比较大的数值200.
Image titleImage title       接下来问题来了.要发射的是什么样子的面片?我下面有个2个面片模型,一个是中间镂空的圆环,一个是最常用的4边形,可以看到面数差距很大,我想基本上特效人员都会用4边形而不是面数高的圆环吧?那在这种情况下实际运行效率如何。

Image title

Image title

       我们在把刚才的粒子发射器成2个,分别在水平面上发射高面和低面的模型.下面是2个粒子发射器运行时的截图,可以看到,高面粒子场景生成了1万4的的3角面,而低面的场景只有1.4k,10倍的差距.其实眼尖的同学已经注意到了FPS,高面的渲染时间是0.8ms,而低面的是2ms.低面的场景比高面少了1w多边形,渲染时间反而多了一倍!

Image title

Image title

把场景打包到手机上运行,用proflier去检查再次验证了这个结果:
在测试手机上高面场景是81ms,而低面是140ms
Image title

为什么我们明明”优化”了多边形数量,渲染效率反而降低了那么多?
从中作怪的就是现在要说的Fill rate和overdraw.
unity的overdraw视图选项是可以描述游戏画面的Fill rate消耗,重叠渲染的层次约多,overdraw显示越亮,fill rate越大.我们开启unity 视图的overdraw选项,可以看到,但是高面的粒子由于模型中间挖了洞,边缘也被切成了圆,导致overdraw比低面亮白部分少了很多.
百度搜索像素填充率可以看到详细的解释,作为美术人员不用纠结于那么多专业术语.记住一个事情就行:fillrate和游戏分辨率,渲染混合复杂度,游戏帧率成正比.特效人员常用的Add,alphablend这类半透明overdraw都会增加混合复杂度.而叠加的层次越多,overdraw越多,需要的填充率越大.而手机屏幕的分辨率经常动不动就1080p,2k屏的,所以最后计算的消耗是很大的,导致填充率容易成为美术上的性能瓶颈.
这也从另一方面解释了为啥我们经常发现1000块钱的安卓手机比2000块钱的手机跑同一个游戏快,因为低端机一般是720p,而2000的手机一般都到1080p了,填充率要求上 1920X1080比1280X720大太多了嘛.
知道了这一点,美术人员,尤其是特效人员就能在保证效果的情况下,减少fill rate对渲染效率的影响,也就是减少overdraw.这样方案就很多了,比如粒子生成rate是50,透明度是10%的话,你改成rate是25,透明度是20%,很可能效果基本不变,而运行效率却提高了一倍.又比如如果面片要大范围覆盖场景,那么就尽量减少覆盖的面积和层数,甚至可以用镂空这类做法来强制减少overdraw的范围.

Image title

                              更多内容请访问CGJOY论坛:http://www.cgjoy.com。

                              GJOY是全国最大的游戏动画,特效基地,拥有全国最多的游戏动画,特效,模型,UI,软件插件脚本,各类教程等资源。

                              报名咨询QQ:2880950227 、2880950223 【CGJOY在线课堂】游戏特效、游戏动画、游戏模型、游戏UI、游戏原画网络班(全年招生)和实体班(全年招生),业内知名大神带班。








更新:2016-12-16

收藏

2人已收藏

CGJOY在线课堂

http://www.cgjoy.com/t

  • 77

    作品

  • 103

    粉丝

  • 0

    关注

  • U3D UI边缘流光特效小技巧 雪兔教程
  • 关于链子 鞭子的设定效果 以及教程
  • 角色展示动作
  • 传奇永恒 精品游戏特效(第二弹)

    猜你喜欢

      2016-12-16 原创文章 经验/观点 举报 3228 2 2 0

      CGJOY干货|手游特效优化那点事(一)

      0.0°

      你确定要举报CGJOY干货|手游特效优化那点事(一)

      如果查出恶意举报,十天内禁止提交任何举报申请。

      0/200

      上传证据: 超过10M的附件请使用网盘地址

      点击上传附件

      对谁可见:

      全部设计师
      • 全部设计师
      • 推荐设计师和认证设计师

      您确认要推荐?

      该作品发布时间:2016年12月16日

      评分

      完整度

      启发性

      勤奋性

      排版布局

      推荐心得

      建议20-200字以内

      0/200

      2
      2
      0

      账号或密码错误,请重新输入

      账号或密码错误,请重新输入

      登录

      手机号

      发送验证码 120s 验证码错误

      登录
      第三方账号登录