图形技术深度谈——在主流移动平台上挥别后处理特效的烦恼

在刚刚过去的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

   float lightObjCameraAlignment = dot(objToCam, reftLightDir);

 half alignmentFactor = clamp(lightObjCameraAlignment, 0.0, 1.0);

// Fragment shader

half bloom = 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并且重新编译设备的内核代码,才能做有效分析的,这一限制会在不久的将来,在更多设备上被解除,从而极大地方便开发者,细节请与我们沟通。

Anonymous
  • CiiF现场速递丨好多人围观!Arm物联网设备到数据平台一系列解决方案太秀了

    本周三,第二十届中国国际工业博览会在上海国家会展中心拉开帷幕,并将持续到23日。恰逢周末假日,大伙组队去看一看? 此次Arm同样“盛装出席”,携最新物联网设备管理平台诸多解决方案参展。在此,小编为还没到现场的小伙伴们稍稍剧透一下,希望都能有空去现场感受满满的干货吧~ 谁才是物联网架构首选?有图有真相 Arm此次展位号E170,位于7.2馆的信息与通信技术应用展,今年重点聚焦“工业互联网”领域,吸引了国内外权威的工业互联网…
  • Arm NN 软件开发套件

    Arm NN 填补了现有 NN 框架和底层 IP 之间的空白。它可以帮助 TensorFlow 和 Caffe 等现有神经网络框架实现高效转换,并在 Arm Cortex CPU 和 Arm Mali GPU 上高效运行,无需修改。 Arm NN 不收取任何费用。 下载 Arm NN SDK (GitHub) 关于 Arm NN SDK Arm NN SDK 是一套开源 Linux 软件和工具,支持在高能效的设备上运行机器学习工作负载…
  • 使用Streamline分析RTOS系统性能

    本文翻译自Analyzing the performance of RTOS-based systems using Streamline ============================================================= Streamline是DS-5中的性能分析工具, Streamline可以用来分析裸机系统,RTOS,Linux,Android和Tizen系统的性能…