Airbnb開源了適用於iOS的渲染引擎Lottie 4.0,這個版本使用支援Core Animation的全新渲染引擎,對所有Lottie動畫帶來顯著的效能改進。Lottie是Airbnb的跨平臺函式庫,可用於渲染向量動作圖像,不只Airbnb廣泛地使用Lottie,Lottie現已被數千個應用程式用於渲染動畫。

Airbnb提到,他們多年來大規模的使用Lottie,發現Lottie存在一些效能缺點,像是在處理更複雜的畫面時,容易發生影格遺失的問題。而發生影格遺失的原因,跟Lottie渲染動畫的方法有關,Lottie之前的版本在應用程式的主執行緒播放動畫,每個影格呼叫一次CADisplayLink,刷新動畫進度並重新渲染內容,播放動畫大概會消耗5到20%的CPU資源,這會使用於應用程式其他部分的CPU周期被壓縮。

也就是說,當主執行緒忙碌時,動畫可能就無法更新,導致動畫影格遺失或是停頓,產生糟糕的用戶體驗,官方解釋,這是在主執行緒綁定渲染架構的限制。

而在iOS上,播放動畫最高效也最省電的方式是使用Core Animation,以系統框架透過GPU硬體加速在程序外渲染動畫,動畫播放會由一個稱為渲染伺服器的單獨系統程序管理,官方表示,以Core Animation驅動的動畫,不會增加應用程式本身的CPU使用率,動畫在主執行緒阻塞或是忙碌時仍可以繼續播放。

在2022年Airbnb花了一些心力以Core Animation,替Lottie開發一個全新的渲染引擎實作,這個新引擎消除了Lottie動畫的CPU開銷,無論應用程式的CPU負載如何,都能保證Lottie動畫以60或是120 FPS順暢地渲染。

在新引擎渲染的動畫,不會在應用程式的主執行緒上執行程式碼,因此應用程式現在可以將更多資源分配給其他功能,這在執行時具有高CPU負載的任務特別有價值,像是Airbnb應用程式首次啟動時會顯示Lottie動畫,在切換使用新渲染引擎後,應用程式的總啟動時間減少,同時還能提高啟動動畫的影格速率和用戶體驗。

Airbnb在Lottie 3.4.0就已經開始加入Core Animation,但當時只作為可選功能,而Airbnb自家已經完全使用新引擎6個月,並且解決早期使用者所回報的問題,現在從Lottie 4.0 for iOS開始,Core Animation渲染引擎將成為預設,Lottie應用程式開發人員不需要進行額外的移植工作,就可以立刻獲得動畫渲染效能提升。

熱門新聞

Advertisement