CG Kit探索移動端高性能渲染

  • 2021 年 11 月 22 日
  • 筆記

內容來源:華為開發者大會2021 HMS Core 6 Graphics技術論壇,主題演講《CG Kit探索移動端高性能渲染》

演講嘉賓:華為海思麒麟GPU團隊工程師

大家好,我來自華為海思麒麟團隊的一名GPU研發工程師,今天給大家帶來的主題是「CG Kit探索移動端高性能渲染」。

華為圖形計算服務(Computer Graphics Kit,簡稱「CG Kit」)提供最前沿計算機圖形學領域的渲染框架、插件SDK與GPU擴展接口,協助開發者挖掘硬件極限性能,大幅降低開發難度,幫助開發者創造出體驗更佳的產品。

那麼,CG Kit能提供哪些解決方案呢?

一、Vulkan渲染框架實踐

Vulkan是最新的圖形標準API,相較於OpenGL具備一定的優勢,並且OpenGL這個標準已經停止演進,未來圖形學基本上以Vulkan向前演進。舉個例子,移動端的光線追蹤就是在Vulkan中描述,並且在OpenGL中是沒有的。但問題在於,Vulkan非常靈活,它相較OpenGL有一定的使用門檻,所以就需要有基於Vulkan高性能的渲染框架,以此提供實踐架構和方案,充分發揮出硬件性能。

二、高性能渲染插件

CG Kit提供多線程渲染、拍照超分、體積雲、遮擋剔除等一系列渲染能力的插件,以便於三方合作的順利進行,比如去年的網易《天諭》手游就集成了拍照超分的算法。

三、開發者工具鏈

CG Kit也提供了完整的開發者工具鏈,我們可以幫助開發者迅速定位解決渲染功能和性能問題。大家可以想像一下,如果未來工具可以自動識別遊戲場景中的一些功能/性能問題並反饋給開發者,這將極大提升我們的開發效率。

四、前沿圖形技術探索

一直以來CG Kit團隊都在對前沿圖形技術進行探索,比如,我們如何把AI的技術應用到圖形渲染中,目前我們已在AI超分、自動3D人臉建模,AI協同動畫生成等方面有所研究成果。

Vulkan渲染框架實踐

Vulkan渲染框架實踐,為開發者提供Vulkan渲染解決方案優化、渲染增強插件和渲染技術文檔,比如,文檔中會介紹一些API使用策略、資源緩存使用優化、Vulkan的兼容性問題等等。
前面提到Vulkan是比較新的API,它的Command Buffer機制可以天然支持多線程渲染。由於Vulkan比較靈活,CG Kit就會針對Vulkan的API做了簡化封裝,使用起來更便利。

其次, CG Kit也支持基於物理的渲染,PBR可以真實地反映物體表面光照的屬性,通過PBR我們渲染出來的物體會更加的真實。

同時,CG Kit提供了資源管理器,可以將所用到的大量管線資源儘可能地進行復用,從而降低開銷,提高渲染性能。

最後,CG Kit同樣支持提供HDR10的顯示能力,配合HDR屏幕的顯示優化,最終出圖會有更好的動態範圍。

靜態超分組件

下面介紹一下遊戲拍照超分的插件,遊戲是具有社交屬性的,分享就是社交里非常重要的一個環節。在遊戲過程中經常會遇到一些非常值得分享的精彩時刻,比如完成了一個里程碑的任務,獲取了一個限量款精美的皮膚,或者已經完成了一個虛擬人物形象定製……在這些時刻,遊戲玩家非常迫切地想把這些精彩的瞬間分享給自己的朋友,那就需要用到拍照的功能,但是如何讓拍照的效果更好呢?

針對拍照效果,CG Kit提供了兩種解決方案。

第一種解決方案就是針對具有獨立NPU的高端手機,例如麒麟980、990和麒麟9000芯片對應的手機,這些具有獨立高端NPU的手機可以直接調用AI超分接口,這樣畫面細節得以顯著增加,畫面風格更加清晰自然,從下面的對比圖可以看出,處理後的圖片人物面部細節明顯有提升。

而針對那些沒有獨立NPU芯片的手機,我們也提供了一種通用的解決方案,叫作FilterSR,這是基於通用GPU的一種算法,應用這種算法後,沒有NPU的手機也可以大幅提升畫面效果,並且相較於傳統的方法它的鋸齒感和畫面清晰度也有很大的提升。值得一提的是,《天諭》就集成了我們拍照超分的算法。

