徐嬋嬋
(中國傳媒大學(xué) 計算機與網(wǎng)絡(luò)空間安全學(xué)院,北京 100024)
渲染,已經(jīng)成為了一個商業(yè)化的產(chǎn)品。動漫、電影以及游戲產(chǎn)業(yè)最重要的一個階段就是進行高質(zhì)量的且漫長的三維渲染流程。震撼人心的三維大片需要同樣震撼人心的三維效果畫面來做硬性支撐。渲染是這些產(chǎn)業(yè)不得不開銷的奢侈品,其耗資巨大,貴到以秒來計算,貴到與真人實景的傳統(tǒng)大片一樣燒錢。渲染昂貴是因為離線的三維渲染是一個巨大的工程,即使用專門的圖形渲染器,一幀高質(zhì)量的圖像渲染十幾小時、甚至幾十小時都很有可能,數(shù)十甚至數(shù)百GT的源文件的渲染工作是不可能靠個人的“超能本”在有效的時間內(nèi)完成的。渲染服務(wù)器集群的建立往往很困難,且不論硬件機器的購買所需,單是一臺服務(wù)器配備上完備的正版三維渲染軟件就是一筆不小的開銷。這種渲染服務(wù)器集群的有效工作時間常常是很少的,閑置的機器會占用很大的空間,一旦全部工作起來,耗電量卻又是驚人。根據(jù)計算機硬件發(fā)展的摩爾定律,購買的機器在五年之后又需要更新?lián)Q代以適應(yīng)新的渲染需求。
如何讓低端硬件配置的終端機,如手機、PAD、PC機,以及限制計算能力的應(yīng)用平臺,如網(wǎng)頁等,也能實現(xiàn)高端配置的主機才能獲得的高質(zhì)量的渲染效果,一直是研究人員努力的方向?;诒镜氐匿秩痉绞交蚧诳蛻舳说匿秩痉绞揭堰h不能滿足這種需求,研究人員開始讓服務(wù)器承擔(dān)一部分渲染工作,這就是一種基于服務(wù)器端的渲染方式。
當(dāng)前流行的云計算就是一種基于服務(wù)器端的計算方式。而云渲染只不過是把三維渲染放到了網(wǎng)絡(luò)上,服務(wù)器端執(zhí)行的是渲染計算。云渲染的核心思想是:把大量用網(wǎng)絡(luò)連接的計算資源進行統(tǒng)一管理和調(diào)度,構(gòu)成了一個計算資源池,以此為用戶提供按需服務(wù)[1]。在云渲染中,專有功能集中裝備在云端的渲染器上,而本地只需要裝備一個瘦客戶端。所謂瘦客戶端是指客戶端-服務(wù)器網(wǎng)絡(luò)體系中一個基本無需應(yīng)用程序的計算機終端,它只傳遞鼠標(biāo)和鍵盤的輸入信息給服務(wù)器,并不會在本地進行過多的數(shù)據(jù)處理[2]。客戶端把要渲染的數(shù)據(jù)和設(shè)置的參數(shù)傳到云端服務(wù)器,云端服務(wù)器會完成渲染任務(wù)并把渲染結(jié)果返回給客戶端。鑒于所有的渲染工作全在云端完成,本地既不需要裝備大量的圖形工作站,也不需要具備高性能的計算功能。隨著計算機配備更快運算速度的微處理器、更大容量的內(nèi)存、更高傳輸率的網(wǎng)絡(luò)帶寬、功能更加完備的應(yīng)用軟件,服務(wù)器端因而能夠?qū)崿F(xiàn)更快速的計算功能并為客戶端提供更多更強大的服務(wù)。
本文將主要介紹在服務(wù)器端進行三維渲染的相關(guān)技術(shù),包括系統(tǒng)框架、視頻流的壓縮和編碼等,并對服務(wù)器端的三維渲染技術(shù)的應(yīng)用前景即云游戲部分進行了初探。
文章具體安排如下:第二章介紹三維渲染的不同方式,第三章著重介紹基于服務(wù)器端的三維渲染方法的系統(tǒng)框架和視頻壓縮的一些改進技術(shù),云游戲的相關(guān)內(nèi)容將在第四章作簡要介紹,最后一章對全文做總結(jié)并結(jié)合當(dāng)下的一些問題提出展望。
Martin等人[3]根據(jù)渲染發(fā)生在客戶端還是服務(wù)器端將三維渲染分為基于客戶端的渲染、基于服務(wù)器端的渲染和基于混合端的渲染。
基于客戶端的渲染方法是服務(wù)器端僅向客戶端提供三維場景的描述信息,如模型數(shù)據(jù)、幾何紋理等,具體的渲染流程在客戶端執(zhí)行。若讓服務(wù)器執(zhí)行所有的算法以及渲染,只把計算的結(jié)果或者呈現(xiàn)的圖像壓縮后傳遞給客戶端則是基于服務(wù)器的渲染方法。而基于混合端的渲染方法即是讓客戶端和服務(wù)器端主機同時承擔(dān)一部分渲染工作量,最終渲染的圖像將在客戶端合并呈現(xiàn)。我們從渲染發(fā)生端、服務(wù)器和客戶端的通信、客戶端的硬件需求、方法的優(yōu)劣等角度對這三種渲染方式做表1比較。
從表1中可以看出,基于服務(wù)器端的渲染方法將渲染的工作放在了服務(wù)器端上,僅把計算的最終結(jié)果傳至客戶端呈現(xiàn)。這種方法讓客戶端脫離了繁重的渲染壓力,渲染質(zhì)量只和服務(wù)器有關(guān),因而能夠給不同硬件設(shè)備的客戶端主機提供相同質(zhì)量的渲染服務(wù),客戶端不再需要考慮其軟硬件兼容的情況,只需在服務(wù)端安裝相應(yīng)的應(yīng)用程序即可。如果網(wǎng)絡(luò)通暢,可給不同平臺、不同硬件設(shè)備的客戶端主機提供無差別的、優(yōu)質(zhì)的渲染服務(wù)??梢姡诜?wù)器端的渲染方法具有很明顯的優(yōu)勢,也是當(dāng)前主流的渲染方式。
使用服務(wù)器提供渲染服務(wù)是從渲染農(nóng)場開始的。渲染農(nóng)場最初是為了解決在動畫節(jié)目中需要花費大量時間用于渲染而提出來的一種分布式集群渲染系統(tǒng)。它利用通信協(xié)議將多臺計算機連接在一起構(gòu)成一個計算機集群,以共同分擔(dān)一個原本需要由超級計算機才能完成的計算工作,因此能大大縮短渲染的時間。
渲染農(nóng)場在實現(xiàn)中面對的最關(guān)鍵問題是:如何解決計算機集群中的負載均衡。從概念上來看,負載均衡是一種對計算任務(wù)的分攤和分配,它將一個計算任務(wù)分配給多個操作單元,由這些操作單元來共同執(zhí)行完成。一些經(jīng)典的服務(wù)器,如Web、FTP甚至是企業(yè)中的關(guān)鍵應(yīng)用的服務(wù)器,都是采用這種方法。負載均衡以一種透明且便宜有效的方式拓展網(wǎng)絡(luò)和服務(wù)器帶寬、增加吞吐量、加強網(wǎng)絡(luò)數(shù)據(jù)處理能力、提高網(wǎng)絡(luò)的靈活性和可用性[4]。
表1 渲染方法比較
常見的渲染農(nóng)場的管理軟件有Axceleon Enfuzion、PipelineFX Qube、Virtual Vertex Muster、Frantic Film Deadline,這幾款管理軟件的比較如表2所示。
表2 渲染農(nóng)場的管理軟件比較
另外,Drqueue是一款完全免費的開源的管理軟件,直接內(nèi)置了Python,可以通過Python腳本擴展功能,這對開發(fā)的公司來說是一個很大的誘惑,但是其更新緩慢,效率一般。其他的集群渲染管理軟件如Alfred、LSF、SPIDER、ROYALRENDER等,在國內(nèi)應(yīng)用比較少。
畫面渲染可以分為兩種:三維游戲中的實時渲染(Real-time Rendering)和動畫電影用到的離線渲染(Offline Rendering)。實時渲染為了保證玩家交互流暢而不得不在畫質(zhì)上做出妥協(xié),而離線渲染為了呈現(xiàn)高真實的畫質(zhì)而不計成本。渲染農(nóng)場就是一種離線的渲染方法。從誕生之日起,離線渲染就主要是為電影服務(wù)的,現(xiàn)在也一直如此。
RenderMan是一款經(jīng)典的電影級的離線渲染體系,由PIXAR歷時8年做出,現(xiàn)已成為電影界渲染的一個規(guī)范。所有符合該規(guī)范的都可以被稱為是RenderMan兼容渲染器,最著名的是PhotorealisticRenderMan、BMRT、Entropy和3Delight。Photorealistic RenderMan(PRman)被稱為世界第一渲染器,采用最為原始的掃描線算法,但不支持光線跟蹤、全局照明和焦散效果。BMRT是一款免費的渲染器,由LarryGritz(Renderman大師)自己開發(fā),支持光線跟蹤和全局照明,效果不亞于PRman,缺點是運行過慢。Entropy是BMRT的收費版本,運行速度方面要明顯優(yōu)于BMRT,且支持各種光線跟蹤,渲染效果非常不錯,缺點是需要Mayaman和Maxman的配合使用。最普及的是3Delight,渲染速度快且渲染質(zhì)量高,支持主流的渲染算法如光線跟蹤、全局照明、運動模糊等,具有很高的開放性和龐大的用戶群體,現(xiàn)已成為了RenderMan電影級別渲染器的主流。
實時渲染原本是為了游戲和提供實時的預(yù)覽而進行實時渲染的方法,它的本質(zhì)就是圖形數(shù)據(jù)的實時計算和輸出,基本上都基于GPU圖形加速。當(dāng)前許多游戲引擎使用的都是實時的渲染引擎,如著名的CryEngine、UnReal、Outerra等。離線渲染和實時渲染對比如下圖1和表3所示。
(a)離線渲染畫質(zhì)
(b)實時渲染畫質(zhì)圖1 離線渲染和實時渲染效果比較
離線渲染實時渲染處理器 CPU GPU渲染農(nóng)場 傳統(tǒng)渲染農(nóng)場 云渲染農(nóng)場應(yīng)用 電影 游戲特點 畫面質(zhì)量高,真實感強;渲染時間長 畫面質(zhì)量一般;渲染速度快渲染器 Renderman FurryBall
通過對比可見:離線渲染比實時渲染在細節(jié)上更深入,光照的效果更細膩,畫質(zhì)的真實感更強。目前,傳統(tǒng)的離線渲染還不能利用基于服務(wù)期端的渲染方法提供實時交互,主要原因是:1.離線渲染本身一般進行的是高質(zhì)量渲染,渲染一幀所需計算量大,花費時間長;2.用戶交互的即興性給服務(wù)器端的渲染工作施加了巨大的壓力,實時渲染的服務(wù)器端的渲染性能并不能在保證提供實時反饋的前提下亦保證畫面質(zhì)量,只能有所取舍。當(dāng)然,若今后GPU有重大變革的話,這種狀況或許會發(fā)生改變。
在CES 2009展會上,AMD第一次提出“云渲染”并利用一臺高配臺式機和一個Yukon筆記本分別作為云渲染的服務(wù)器和客戶端,演示了一個云渲染應(yīng)用“AMD Fusion Render Cloud”。云渲染和云計算相似,它是將三維的應(yīng)用程序放在遠程的服務(wù)器中渲染,而用戶終端通過網(wǎng)絡(luò)軟件或本地的三維程序點擊云渲染按鈕,訪問資源經(jīng)由高速互聯(lián)網(wǎng)接入,用戶終端發(fā)出渲染指令給服務(wù)器端,服務(wù)器端會根據(jù)該渲染指令執(zhí)行相應(yīng)的渲染任務(wù),并將渲染出的結(jié)果畫面通過網(wǎng)絡(luò)傳送至用戶終端中并顯示。云渲染的效果圖見圖2。
圖2 云渲染服務(wù)器效果
云渲染至今仍處于探索初期,其面臨的主要困難是:如何處理三維渲染任務(wù)對計算硬件的性能以及指令響應(yīng)時間上提出的苛刻要求。一個云渲染系統(tǒng)每天需要處理成千上萬個用戶渲染請求,若要同時保證給所有用戶提供高清的(如1080p)渲染,后端的服務(wù)器系統(tǒng)需要承擔(dān)巨大的計算壓力,這就要求服務(wù)器具備驚人的圖形計算性能,否則無法滿足大量用戶同時渲染的請求。另一個關(guān)鍵是云渲染對網(wǎng)絡(luò)延遲控制嚴格,如果在客戶端運行三維游戲,則該游戲就要對用戶指令的響應(yīng)具備高度敏感性,尤其在類似于CS的激烈對戰(zhàn)游戲中,稍有延遲就可能讓戰(zhàn)事陷入死局。因而延伸出了另一個困難:高清的渲染需要在網(wǎng)絡(luò)上傳遞大量的圖像數(shù)據(jù),要讓三維渲染達到畫面流暢的效果,畫面的幀率就需要達到30fps,如果游戲的分辨率達到1920*1080,一般的傳輸碼率要高于10Mbps,這也給網(wǎng)絡(luò)負載提出了很高的挑戰(zhàn)。
為給客戶端提供及時的響應(yīng)反饋,基于服務(wù)器端的渲染需要對延遲作嚴格控制。服務(wù)器端響應(yīng)客戶端消息的流程是:用戶發(fā)起請求→服務(wù)器端接收請求→服務(wù)器端渲染圖像→服務(wù)器端壓縮圖像→壓縮的圖像經(jīng)由網(wǎng)絡(luò)傳輸→客戶端接收后解壓縮→客戶端顯示圖像[5]。在既定的網(wǎng)絡(luò)傳輸能力下,如何快速地將渲染的圖像壓縮傳輸?shù)娇蛻舳耸怯绊懻麄€流水線時間的重要因素。因此,人們提出了很多視頻壓縮編碼的方法以加速服務(wù)器端的圖像/視頻流的壓縮速率和壓縮比率。
所謂視頻編碼是指通過特定的壓縮技術(shù),將某個視頻格式的文件轉(zhuǎn)換成另一種視頻格式文件的方式,其目標(biāo)是:在盡可能保證視覺效果的前提下減少視頻數(shù)據(jù)率[6]。當(dāng)前主流的視頻壓縮編碼方法有:幀內(nèi)壓縮和幀間壓縮。幀內(nèi)壓縮在壓縮一幅圖像時僅考慮本幀的數(shù)據(jù)而不考慮相鄰幀之間的冗余信息,屬于一種自滿足式的壓縮方法,一般是采用有損壓縮算法,但其壓縮比率不高。幀間壓縮是一種無損的壓縮方法,利用的是相鄰幀之間的相關(guān)性。由于大多數(shù)視頻的相鄰幀之間的信息變化很少,對這些冗余信息進行壓縮,僅僅記錄本幀和其相鄰幀之間的差值就能得到很大的壓縮量。需要說明的是:“相鄰幀”指的是編碼關(guān)系上的相鄰而非實際播放順序上的相鄰。
運動補償是一種描述相鄰幀之間差別的方法:目標(biāo)圖像會被分割成若干矩形像素塊,每個矩形塊中計算一個單獨的二維向量并存儲,該向量是該矩形塊的位置偏轉(zhuǎn)向量,即指示對應(yīng)塊在參考幀中源數(shù)據(jù)的位置。尋找這些二維運動向量的方法被稱為運動估計。
變形是一種運動向量的方法,它主要用于傳統(tǒng)的基于運動補償?shù)囊曨l編碼估算器。圖像變形的方法是每秒只生成少量的圖像,而中間的部分使用圖像變形實現(xiàn)。變形主要用于補償網(wǎng)絡(luò)延遲,并且在網(wǎng)絡(luò)寬帶允許的情況下,讓客戶端渲染器擁有比服務(wù)器端渲染器更高的幀率。Yoon建立的IBRAC系統(tǒng)就是基于這個方法[7]。應(yīng)用上,Aliaga等人提出一種方法:利用圖像變形來處理攝像機捕獲的高密度畫面以實現(xiàn)對一個真實場景的漫游;這種方法利用空間圖像分層和基于模型的壓縮技術(shù)實現(xiàn)了在交互狀態(tài)下對任意道路的漫游和觀察。變形主要采用比較相似的圖像,以減少不必要信息的存儲[8]。然而,該方法不適用于預(yù)先不知道要壓縮的圖像是什么的交互式應(yīng)用程序。Duan等人提出了一個有關(guān)深度圖的編碼算法[9],但這種方法對于渲染器中的重建過濾器來說會明顯放大一些原本很小的錯誤。
當(dāng)前在視頻流的傳輸中,最重要的編解碼標(biāo)準(zhǔn)有國際電聯(lián)的H.261、H.263和H.264[6]。使用基于變形的運動估計的改進的x264編碼器能夠極大的改善輸入序列的質(zhì)量,這種編碼器在基于服務(wù)器端的渲染中最為常用。相同的高質(zhì)量的內(nèi)容能夠以低碼率傳遞給用戶,這對用戶來說是很誘人的。其壓縮方法對CPU的開銷也很低,只需要對視頻編碼器做一些相對簡單的改動就可以實現(xiàn)。Giesen和Klein提出的方法著重于減輕服務(wù)器端的負載,關(guān)鍵想法是:使用附加信息以增加壓縮階段的運動估計流程[10]。所謂的附加信息包括外部的和內(nèi)部的相機參數(shù),以及每個像素的深度信息。在探索移動用戶的云游戲體驗上,Shi等人使用三維變形以輔助實時視頻方法的編碼,運用H.264/AVC編碼器,利用三維游戲引擎運行時的圖像渲染上下文,如渲染角度、像素深度、相機運動等信息來為云游戲服務(wù),以增強其視頻編碼的性能[11]。
電子游戲市場在軟件和娛樂行業(yè)非常重要的。據(jù)估計,2019年全球游戲市場規(guī)模將達到1500億[12]鑒于云計算的基礎(chǔ)設(shè)施遍地開花,云游戲成為一個新的且極具發(fā)展前景的游戲種類。未來的游戲市場,將會被盒裝游戲、在線銷售游戲和云游戲三分天下。
OnLive首先提出了云游戲服務(wù),云游戲服務(wù)要求在云端渲染三維游戲場景并把游戲場景以二維視頻的方式經(jīng)由寬帶網(wǎng)絡(luò)傳輸?shù)接螒蛲婕业氖菘蛻舳?,游戲玩家的控制信息會傳至云端上以實現(xiàn)玩家和游戲應(yīng)用程序的交互。云游戲的游戲程序的運行質(zhì)量和客戶端無關(guān),用戶不需要花錢更新硬件以支持最新的游戲;用戶可以在不同的平臺上運行相同的游戲;用戶可以不用考慮硬件開銷上嘗試更多的游戲。對于開發(fā)者來說,使用云游戲可以支持更多的平臺,不用考慮軟硬件兼容的問題,減少產(chǎn)品開銷,增加網(wǎng)絡(luò)收入。但云游戲需要高質(zhì)量和低的反應(yīng)延遲(例如第一人稱射擊類游戲需要大約100ms[13])。每個游戲的場景都需要經(jīng)歷實時的視頻流水線:渲染、編碼、傳輸、解碼、展示。要設(shè)計出一款既能滿足這種嚴格的反應(yīng)延遲需求又能達到高質(zhì)量的視頻的云游戲是很難的。
Huang等人展示了一個完整的開放的云游戲系統(tǒng)——Gaming Anywhere[14],其具備很高的延展性、移植性和重構(gòu)性。該云游戲可以運行在Windows、Linux和OSX系統(tǒng)上,而客戶端可以運行在其他的操作平臺上,包括iOS和Android。Gaming Anywhere和OnLive、Stream MyGame相比,前者具備良好的反應(yīng)能力并能提供更好的視頻質(zhì)量,它在減少網(wǎng)絡(luò)擁堵,減少反應(yīng)延遲上都具有優(yōu)勢。
本文對基于服務(wù)器端的三維渲染的相關(guān)應(yīng)用程序和方法進行了探討,這些方法中,大多是將渲染程序放在服務(wù)器端,而服務(wù)器端將渲染的結(jié)果圖像壓縮后傳至客戶端。為了優(yōu)化服務(wù)器端的服務(wù)質(zhì)量,大多數(shù)的應(yīng)用都力圖在服務(wù)器端實現(xiàn)硬件加速,在獲取結(jié)果圖像時直接從幀緩存中讀取數(shù)據(jù)再壓縮傳遞;在傳輸過程中,選擇傳輸整體或者部分的圖像數(shù)據(jù),并使用改進的壓縮方法加快圖像的壓縮速率和壓縮比率以減少網(wǎng)絡(luò)中的數(shù)據(jù)傳輸量;在交互過程中,使用不同分辨率的渲染層級提供臨時的圖像預(yù)覽和最終的圖像展示過程?;诜?wù)器端的渲染方式不再考慮不同客戶端的硬件差異,給應(yīng)用程序的開發(fā)和低端移動設(shè)備的高質(zhì)量顯示帶來了新的可能?;诜?wù)器端渲染的比較熱門的應(yīng)用——云游戲,雖然還處在研究初期,但未來或出現(xiàn)重大的突破,從而給終端機的各種應(yīng)用帶來巨大變革。
隨著基于服務(wù)器端的渲染技術(shù)進一步發(fā)展以及云渲染的普及,在未來的客戶終端上,瘦客戶端或許會成為一種趨勢。在未來的某一段時間,計算機硬件的發(fā)展或許會進入一段停滯期,專門生產(chǎn)計算機硬件的廠商會有一部分轉(zhuǎn)入網(wǎng)絡(luò)相關(guān)領(lǐng)域,以提供更為流暢的網(wǎng)絡(luò)帶寬服務(wù)。
云計算的初衷是為了充分利用閑置的計算資源(不超過5%),但是隨著各地云渲染工作站無規(guī)劃的競爭大肆興起,計算資源的利用率反而下降,而且云端工作站的維護需要大量的資源消耗,若無雄厚的資金支撐和豐富的業(yè)務(wù)資源,一般很難堅持下去。所以,尋求新的運營模式也是當(dāng)下亟待解決的一個問題。