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

HMS Core發表於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 最新技術資訊~

相關文章