體積雲組件

CG Kit也提供了移動端高性能的體積雲插件,體積雲技術可以實時動態地渲染出高度真實雲海中全局光照場景,並且支持玩家在雲中任意地穿梭,畫面可以真實還原雲朵的物理特性。比如,玩家在穿梭過程中撲面而來的粒子感,還有真實的光照效果,包括雲朵邊緣的細節等等,都會有非常好的呈現。從下圖可以看出,這個雲朵的顏色是隨着時間的變化在逐步變化的,就是因為我們對光照做了24小時的適配。

在體積雲的形態方面,我們支持真實和卡通兩個風格,還支持任意形狀的Mash轉換成體積雲,這樣可以滿足開發者不同的定製需求。
從性能角度看,在麒麟980這個平台上,我們可以做到4毫秒以內渲染1幀,插件顯示上,同時提供了PC端和移動端的插件,一般來說開發者是在移動端上進行編輯調試,並在移動端上以SO的方式集成,而它的包體大小只有400K左右。

體積霧組件

下面介紹一下體積霧組件,在一些特定遊戲風格的遊戲中,具有高度真實的光和霧的效果會給大家帶來非常好的體驗,比如去年有一款非常火的遊戲,叫《賽博朋克2077》,它裏面就有很多霧效。

主機3A大作中,體積霧一般是通過體渲染來實現的,不同於表面渲染只需要渲染物體表面,體渲染要渲染物體內部,渲染工作量可能是表面渲染的幾十倍上百倍,體渲染對硬件的性能要求非常高,這也是一直沒有在移動端落地的原因。

而CG Kit體積霧的組件對傳統的體渲染做了很多優化,我簡單介紹兩種優化。

第一種優化是針對多光源場景下的優化。多光源的時候,渲染的工作量是成幾十倍的增加,針對這個問題我們引入了光源剔除技術,讓光照計算只發生在光源所影響的局部範圍內,這樣就可以大幅地降低渲染的工作量。

第二種優化是,為了提升渲染的效率,我們採用了降低採樣率的方式,但是降低採樣率以後會存在畫面細節不足的問題,為了解決這個問題,我們引入了時域濾波技術,把當前幀和上一幀的結果融合,這樣也會得到一個非常不錯的結果。數據結構也針對這些優化做了相對性的適配。

經過前面一系列的優化之後,我們可以在移動端進行實時高性能的體積霧渲染,從性能角度來看,在麒麟980平台上,可以做到4毫秒一幀渲染;在集成形式上,可以同時提供PC端和移動端插件,支持PC端對編輯調試,移動端以SO方式集成,移動端插件包體小於500KB。

AI捏臉

最後介紹一下AI捏臉,在遊戲場景中如果能夠做到虛擬形象千人千面,而且它的虛擬形象能夠有遊戲玩家一部分的臉部特徵,就會提升用戶的代入感。AI捏臉以正面自拍照的方式輸入,在調用我們的AI接口以後,會生成一組高度還原用戶臉部特徵的捏臉參數,基於捏臉參數自動生成3D模型,同時我們在追求幾何相似的同時,還將真實紋理、模型紋理相融合,使得它的紋理能提現玩家的一些面部特徵,還原性更高。我們在集成上提供了非常簡單的接口,開發者可以便利地進行適配,也可以大幅地提升他的開發效果。

因為我們是純端側運行,在中高端機型AI捏臉時間小於4s,穩定性很高。同時我們的捏臉範圍不但支持面部,而且還支持五官、髮型、眼鏡等;我們還融入了高度還原的真實紋理,有更好的還原度,並提供美觀度調整功能,可以控制最終的輸出圖美觀度。在開發效率上,開發者只需要兩步就可以調用我們的功能,第一步PC端進行模型自由適配,第二步在移動端以用戶的自拍照為輸入就可以調用我們的接口,整個過程非常簡單便捷。

希望大家可以進行深度的合作,謝謝!

了解更多詳情>>

訪問華為開發者聯盟官網
獲取開發指導文檔
華為移動服務開源倉庫地址:GitHubGitee

關注我們,第一時間了解 HMS Core 最新技術資訊~