自 1.6.0 版本起,团结引擎已在小游戏平台支持Metal 图形 API微信抖音已同步支持。Metal 让小游戏项目在 iOS 上获得对齐原生图形 API 能力。

对于开发者来说,将 WebGL 小游戏切换至 Metal 渲染仅需要更改一两个配置项即可。无需针对游戏项目进行任何复杂的适配工作,即可轻松享受 Metal 带来的强大绘制能力和功耗优化

感受 Metal 的强大

以下为使用 Metal 图形 API 在 iOS 小游戏平台制作的风格化室外场景视频:

秋日午后的阳光下,Unity Chan 在金黄的草地中自由地漫步

值得注意的是,场景中所有的草均通过GPU-driven进行绘制,也就是说,每棵草随风摇曳的顶点、可见性视锥剔除以及依据相机距离的种植密度,等等信息均由 GPU 计算生成。每棵草由 39 个顶点构成,在某些视角下,同屏会有超过50000棵草,200w+个顶点,所有的草均由一个 DrawInstancedIndirect 指令提交绘制。

除此之外,场景中使用了较为重度的后处理效果,比如完整的 Bloom 功能,LensFlare 效果。这些效果之前在小游戏平台上通常都是难以支持的。

而在开启了 Metal 渲染后,如此复杂的一个游戏场景,在 iPhone14 上能够轻松以 60fps 的帧率流畅运行。

Metal小游戏带来更低的功耗

从 iOS 13 开始,Metal 已经成为了苹果官方唯一支持的图形接口(GLES 已不再维护)。在 iOS 平台上使用 Metal 渲染,毫无疑问可以获得最佳的性能和体验。

团结小游戏中采用的 Metal 指令流方案,让小游戏能够在享受 WKWebview 内 JIT 加速的同时,调用纯正的原生 Metal 接口,避免了传统 WebGL 小游戏中额外的转换开销。

此外,Metal 图形接口的现代化设计,让引擎可以更有效地管理底层图形资源和管线。画面表现越是出众的游戏,一般来说其底层渲染就会越复杂,而优化复杂的渲染管线正是 Metal 最擅长的事情。

我们测试了多款类型各异的小游戏,都能获得一定的功耗优化,功耗降低7%~30%之间,在图形渲染密集型场景中尤其明显。

打开网易新闻 查看精彩图片

这意味着您的小游戏可以实现更高效的图形渲染,兼顾高帧率和低发热。在 iOS 设备上运行得更久、更稳定,带来更加流畅舒适的用户体验。

我们在某款重度 MMO 小游戏上对 Metal 和 WebGL 2.0 做了对比测试,都在 30 帧满帧率下运行,测试结果如下表所示:

打开网易新闻 查看精彩图片

从数据中可以明显看出,相比于使用 WebGL2.0,使用 Metal 渲染能够在多种设备上取得可观的功耗收益。

Metal 为小游戏提供更现代的图形特性

使用 Metal 渲染可以解锁所有 iOS 平台的原生图形特性,包括ComputeShader、Indirect draw等一系列 WebGL 缺失的能力并完美支持Visual Effect Graph。这些将大幅拓展小游戏在 iOS 上的图形表现力,突破小游戏原本的渲染瓶颈。

  • Compute Shader

    借助 Metal 对 GPU 并行计算的原生支持,开发者可以使用 Compute Shader 对大规模数据进行实时处理

    • 视频所示的百万粒子模拟,每个粒子的位置、颜色、运行状态由 Compute Shader 计算并写入结构缓冲(StructureBuffer),随后由Indirect DrawDraw Instancing直接提交至 GPU 渲染。

  • Indirect Draw

    Metal原生支持 GPU-driven 渲染路径,可在无需频繁 CPU 干预的前提下进行大规模实例化绘制。下图为在文中的草地渲染 Demo 中截取的一帧,草的顶点位置、种植信息均由 GPU 计算产生,支持百万顶点级别的高密度植被渲染。

打开网易新闻 查看精彩图片

  • Visual Effect Graph支持

    开启 Metal 渲染后,Visual Effect Graph(com.unity.visualeffectgraph)也可以在小游戏平台上启用了。

    • 视频中由 50w 个粒子组成的 Unity Chan 小人、飞舞的花瓣和萤火虫也均由 Visual Effect Graph 制作。通过对视效表现能力的挖掘,相信视觉特效艺术家能为小游戏画面带来更为惊艳的效果与比肩原生应用的视效品质。

平台支持

目前,团结 Metal 小游戏支持的平台正在不断拓展。除Unity Connect外,新增了微信抖音的平台支持:

    • 微信 SDK 版本:(≥0.1.31)

    • 微信版本:(≥8.0.63,更推荐 ≥8.0.65)

    • 需开启微信 iOS 高性能+模式

    • 微信 iOS Metal 介绍文档

https://gitee.com/wechat-minigame/minigame-unity-webgl-transform/blob/main/Design/iOSMetal.md
    • 抖音 SDK 版本:(≥6.6.0)

    • 开通抖音 Metal 白名单

    • 抖音版本:(≥37.0.0)

  • Unity Connect

    • 宿主 SDK 版本:(≥1.0.5)

    • Unity Connect 版本:(≥2.6.5)


快速上手

Project Settings -> Player中,选择MiniGame 平台,在Graphics APIs中添加Metal,即可启用 Metal 渲染支持。

构建 Metal 小游戏时,推荐在 Graphics APIs 配置项中同时添加 Metal 和 WebGL 两个 API,这样可以构建出兼容 WebGL 的 Metal 小游戏包,运行时会优先选择 Metal 渲染,在未支持 Metal 的设备将在运行时自动回退至 WebGL,确保低端设备兼容性。

打开网易新闻 查看精彩图片

⚠️注意事项

  • 启用 Metal 后需重新构建 AssetBundle,以确保资源格式正确;

  • Metal 暂不支持 Async Compute,Autoconnect FrameDebugger,iOS native plug-in。


更多详情

除 Metal 图形 API 支持外,团结 1.8.0 起,Android 小游戏平台的 Vulkan 图形 API 支持也已上线,请参阅团结引擎 1.8.0 起,小游戏 Vulkan 支持上线篇。

Unity 官方微信

第一时间了解Unity引擎动向,学习进阶开发技能

每一个“点赞”、“在看”,都是我们前进的动力

打开网易新闻 查看精彩图片