自 1.6.0 版本起,團(tuán)結(jié)引擎已在小游戲平臺(tái)支持Metal 圖形 API,微信與抖音已同步支持。Metal 讓小游戲項(xiàng)目在 iOS 上獲得對(duì)齊原生圖形 API 能力。
對(duì)于開(kāi)發(fā)者來(lái)說(shuō),將 WebGL 小游戲切換至 Metal 渲染僅需要更改一兩個(gè)配置項(xiàng)即可。無(wú)需針對(duì)游戲項(xiàng)目進(jìn)行任何復(fù)雜的適配工作,即可輕松享受 Metal 帶來(lái)的強(qiáng)大繪制能力和功耗優(yōu)化。
感受 Metal 的強(qiáng)大
以下為使用 Metal 圖形 API 在 iOS 小游戲平臺(tái)制作的風(fēng)格化室外場(chǎng)景視頻:
秋日午后的陽(yáng)光下,Unity Chan 在金黃的草地中自由地漫步
值得注意的是,場(chǎng)景中所有的草均通過(guò)GPU-driven進(jìn)行繪制,也就是說(shuō),每棵草隨風(fēng)搖曳的頂點(diǎn)、可見(jiàn)性視錐剔除以及依據(jù)相機(jī)距離的種植密度,等等信息均由 GPU 計(jì)算生成。每棵草由 39 個(gè)頂點(diǎn)構(gòu)成,在某些視角下,同屏?xí)?strong>超過(guò)50000棵草,200w+個(gè)頂點(diǎn),所有的草均由一個(gè) DrawInstancedIndirect 指令提交繪制。
除此之外,場(chǎng)景中使用了較為重度的后處理效果,比如完整的 Bloom 功能,LensFlare 效果。這些效果之前在小游戲平臺(tái)上通常都是難以支持的。
而在開(kāi)啟了 Metal 渲染后,如此復(fù)雜的一個(gè)游戲場(chǎng)景,在 iPhone14 上能夠輕松以 60fps 的幀率流暢運(yùn)行。
Metal小游戲帶來(lái)更低的功耗
從 iOS 13 開(kāi)始,Metal 已經(jīng)成為了蘋(píng)果官方唯一支持的圖形接口(GLES 已不再維護(hù))。在 iOS 平臺(tái)上使用 Metal 渲染,毫無(wú)疑問(wèn)可以獲得最佳的性能和體驗(yàn)。
團(tuán)結(jié)小游戲中采用的 Metal 指令流方案,讓小游戲能夠在享受 WKWebview 內(nèi) JIT 加速的同時(shí),調(diào)用純正的原生 Metal 接口,避免了傳統(tǒng) WebGL 小游戲中額外的轉(zhuǎn)換開(kāi)銷(xiāo)。
此外,Metal 圖形接口的現(xiàn)代化設(shè)計(jì),讓引擎可以更有效地管理底層圖形資源和管線。畫(huà)面表現(xiàn)越是出眾的游戲,一般來(lái)說(shuō)其底層渲染就會(huì)越復(fù)雜,而優(yōu)化復(fù)雜的渲染管線正是 Metal 最擅長(zhǎng)的事情。
我們測(cè)試了多款類(lèi)型各異的小游戲,都能獲得一定的功耗優(yōu)化,功耗降低在7%~30%之間,在圖形渲染密集型場(chǎng)景中尤其明顯。
![]()
這意味著您的小游戲可以實(shí)現(xiàn)更高效的圖形渲染,兼顧高幀率和低發(fā)熱。在 iOS 設(shè)備上運(yùn)行得更久、更穩(wěn)定,帶來(lái)更加流暢舒適的用戶體驗(yàn)。
我們?cè)谀晨钪囟?MMO 小游戲上對(duì) Metal 和 WebGL 2.0 做了對(duì)比測(cè)試,都在 30 幀滿幀率下運(yùn)行,測(cè)試結(jié)果如下表所示:
![]()
從數(shù)據(jù)中可以明顯看出,相比于使用 WebGL2.0,使用 Metal 渲染能夠在多種設(shè)備上取得可觀的功耗收益。
Metal 為小游戲提供更現(xiàn)代的圖形特性
使用 Metal 渲染可以解鎖所有 iOS 平臺(tái)的原生圖形特性,包括ComputeShader、Indirect draw等一系列 WebGL 缺失的能力并完美支持Visual Effect Graph。這些將大幅拓展小游戲在 iOS 上的圖形表現(xiàn)力,突破小游戲原本的渲染瓶頸。
Compute Shader
借助 Metal 對(duì) GPU 并行計(jì)算的原生支持,開(kāi)發(fā)者可以使用 Compute Shader 對(duì)大規(guī)模數(shù)據(jù)進(jìn)行實(shí)時(shí)處理。
視頻所示的百萬(wàn)粒子模擬,每個(gè)粒子的位置、顏色、運(yùn)行狀態(tài)由 Compute Shader 計(jì)算并寫(xiě)入結(jié)構(gòu)緩沖(StructureBuffer),隨后由
Indirect Draw與Draw Instancing直接提交至 GPU 渲染。
Indirect Draw
Metal原生支持 GPU-driven 渲染路徑,可在無(wú)需頻繁 CPU 干預(yù)的前提下進(jìn)行大規(guī)模實(shí)例化繪制。下圖為在文中的草地渲染 Demo 中截取的一幀,草的頂點(diǎn)位置、種植信息均由 GPU 計(jì)算產(chǎn)生,支持百萬(wàn)頂點(diǎn)級(jí)別的高密度植被渲染。
![]()
Visual Effect Graph支持
開(kāi)啟 Metal 渲染后,Visual Effect Graph(com.unity.visualeffectgraph)也可以在小游戲平臺(tái)上啟用了。
視頻中由 50w 個(gè)粒子組成的 Unity Chan 小人、飛舞的花瓣和螢火蟲(chóng)也均由 Visual Effect Graph 制作。通過(guò)對(duì)視效表現(xiàn)能力的挖掘,相信視覺(jué)特效藝術(shù)家能為小游戲畫(huà)面帶來(lái)更為驚艷的效果與比肩原生應(yīng)用的視效品質(zhì)。
平臺(tái)支持
目前,團(tuán)結(jié) Metal 小游戲支持的平臺(tái)正在不斷拓展。除Unity Connect外,新增了微信和抖音的平臺(tái)支持:
微信 SDK 版本:(≥0.1.31)
微信版本:(≥8.0.63,更推薦 ≥8.0.65)
需開(kāi)啟微信 iOS 高性能+模式
微信 iOS Metal 介紹文檔
https://gitee.com/wechat-minigame/minigame-unity-webgl-transform/blob/main/Design/iOSMetal.md
抖音 SDK 版本:(≥6.6.0)
開(kāi)通抖音 Metal 白名單
抖音版本:(≥37.0.0)
Unity Connect
宿主 SDK 版本:(≥1.0.5)
Unity Connect 版本:(≥2.6.5)
快速上手
在Project Settings -> Player中,選擇MiniGame 平臺(tái),在Graphics APIs中添加Metal,即可啟用 Metal 渲染支持。
構(gòu)建 Metal 小游戲時(shí),推薦在 Graphics APIs 配置項(xiàng)中同時(shí)添加 Metal 和 WebGL 兩個(gè) API,這樣可以構(gòu)建出兼容 WebGL 的 Metal 小游戲包,運(yùn)行時(shí)會(huì)優(yōu)先選擇 Metal 渲染,在未支持 Metal 的設(shè)備將在運(yùn)行時(shí)自動(dòng)回退至 WebGL,確保低端設(shè)備兼容性。
![]()
??注意事項(xiàng)
啟用 Metal 后需重新構(gòu)建 AssetBundle,以確保資源格式正確;
Metal 暫不支持 Async Compute,Autoconnect FrameDebugger,iOS native plug-in。
更多詳情
除 Metal 圖形 API 支持外,團(tuán)結(jié) 1.8.0 起,Android 小游戲平臺(tái)的 Vulkan 圖形 API 支持也已上線,請(qǐng)參閱團(tuán)結(jié)引擎 1.8.0 起,小游戲 Vulkan 支持上線篇。
Unity 官方微信
第一時(shí)間了解Unity引擎動(dòng)向,學(xué)習(xí)進(jìn)階開(kāi)發(fā)技能
每一個(gè)“點(diǎn)贊”、“在看”,都是我們前進(jìn)的動(dòng)力
![]()
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.