图形技术深度谈——主流(中端)移动平台上的极速后处理特效

在刚刚过去的unite北京年度盛会上,安谋科技中国(arm china)有幸能与广大开发者一起管窥最新的图形技术,并现场把玩趣味横生的xr技术演示,共有300多位热心观众亲临了我们的技术专场,加上不计其数的展台访客 ,不仅带来了超越预期的人气,也留下了许多宝贵见解。
近些年来,中国的移动游戏市场,史无前例地高速发展,在这里,我们看到一个又一个奇迹地诞生,而其中多半,都离不开unity引擎和它背后充满活力的开发者社区,每年的unite的大会,更是一个真正的焦点时刻,将五湖四海的业界豪杰,聚于一堂,碰撞出技术和商务的火花。arm也都非常有幸,在过去的这么多年里,能同unity一起不断见证并助力于移动游戏产业的茁壮成长。
时至今日,从市场规模和用户数量来看,移动游戏已远超包括pc和主机平台在内的任何其他游戏形式,而在此其中,具备高度拟真图形效果的游戏,慢慢凭借着自己的品质优势脱引而出。
在亚太地区,大约90%以上的移动设备都是采用arm架构,并且其中大多数又同时配备了arm的mali gpu,辅以arm出色的硬件基础,调试工具,以及开发技巧,绚丽的图像效果不再只是高端机型的专利,开发者可以把自己卓越的创意,毫无障碍地带给几乎所有的玩家,从而获得过去难以想象的成功机会。
主流(中端)移动平台上的极速后处理特效
仔细观察,不难发现,上面4幅实时渲染画面在视觉效果上的差异,上排两张是没有加入bloom效果的原始画面,人物盔甲以及地面金属材质的表现力差强人意,而下面两幅经过优化的画面,不仅在关键元素上光芒四射,而且还能在绝大多数移动平台上稳定运行于60 fps高帧率之下。
这几张画面截取自arm重要的游戏生态战略合作伙伴: nordeus开发的3a级移动大作spellsouls(目前还在内测阶段,尚无正式的中文名,坊间有爱好者称之为 “魔法战魂” )。nordeus是一家来自塞尔维亚首都贝尔格莱德的独立游戏工作室,而spellsouls是其代表性的作品之一,在近年来的gdc和unite大会上,他们都不时与开发者无私分享自己的宝贵经验。
nordeus与arm常年保持在移动游戏优化方面,深入而紧密的协作,我们也期望在中国孵化更多这样的生态合作典范。
定制化forward+渲染路径:
为了能在最多的设备上,以最高渲染质量,流畅运行于60帧,nordeus在spellsouls里创新性地使用了forward+的渲染方式,从而最大地发挥移动gpu的tiled based架构优势(而mali gpu就是典型的tb架构)。出于众所周知的原因,将pc和主机平台上成熟高效的deferred rendering技术直接应用于移动平台,仍然是不太现实的选项,而传统的forward渲染也存在着一定局限性,其运算复杂度会随着光源数量与场景复杂度,急速上升而几乎无法处理4个甚至更少的动态光源。
而在这个游戏里,暗黑真实系的基调,以及大量高反射材质急需出色的光照效果来烘托气氛,幸运的是开发者能开拓性地实现forward+渲染路径,辅以合适的光源属性,数量,与范围设置,从而圆满解决了这个大问题。
关于forward+在移动端的实现,特性,实现技巧,arm正计划在不久的将来,推出一系列的深入的主题,结合生动的实例加以探讨,敬请各位期待。
效果和性能间的精妙平衡
现场的听众一定还记得,整个演讲是以一种倒叙的手法,把整个游戏的优化过程娓娓道来,在此我们就不再卖关子了。
在整个游戏的性能优化过程中, 选择合适的贴图分辨率,包括地形,光照贴图等,虽然都是些不大起眼,也不高深的举措,却也收效显著,为整体的fps提升出力不少,即使在打开了pbr的前提之下,仍能让开发者在最终阶段,有足够的渲染算力预算,用于能做到很高效但也不会完全免费的后处理上。
这里需要特别指出的是,很多开发者可能误认为,pbr就是高端旗舰平台的专属,殊不知只要实现得当,千元机也一样可以有。
高度优化的blur实现方法
spellsouls采用了上图可比标准高斯模糊提速14倍的超高效blur方法,由arm在2015年发表。简单来说这个技巧就是,通过先期不断缩小目标图像,后期再次放大,并与此同时交替进行水平或垂直方向的快速像素混合操作,来大大减少整体所需的像素操作运算量,性能比起经典算法有了质的提升。
欢迎大家读过之后,也能在自己的项目里大胆采用,有任何问题或发现都请随时与我们取得联系!(nathan.li@arm.com)
灵活使用预烘培与广告牌
// vertex shader
floatlightobjcameraalignment = dot(objtocam, reftlightdir);
halfalignmentfactor = clamp(lightobjcameraalignment, 0.0, 1.0);
// fragment shader
halfbloom = rawglossmap.a;
finalcolor += finalcolor * bloom * i.alignmentfactor * _bloomstrength;
在spellsouls里,采用了在游戏制作阶段,就把bloom map相关的信息提前生成并巧妙地存储于相应纹理的alpha通道里,在游戏运行的时刻,把混合后的像素贴在一个永远朝向摄像头,并悬浮于角色与视窗之间的公告牌上,用上面两个简洁高效的shader就做出了栩栩如生的高光效果,多么巧妙!这样做,可以既避免角色高光效果被轮廓线所局限的问题,又保证整个处理过程只要不到1毫秒!
移动游戏优化的思路与相关工具
关于效率与效益的思考
长话短说,无数的项目已经证明,如果要想收获最大的效益,那么我们在一开始跳入细节之前,应该最大限度从更高的层面上,整体把握好优化的重点与方向,切不可做舍本逐末的亏本生意,避免把宝贵的时间与精力,过早过多地耗费于一些旁支细节的改善之上,如上图所示请向左看。在spellsouls这个游戏项目里,基础渲染优化后花了约16毫秒,加上超高速的后处理(<1毫秒),最后能稳定运行在60帧。
arm的开发者工具套件
上图是arm的(主要)开发者工具全家福与我们推荐给的大家的使用顺序图,原则上讲我们通常都是先通过ds-5 streamline来确定性能瓶颈所在,然后用mali graphics debugger来分析应用的行为,在最后的细节优化阶段,用mali offline compiler来一步步提高shader效率。
ds-5 streamline本身有完全免费的community社区版供下载使用,同时对于希望深耕的开发者,专业版的购买请直接与我们联系。streamline社区版在gpu分析方面可以说和专业版(可免费试用3个月)无二,只是对于一部分cpu的hw counter(硬件计数器)有所限制。而mali graphics debugger(mgd)本身就是一款免费的工具,只有trace/replay(录制回放)等个别高级功能需要ds-5专业版授权来解锁。
值得一提的是,mgd目前已经可以在绝大多数设备上,直接运行而无需root,当然前提是开发者拥有项目源代码,并在对应的引擎(unity和unreal engine)里打开相应调试选项重新构建后才能使用,如果需要调试没有代码的应用apk,还是需要使用root过的设备噢。而ds-5streamline过去是需要root并且重新编译设备的内核代码,才能做有效分析的,这一限制会在不久的将来,在更多设备上被解除,从而极大地方便开发者,细节请与我们沟通。

尚德电力遭纽交所退市警告
数字化施工,成都天府国际机场建设一路高歌
饲料生产控制系统如何实时监控设备运行状态
负反馈的采用原则有哪些
A股1013家公司花6229亿元买理财!说说半导体公司买理财那些事儿
图形技术深度谈——主流(中端)移动平台上的极速后处理特效
苹果明年将会有Intel处理器+AMD显卡等产品问世
关于钢化玻璃低发射率问题解决分析
Q2季度LTE用户数增长一倍,预计2025年全球移动用户数将接近103亿
基于C89C58RD+单片机与VS1003实现MP3播放器设计
中国联通三大5G创新产品重磅发布
中兴与深度共同研发了UOS操作系统
关于可编程LED驱动器,更简单的方法是什么
搭载RK3588的迅为iTOP-3588开发板解读
华为荣耀9和荣耀v9有什么区别?华为荣耀9和荣耀v9对比评测
选购扫地机器人要注意哪些方面
集成ESD钳位二极管的工作原理
第五代实时操作系统PX5 RTOS发布
SoC芯片中内部总线模块的设计
什么是人工气候箱,它的功能作用是什么