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

在刚刚过去的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
  • 使用Streamline分析RTOS系统性能

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

            开源软件社区的朋友们有福了!如果你有个开源软件项目想支持Arm架构平台,却苦于没有Arm服务器做CI/CD (持续集成/持续交付),那这个好消息你可不能错过。7月10日,Shippable宣布和Arm,Packet.net达成合作伙伴关系,为Arm平台上的软件开发提供原生的CI/CD服务,重点是(敲黑板了)对于开源软件项目,Shippble提供免费的CI/CD服务!这些服务运行在给所有开源软件共享的64位的Armv8…
  • 当增强现实(AR)遇到机器学习(ML),一个结合 Google ARCore 与 Arm NN 的 Unity 案例

    背景介绍 在 Unity 中打开 Google ARCore 功能 编译 Arm NN 共享库 作为 Unity 的 Native 插件的一个 C++ 物体检测器 整合 Arm NN 到 Unity 中 背景介绍 增强现实和机器学习是当前两项最前沿的技术。其中增强现实可以把虚拟的物体惟妙惟肖地渲染到真实世界当中。 而机器学习,则可以帮助程序更好的认识真实世界中的物体。同时运用这两项技术,我们将可以创造出一系列新颖的应用…