作者:gemmaparis,文章出处:ARM Mali Graphics,发表时间:2016 年 4 月 19 日 10:06:14
Unity 是一款大多数游戏开发人员所使用的多平台游戏开发引擎。利用这个引擎可以创建和分发 2D 和 3D 游戏以及其他图形应用程序。
ARM 非常重视游戏开发人员。显然,我们现在可以在移动平台上实现游戏机品质的游戏,因此我们编写了这份面向 Unity 开发人员的 ARM 指南。本指南汇集了各种最佳实践和优化技术,可帮助您充分利用 ARM 移动平台。无论您是初学者还是高级 Unity 用户,您都能够获得在图形应用程序中提高 FPS 时所需要的建议。
优化过程
本指南首先介绍优化过程,让开发人员了解最佳质量设置和优化过程原理。其中演示了如何使用 Unity Profiler 和 Debugger 以及各种 ARM 开发工具(Mali™ Graphics Debugger 和 Streamline)。
首先使用性能分析器对图形应用程序进行测量,分析测量数据以找到代码中的任何瓶颈。接下来,我们确定要应用的相关优化,最后开发人员需要验证优化是否生效。
本指南专门开辟了一个章节来介绍 Mali Offline Shader Compiler,这是又一个对 Unity 开发人员非常有用的 ARM 工具,它使开发人员能够将顶点、片段和计算着色器编译为二进制形式。此外,它提供了有关每个 Mali GPU 管道中所需的着色器循环执行次数的信息,以便于开发人员针对 ARM Mali GPU 进行分析和优化。
优化
优化章节包括从 ARM Cortex 应用程序处理器优化(提供代码片段和设置示例)到 ARM Mali GPU 优化以及资产优化在内的各种内容。
ARM Mali GPU 优化技术包括:
LOD 组设置
开发人员可以通过使用资产优化进一步优化自己的应用程序。有一个章节专门介绍这个主题,其中讲述了如何最高效地准备纹理、纹理贴图集、网格以及动画。
Enlighten
从第 5 版开始,Unity 引擎使用 Enlighten 来支持全局照明 (GI)。Enlighten 是 ARM Geomerics 的实时 GI 解决方案。
Unity 中的 Enlighten 可用于烘焙光照贴图和光照探测,并可以提供实时的间接光照效果。虽然 Enlighten 组件在 Unity 中未明确公开,但在用户界面中有所引用,因此本指南也介绍了这些组件的含义及其协同工作的方式。
Enlighten 相关章节还解释了如何在自定义着色器中配置 Enlighten,阐述了代码流,并且说明了开发人员在顶点和片段着色器代码中设置 Enlighten 时需要完成哪些操作。其中演示了某个版本的 Unity 标准着色器,该版本已经过修改来包括定向全局照明。
Enlighten 光照贴图图像:左上方 - 冰洞演示,右上方 -
其 UV 图光照贴图,左下方 – 发光度光照贴图,右下方 – 方向性光照贴图
高级图形技术
第 6 章是指南中篇幅最长的一章,其中介绍了高级图形技术。这些技术主要使用“自定义着色器”实现,因为 Unity 内置着色器的源代码不提供大多数高级效果。本章首先介绍如何编写和调试自定义着色器,然后继续说明如何实现冰洞和棋牌室演示中使用的高级图形技术。其中还提供了源代码片段:
组合不同类型的反射
动态柔和阴影:在有物体移动的游戏场景中以及房间等静态环境中使用。使用基于局部立方体贴图技术的动态柔和阴影,开发人员可以使用纹理来表示阴影,并使用 alpha 通道表示进入房间的光照量。
雾效果 – 它们可以给场景增加气氛。有两个版本的雾效果:程序线性雾和以粒子为基础的雾。
移动虚拟现实
最后但同样重要的是,本指南的最后一章讲述了为移动虚拟现实开发图形应用程序时的最佳代码编写实践。
Unity 本身支持一些 VR 设备,例如 Samsung Gear VR;并且可以使用各种插件来实现对 Google Cardboard 之类的其他设备的支持。本指南介绍了如何将图形应用程序移植到本机 Unity VR 上。
运行在 Samsung Gear VR 开发模式下的 VR 应用程序的屏幕截图
相比于从智能手机或平板电脑运行图形应用程序,VR 可以创造身临其境感更强的用户体验,因此摄像机动画可能会让 VR 用户感到不自在。此外,VR 可以受益于使用蓝牙连接到 VR 设备的控制器。本指南中介绍了打造终极用户体验的技巧和方法。
有一个完整的章节专门讨论如何在 VR 中实现反射。它们可以使用先前在“高级图形技术”一章中介绍的那种局部立方体贴图技术。不过,必须对该技术进行修改,才能与用户看到的立体视觉输出配合工作。因此,本章解释了如何实现立体反射以及将不同类型的反射结合使用。
我们欢迎大家为面向 Unity 开发人员的 ARM 指南提供反馈,我们会不断更新,您可以在我们的 Mali 开发中心查看文档历史记录。