Reyes渲染架構(gòu)
Reyes架構(gòu)的設(shè)計(jì)目標(biāo)
Reyes架構(gòu)的設(shè)計(jì)遵從以下目標(biāo):
模型復(fù)雜性和多樣性:為了產(chǎn)生復(fù)雜和樣式豐富的圖像,渲染系統(tǒng)的用戶必須能通過(guò)分形或粒子系統(tǒng)等,經(jīng)由編寫程序生成大量復(fù)雜的幾何結(jié)構(gòu)。
復(fù)雜著色:場(chǎng)景的復(fù)雜度通常由光線和物體表面的相互作用產(chǎn)生。通常,在計(jì)算機(jī)圖形學(xué)里,這是通過(guò)使用紋理來(lái)表現(xiàn)的,紋理可以是一組像素,用于描述表面位移(置換)、透明度或反射率等。Reyes允許用戶用計(jì)算機(jī)程序來(lái)描述表面結(jié)構(gòu)和光學(xué)互作用,而不是簡(jiǎn)單的數(shù)據(jù)查詢表,并和可編程著色器結(jié)合。算法的一個(gè)重要目標(biāo)是減少處理器從存儲(chǔ)器中讀取紋理的時(shí)間。
避免光線追蹤:Reyes架構(gòu)提出的時(shí)候,計(jì)算機(jī)的處理能力和存儲(chǔ)量都很有限,意味著使用光線追蹤需要耗費(fèi)幾萬(wàn)小時(shí)才能渲染完一個(gè)圖像,Reyes算法避免使用光線追蹤,因此渲染快的多,并且圖像也非常逼真。
速度:(單個(gè)計(jì)算機(jī))一年能渲染完成一部每秒24幀的兩小時(shí)影片,即平均每幀只需要渲染3分鐘。
圖像質(zhì)量:任何圖像,若帶有無(wú)用的、因算法導(dǎo)致的缺陷,都是不可接受的。
靈活性:該架構(gòu)必須足夠靈活,在引入新技術(shù)時(shí),不需把算法完全重寫。
Reyes算法能很高效的渲染一些電影畫面要求的必不可少的效果:光滑的曲面、表面紋理、運(yùn)動(dòng)模糊和景深。
Reyes渲染流程
Reyes渲染流程
Reyes算法通過(guò)把參數(shù)曲面分割成微多邊形(micropolygon)——小于一個(gè)像素的四邊形,來(lái)渲染光滑曲面。雖然要精確逼近曲面需要很多微多邊形,不過(guò)他們可以簡(jiǎn)單并行的進(jìn)行處理。Reyes渲染器對(duì)高級(jí)的幾何圖形進(jìn)行細(xì)分時(shí),會(huì)根據(jù)需要來(lái)進(jìn)行,它只需要?jiǎng)偤眉?xì)分到使圖形在最終圖像中看起來(lái)光滑的程度。
然后,一個(gè)著色系統(tǒng)給微多邊形的每個(gè)頂點(diǎn)賦予一個(gè)顏色和透明度,許多Reyes渲染器允許用戶使用著色語(yǔ)言編寫任意的燈光和紋理函數(shù)。微多邊形可以在一個(gè)大的網(wǎng)格里進(jìn)行處理,因此可以進(jìn)行并行向量處理。
經(jīng)過(guò)著色的微多邊形在屏幕空間進(jìn)行采樣,以生成輸出圖像。Reyes引入了一個(gè)開創(chuàng)性的隱面判別算法或者叫hider,算法對(duì)運(yùn)動(dòng)模糊和景深進(jìn)行必要的整合,而無(wú)需比未加模糊的渲染使用更高的模型和著色采樣數(shù)。hider通過(guò)一種稱為隨機(jī)采樣的蒙特卡洛方法收集一定時(shí)間和鏡頭位置內(nèi)每個(gè)像素里微多邊形的顏色。
基本Reyes渲染管線工序
Bound,計(jì)算幾何圖形的邊界。
Split,把大的圖形分割為更小的圖形。
Dice,把圖形轉(zhuǎn)換成微多邊形網(wǎng)格,每個(gè)大概一個(gè)像素大小。
Shade,計(jì)算每個(gè)微多邊形網(wǎng)格頂點(diǎn)的燈光和顏色。
Bust,把網(wǎng)格炸開成單個(gè)的微多邊形,對(duì)每個(gè)計(jì)算邊界并判斷是否可見。
Hide,對(duì)微多邊形進(jìn)行采樣,并生成最后的平面圖像。
在這個(gè)設(shè)計(jì)中,渲染器必須把整個(gè)圖像緩存在內(nèi)存中,因?yàn)楸仨毎阉械膱D形都處理完成以后才能輸出最終圖像。一般在dice步驟之前會(huì)進(jìn)行一步叫bucketing的常見內(nèi)存優(yōu)化,這一步中,輸出圖像被分割成若干指定大小的小塊,通常每一塊是16x16像素大小,之后,場(chǎng)景中的物體沿著每小塊的大致邊緣按照位置分割到不同的塊里,然后每個(gè)小塊分別進(jìn)行處理,處理下一小塊之前會(huì)先丟棄上一個(gè)小塊的數(shù)據(jù)。如此只有當(dāng)前的小塊區(qū)域里的圖形被加載到內(nèi)存里,通常的情況下,這種處理能比未修改的Reyes算法顯著的減少內(nèi)存的使用。
Reyes渲染器
以下渲染器使用了Reyes算法,或者用戶可以根據(jù)需要選擇使用Reyes算法:
3Delight(鏈接)
Aqsis(鏈接)
jrMan(鏈接)
皮克斯的PhotoRealistic RenderMan 渲染器(鏈接)
Pixels 3d渲染器 (鏈接)
Pixie(鏈接)
DotC Software 的 RenderDotC (鏈接)
Side Effects Software 的Mantra(鏈接)
Poser 的 FireFly (鏈接)
Guerilla Render (鏈接)
Bakery Relight (鏈接)
參考資料
羅伯特·庫(kù)克,洛倫·卡彭特,艾德文·卡特姆,《Reyes 圖像渲染架構(gòu)》,計(jì)算機(jī)圖形學(xué) (1987 年 SIGGRAPH 論文),95-102頁(yè)。
Anthony A. Apodaca和拉里·格里茲,Advanced RenderMan: Creating CGI for Motion Pictures,Morgan Kaufmann,ISBN 1-55860-618-1
免責(zé)聲明:以上內(nèi)容版權(quán)歸原作者所有,如有侵犯您的原創(chuàng)版權(quán)請(qǐng)告知,我們將盡快刪除相關(guān)內(nèi)容。感謝每一位辛勤著寫的作者,感謝每一位的分享。
相關(guān)資料
展開- 有價(jià)值
- 一般般
- 沒(méi)價(jià)值
{{item.userName}} 舉報(bào)
{{item.time}} {{item.replyListShow ? '收起' : '展開'}}評(píng)論 {{curReplyId == item.id ? '取消回復(fù)' : '回復(fù)'}}
{{_reply.userName}} 舉報(bào)
{{_reply.time}}