滕 斌
【摘要】為了使動畫作品更加完美逼真,往往需要更精細的藝術造型創作、更方便的制作軟件、更快捷的計算速度和更有效的設備使用,分布式渲染系統提供了一個廉價的視頻渲染平臺。介紹了分布式渲染技術的研究現狀,針對渲染任務的劃分與分配等核心技術進行了研究,提出了一種分布式渲染任務劃分與分配方法。
【關鍵詞】分布式;渲染;任務劃分;任務分配
1 引言
隨著科技的不斷進步和計算機圖形學的飛速發展,對于一些交互式的或實時的圖形應用而言,需要渲染大量復雜的場景運算,這是一項計算強度很大的工作,傳統的單處理器已經無法勝任。
渲染(Rendering)是一種計算機圖形生成技術,首先在計算機內建立所需場景的幾何模型,并附上一定的材質、紋理及色彩,再加上光源、根據一定的光照條件,計算并生成具有真實感效果的場景圖形。渲染是基于一套完整的程序計算出來的,硬件對它的影響只是一個速度問題,而不會改變渲染的結果,影響結果的是看它是基于什么程序渲染的。
隨著數字媒體制作手段的更新和數字電影、HDTV標準的普及所帶來的海量數據,數字媒體制作對計算機的總線帶寬計算速度等硬件要求越來越高。能帶給人們極大視覺沖擊力及真實感的3D動畫,越來越多的出現在各類媒體作品中。但是,單機渲染和動畫生成計算往往非常耗時。雖然計算機的單機性能有了很大的提高,但是在處理復雜的3D圖形時仍顯力不從心。無論是單處理器的商用機還是雙處理器甚至四處理器的工作站在面對渲染處理中的龐大計算量時,其處理能力都是十分有限的,即便是多處理器的工作站使用數小時渲染一幀較復雜場景也是很平常的事情。那么對于一個數分鐘或者幾小時擁有上萬幀的片子,其渲染時間將是十分漫長的。這個問題已經成為CG產業的最大瓶頸。
目前圍繞如何提高渲染系統的性能展開了大量的研究工作,解決辦法之一就是將渲染任務拆分到系統給定的多個渲染節點,以此實現高性能的并行渲染。首先介紹了渲染技術的發展歷程,然后提出一種分布式渲染任務的劃分與分配方法。
2 渲染技術的發展歷程
在較大規模的動畫制作項目過程中,特別是三維動畫和電影節目的制作,由于復雜的場景和特效,著色渲染需要大量的時間。渲染速度過慢成為了影視特效和動漫制作的瓶頸。因此,不斷提高渲染速度是影視和動漫等創作過程中追求的目標。渲染技術的發展依次經歷了如下4個階段。
2.1 基于CPU的渲染
以4K分辨率進行渲染為例,假設每幀渲染耗費1小時,1分鐘動畫(60s×24frame/s)需要60天來進行渲染,1部120分鐘的影片需要20年的時間來完成渲染工作。在時效性上遠不符合影視創作和動漫制作的要求,急需能快速處理圖像的處理器GPU(Graphic Processing Unit)來提升渲染速度。
2.2 基于GPU的渲染
GPU自1999年首先由NVIDIA公司提出來后,其發展的速度是CPU更迭速度的3倍多。GPU的運算速度比CPU要快,主要是由于GPU是為圖形實時渲染而量身定制的,具有超長流水線和并行計算的優勢。
2.3 網絡渲染
在網絡環境下,由于網絡節點的獨立CPU和GPU渲染能力十分有限,因此采用網絡染可充分發揮網絡資源優勢、利用渲染節點的計算能力來進一步提升渲染效率。
2.4 分布式渲染平臺
分布式渲染環境是基于Client/Server模式的,主要包括三個部分:
(1)終端用戶(End-user)。終端用戶通過客戶端的GUI向系統提出渲染要求,系統根據渲染要求完成相應工作,最后向終端用戶顯示整個圖像。
(2)客戶端(Client)。客戶端包括GUI和一個圖像生成器,GUI接受用戶的渲染請求,圖像生成器用來顯示3D幾何數據圖像。
(3)服務器端(Server)。服務器端是基于主從模式結構的,它包括三個組件:數據處理組件、圖像渲染組件和圖像合成組件。數據處理組件首先根據終端用戶的渲染要求將原始數據劃分成圖元組,然后采用任務拆分算法將任務分配給不同的圖像渲染組件,每個渲染組件負責渲染分配到的那部分場景數據,渲染完畢,圖像合成組件將所有渲染結果合成一副完整的圖像,并交給顯示器來顯示,至此任務就全部完成了。
3 渲染任務的劃分和分配
在進行分布式設計時,需要將設計任務進行劃分、分配和協調。任務劃分是指提供結構化的任務定義方式,遵循自頂向下逐步細化的原則,將任務分解為一個個相對獨立且互有關聯的子任務,并將分解結果以表的形式存放在數據庫中。任務分配是指將分解后的任務分配給設計者,并將分配結果存入數據庫的任務分配表中。任務協調則是根據產品設計需要重新調整設計進度和設計任務分配。
在分布式渲染中,我們把一個復雜的渲染對象或者一個大型的渲染任務稱為總任務。總任務可以被劃分為若干個子任務,由不同的渲染節點完成。子任務即一個簡單的渲染對象或一個大型渲染任務的一部分。渲染任務的劃分就是將總任務劃分為若干子任務,由不同渲染節點完成,渲染任務的分配即將劃分好的子任務分配給各渲染節點。
分布式渲染中,主控節點端充當主設計者的角色,對渲染的任務進行整體劃分和分配。在分布式設計中,總設計者指一次分布式設計任務的發起者,其擁有的職能有:對任務的總體控制、協調各子設計者的工作,對設計結果進行復合、檢測和確認。而視錐就是主控節點端進行渲染任務劃分和分配的依據。通過規定每個渲染節點端視錐的位置、方向及大小來分配其所要渲染的內容。在進行渲染任務的劃分和分配時,主控節點端不能隨心所欲的進行,這里還涉及到一個任務約束的問題。任務約束在分布式設計中指一個設計對象內部存在的各種約束關系,如尺寸、位置、拓撲關系等,將設計任務分解后,這些約束就反應為各個子任務之間的約束。在分布式渲染中,任務約束反映為不同渲染節點間的拼接、重合等關系,任務約束由整體所構造的虛擬現實環境或所需達到的效果所確定,根據所構造的虛擬現實環境或所需達到的效果的不同,任務間的約束也會不同。如:在大屏拼接中,任務約束的一個最明顯表現就是視錐間的完美拼接;在CAVE系統中,任務約束除了視錐間的拼接外,還有一個重要的約束關系就是每個視錐的Fovy值為90度。
4 總結
目前協同渲染平臺僅支持同構渲染,對任務的劃分也僅僅是基于視錐的劃分,如何使協同渲染平臺支持異構渲染,并支持多種劃分依據還有待進一步的研究。隨著虛擬現實技術、協同技術的發展和社會的發展,人們對虛擬環境的認識越來越高,分布式渲染技術必然會越來越受到重視,同時,分布式渲染平臺作為對分布式渲染技術的支持也必然會越來越得到大家的認同。