編者按:云計算與網絡基礎設施發展為云端渲染提供了更好的發展機會,華為云隨之長期在自研圖形渲染引擎、工業領域渲染和AI加速渲染三大方向進行云渲染方面的探索與研究。本次LiveVideoStackCon 2023上海站邀請了來自華為云的陳普,為大家分享云渲染在垂直場景的一些應用。
大家下午好,今天非常榮幸和大家進行分享交流,本次分享的主題為華為云渲染實踐——從2D圖形到3D空間。
本人于2005年加入華為公司,自2007年至今曾先后負責華為云計算、自研桌面云和人工智能等技術的研發工作,目前正致力于華為云渲染服務的研發。
本次分享分為以下幾部分:首先介紹渲染技術的范圍和云渲染希望解決的問題,其次介紹華為云渲染在2D、3D和云原生渲染方面的一些實踐,再到工業圖像和AI加速渲染方面的實踐。
-01-
渲染技術的范圍
提到云渲染,大家可能會直接聯想到云游戲,實際上二者并不等同。華為云致力于將渲染技術應用于各個行業,目前主要包括實時渲染和離線渲染兩大分支,實時渲染的落地場景包括虛擬展會、汽車展示、虛擬空間和數字人等等,離線渲染更注重逼真的效果,主要應用于設計效果圖和影視等場景。
-02-
云渲染希望解決的問題
一部分人容易直接將渲染與3D圖形劃等號,因此首先解釋一下渲染的概念。百度百科將渲染定義為CG的最后一道工序,這個解釋偏向于離線渲染。維基和百度百科也曾在瀏覽器引擎、OpenGL中提及渲染,可以看到渲染的對象是包括2D和3D圖形的。維基百科對渲染的定義是較為準確,它實際上指軟件利用二進制和格式化數據生成圖像的過程。
我們將云渲染定義為:實現客戶的圖形渲染業務上云,整個流程從無圖形到2d圖形再到3D圖形。
我們的現有圖像渲染架構如上所示,3D技術最下層的GPU到顯卡驅動、DX、OpenGL、Vulkan運行庫、3D渲染引擎再到3D應用程序,直接使用底層API開發圖形渲染程序難度較大。
另一條2D應用程序分支主要包含大家常見的Office等PC 2D應用程序,從GPU、顯卡驅動、微軟定義的GDI運行庫、GUI框架再到2D應用程序。
-03-
2D渲染實踐
接下來介紹我們的云端2D實踐。標準的2D圖形顯示流程如上圖所示,首先由應用程序調用GUI程序庫,GUI庫轉化為底層GDI運行庫調用,此時運行庫還處于用戶態,沒有調用硬件。隨后GDI運行庫調用顯卡驅動,顯卡驅動調用顯卡,完成圖像渲染并輸出至顯示器。
那么實現2D應用的遠程顯示是否只需要將渲染后的畫面編碼并傳輸到客戶端?實際上這種方式存在編碼效率低、視頻帶寬占用大和有損壓縮導致顏色失真等缺點,并不適用于2D渲染上云。
我們設計的渲染流程是在顯卡驅動獲取2D圖像渲染調用后,將圖像渲染調用序列轉化成數據,利用2D渲染指令處理程序對數據進行處理、編碼后進行畫面無損壓縮,最終通過網絡傳輸到客戶端解碼顯示。以文字輸入為例,輸入的字符串通過字體驅動轉為像素級文字,并且只需在屏幕上的小范圍更新區域顯示,傳輸的數據量不大,可以實現無損壓縮。以上流程在Windows和Linux平臺都有實現方案。
-04-
3D渲染應用上云實踐
3D云渲染架構和2D渲染類似。早期由于技術條件限制,我們選擇使用GPU直通技術,將GPU與虛擬機綁定,虛擬機可以直接訪問GPU,獲得高性能圖形渲染能力,再通過遠程應用技術將畫面傳遞至客戶端。
這種方式的優點是虛擬機可以直接安裝設備商的標準顯卡驅動,保證了兼容性,使顯卡接近于物理GPU性能。缺點是GPU與虛擬機綁定,失去了靈活性,并且成本較高。但它目前仍是主流的云上GPU使用方式。
我們于2012年嘗試將渲染從云端轉到客戶端遠程完成,本質上需要獲取用戶程序的3D指令流。
按照微軟WDDM顯卡驅動可以捕獲到用戶應用程序3D圖像渲染的調用。在該架構下,驅動程序分為用戶態和內核態,實現3D程序需要借助Direct運行庫,它調用設備廠商提供的驅動,并通過內核態驅動與GPU進行交互。OpenGL也存在類似程序。
于是我們將全部3D應用程序指令流處理后傳輸至客戶端,在客戶端重新進行渲染,經過50多款游戲測試,基本實現了渲染功能。但帶寬存在不穩定性,實現難度和所需成本都比較高。
2012年我們開始研發軟件GPU虛擬化。它的基本原理通過兩種虛擬機實現,一種是為客戶服務的虛擬GPU虛擬機,另一種是前述的使用直通技術的物理GPU虛擬機。
我們在虛擬化平臺對兩種虛擬機構筑了內存通信,在虛擬GPU虛擬機安裝虛擬顯卡驅動,利用驅動捕獲3D圖像驅動調用,并利用共享內存傳輸至物理GPU虛擬機,在物理GPU虛擬機中利用直通物理顯卡進行渲染,渲染后進行畫面回傳。
這種方式面臨的挑戰有兩種,一是由于DirectX具有多種版本,驅動兼容實現難度大。二是內部共享內存傳輸還需進一步加速。存在的缺點是方案本身屬于資源搶占模型,隔離能力較差,其次是對虛擬顯卡驅動兼容性研發投入人力非常大。
2013年我們與英偉達合作,在虛擬化平臺支持硬件GPU虛擬化,這種方式可以獲得更好的隔離能力和驅動兼容性,缺點是Nvidia按照虛擬機單獨收取License費用,成本較高。
-05-
云原生渲染實踐
以上介紹的方案僅是圍繞操作系統級別支持的底層圖形渲染能力,對業務具體場景滲透的不夠。從實際業務場景來看,華為云渲染的目標是幫助客戶圖形渲染場景上云,離線渲染場景主要服務于影視和高清設計圖,由此衍生的應用級渲染技術包括AI渲染加速和華為云原生渲染引擎支持的離線光追渲染。
實時渲染場景服務于3D空間、數字孿生、實時設計和游戲等,主要分為現有3D應用無需修改直接上云和經過云原生優化后上云兩套方案,分別包括3D應用實時渲染、云應用以及遠程渲染、3D空間加速。
接下來介紹實時渲染場景下的云渲染技術,華為云通過提供云應用產品幫助實現現有應用直接上云,主要包括對CPU/GPU算力要求較高的3D設計類軟件,這解決了軟件下載安裝耗時費力和銷售價格昂貴的問題,例如CAD、CAE、CAM等設計、建模、仿真軟件類軟件。
它的原理是利用Windows多會話技術來構建輕量級的隔離技術,使Windows Server同時服務多個客戶端。它的優點是具備一定隔離能力,并且由于在虛擬機層面實現了多會話,每個會話都可以直接訪問物理GPU。它本身是標準的Windows技術,和企業內部網絡具備很好的互通性。缺點是GPU計算與顯存處于多用戶搶占模式,無法隔離。并且每個會話要獨立付費Windows RDS License。
為了優化前面提到的License成本問題,我們通過將沙箱和Hook技術結合,讓Windows不使用多會話技術運行多個應用,并服務于多個接入客戶端,這也是目前云渲染的主流技術方案。它的優點是不依賴Windows多會話技術,降低了License成本,缺點是相對于GPU虛擬化,資源隔離能力有限。
前面提到過的硬件GPU虛擬化也是一種主要的實現方式,但需要增加遠程交互模塊對3D應用進行管理。它的優勢是隔離能力和兼容性好,缺點是Nvidia按照虛擬機單獨收取License費用。
接下來對幾種方案適用的場景進行介紹。選擇云應用方案一般涉及強烈的企業內網互通(賬號、權限)和應用兼容性訴求(2D、3D各種類型);選擇3D應用實時渲染一般專注于3D渲染程序,如基于DirectX開發的3D展示應用、游戲等;GPU硬件虛擬化/物理直通方案一般配合云應用和3D應用實時渲染使用。
以上技術的共同點是把3D應用直接搬上云端進行計算,但單純的云渲染能否實現應用不上云,僅渲染上云?
因此我們實現了一套基于云原生優化的上云方案,即遠程渲染。它同時適用于Web、PC和移動端3D應用程序。應用程序實際在客戶端側運行,但渲染的計算被卸載,并通過遠程渲染SDK在云端完成渲染,最終畫面通過視頻編碼回傳給端側。
它的優點是云端只承擔渲染職能,端側的算力可以完成其他邏輯的運算,結合客戶端實際情況還可以靈活選擇本地、云端或混合渲染。缺點是應用需要基于遠程渲染SDK進行改造,并且無法滿足非常高的交互式實施場景需求(例如某些游戲)。
上圖展示了用戶使用遠程渲染服務的具體流程。在開通服務并創建云渲染會話后,由遠程SDK控制云端渲染,渲染后的畫面通過華為RTC服務回傳至客戶端進行顯示。
接下來對遠程渲染效果進行演示。傳統模式下,設計師需要通過離線渲染獲得效果圖后才能查看設計效果。利用華為云渲染,設計師可以實時查看設計效果,同時云端光追渲染可以更真實地還原現場光線環境。
那么渲染和云結合的具體優勢是什么?和消費級顯卡相比,云數據中心使用的硬件價格十分昂貴,高昂的造價實際帶來了哪些利好呢?如上圖所示,如果將云看做一個大機器,可以發現,云渲染支持同時服務于不同類型(手機、平板、主機等等)的多個用戶,并且可提供一個應用能夠被多用戶使用的場景。它的硬件資源不綁定到用戶,而是由用戶使用時間決定。軟件也無需在本地進行安裝。
前面提到的幾種3D應用上云方案本質上只是將本地程序部署上云,云僅僅提供本地資源的替代,計算資源按連接來調度,不同的應用間沒有共享。
華為云通過對自研渲染引擎進行多用戶接入改造實現了一些新的嘗試,使單引擎在相同場景下可以同時接入多個用戶,這種方式變相節省了部分場景加載的內存和顯存,且用戶之間共享的計算可以節省CPU、GPU。作為充分發揮云優勢的云原生方案,它與前述的幾種方案在本質上完全不同。經過實際測試,它可以提升0.5倍以上的效率。
-06-
工業圖形渲染實踐
接下來介紹我們在工業圖形渲染領域的一些實踐。工業圖形渲染引擎可能與大家日常接觸的渲染工作不同,它是計算機輔助設計(CAD)、計算機輔助制造(CAM)、計算機輔助工程(CAE)、建筑信息建模(BIM)等工業設計軟件中的基礎技術組件,決定了3D設計對象的真實呈現、保證前端設計的正確性。
目前國內缺乏自主研發的高質量工業圖形渲染引擎,各大企業的自研引擎無法支持高質量和大場景圖形渲染。業界較為出名的GPU渲染器基本都是國外的產品(如KeyShot和HOOP等)。
華為云在國家技術創新中心的支持下啟動了工業圖形渲染引擎研發項目,目標是歷經2~3年的開發,產出達到世界先進水平的渲染引擎,滿足CAD、CAE、CAM和EDA場景的工業圖形渲染需求。
上圖展示了我們自研工業渲染管線近期的實時渲染效果,目前它已和部分中國三維CAD廠商完成了集成對接,2024年將陸續實現與其他企業設計軟件的對接。
接下來對云端光追實時渲染進行展示,它側重呈現材質、光影等效果。
-07-
AI加速渲染實踐
最后介紹華為云的AI加速離線渲染。我們原有的舊思路是通過自研渲染引擎來替代友商同類產品,由于生態壁壘過高,該思路并不可行。
現有離線渲染流程是客戶端應用通過農場服務、農場調取器提交圖形數據,確定計算節點并完成圖形渲染。由于過程中的光追計算消耗量很大,導致整體所需時間也很長。因此我們希望通過引入AI技術對渲染進行加速,通過農場服務調整參數降低渲染的光追計算,從而降低純CG端的計算,再通過專有的AI模型對渲染過程性輸出CG數據進行AI推理計算。輸出效果可以達到同等質量。
上圖展示了華為云AI加速渲染的輸出效果。可以看到,AI輸出與原生渲染圖在質量上基本一致。
上圖展示了一個AI加速渲染影視番劇的實際案例。可以看到毛發等細節與原生渲染圖基本一致,并且質量要求越高,提速效果越好。
接下來對我們的技術時間軸進行總結。2011年至今,我們的發展從2D渲染到自研3D空間云渲染,從GPU虛擬化到光追引擎和AI渲染加速,涉及的行業包括企業辦公、數字人、影視、云游戲、工業設計等等。
我們的研發團隊呈全球布局,依靠圖形領域全球知名高校和產業基地,持續深耕云原生圖形技術,支持產業升級。
接下來對我們的自研離線渲染視頻進行演示,它主要面向家裝設計場景,光影真實性比實時渲染更強,每幀渲染僅需要5~10秒。
最后對我們的自研實時渲染進行視頻演示,它基于華為自研渲染引擎構建。
本人認為渲染是技術也是工具,可以幫助用戶達成預期效果的呈現,在此也希望與各位在座專家深入交流。我的分享就到這里,謝謝大家!
-
云計算
+關注
關注
39文章
7774瀏覽量
137353 -
人工智能
+關注
關注
1791文章
47183瀏覽量
238258 -
渲染
+關注
關注
0文章
69瀏覽量
10917 -
華為云
+關注
關注
3文章
2445瀏覽量
17410
原文標題:華為云渲染實踐
文章出處:【微信號:livevideostack,微信公眾號:LiveVideoStack】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論