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