RenderMan規(guī)范
RenderMan接口規(guī)范內(nèi)容
RenderMan渲染接口,主要包括兩大部分,第一部分是RenderMan Interface,定義了著色計算所必須的一些基本數(shù)據(jù)類型,和RenderMan接口字節(jié)流協(xié)議(RenderMan Interface Bytestream Protocol),簡寫為RIB, rib 也是RenderMan場景描述文件的擴展名;規(guī)范的第二部分,是RenderMan著色語言,RenderMan Shading Language,簡稱RSL,使用RenderMan著色語言編寫的源程序,其源代碼文件擴展名通常是 sl 。
RenderMan接口
RenderMan接口,定義了一些基本的數(shù)據(jù)類型,以規(guī)范的C語言實現(xiàn)為例,規(guī)范把C語言的short、int、float、char數(shù)據(jù)類型,分別映射至其RtBoolean、RtInt、RtFloat和*RtToken類型,另外,規(guī)范還定義了RtColor、RtPoint、RtVector、RtMatrix等特定于圖形學(xué)著色計算必要的數(shù)據(jù)類型。
規(guī)范的圖形狀態(tài)(graphics state),包括了渲染一個模型所需的全部信息,RenderMan接口的命令,要么改變圖形狀態(tài),要么渲染一個模型。圖形狀態(tài)又分為兩部分,其一是全局狀態(tài),在渲染一幅圖像或序列中的一幀時,保持不變;其二是當(dāng)前狀態(tài),針對不同待渲染的模型,可以發(fā)生改變。全局狀態(tài)中的參數(shù),稱為選項(Options);當(dāng)前狀態(tài)中的參數(shù),稱為屬性(Attributes)。選項包括相機和顯示(指輸出像素的)參數(shù),還有其他影響渲染質(zhì)量的參數(shù);屬性包括控制模型外觀和材質(zhì)的參數(shù)(比如顏色、透明度、著色模型等),還有模型的位置、朝向和細分程度等參數(shù)。
RenderMan規(guī)范支持 多邊形 ( 英語 : Polygon (computer graphics) ) 、曲面片、細分曲面、二次曲面、點和曲線、元球、程序圖元等多樣的幾何模型
RenderMan著色語言(RSL)
RenderMan規(guī)范引入了RenderMan著色語言,使三維場景的外觀不只用很少的參數(shù)來描述,而是允許使用類似C語言的程序來編寫任意復(fù)雜的著色函數(shù),通常稱之為程序紋理和著色器(shader)。光照以及表面置換也是可編程的,能用著色語言編程來修改。RSL允許每個語句以單指令流多數(shù)據(jù)流的方式執(zhí)行,但不強制使用此方式。另一個使RenderMan渲染器區(qū)別于許多其他渲染器的功能是它允許輸出著色函數(shù)里的任意信息,不管是表面法線、單獨的燈光通道還是什么別的信息,都可以使用RenderMan渲染器輸出到單獨的通道里。
一個RSL編寫的著色器,可以用于任何符合RenderMan渲染規(guī)范的RenderMan渲染器,比如皮克斯的PRMan、DNA Research的3Delight,以及開源的Pixie和Aqsis。
RSL可以編寫?yīng)毩⒌暮瘮?shù)和RenderMan渲染規(guī)范定義的五種類型的著色器:surface,light,volume,imager和displacement著色器。
以下是定義塑料表面材質(zhì)的一個示例著色器:
surfaceplastic(floatKa=1,Kd=0.5,Ks=0.5,roughness=0.1;colorspecularcolor=1;){normalNf=faceforward(normalize(N),I);Ci=Cs*(Ka*ambient()+Kd*diffuse(Nf))+specularcolor*Ks*specular(Nf,-normalize(I),roughness);Oi=Os;Ci*=Oi;}
著色器通過接收一些可以由藝術(shù)家調(diào)節(jié)的變量比如Cs(表面顏色),Os(表面透明度)等,結(jié)合RenderMan渲染規(guī)范定義的內(nèi)置變量N(著色點的法線),P(著色點位置)等,依據(jù)一定的算法計算出Ci(最終表面顏色),Oi(最終表面透明度)或任意所需信息,從而完成著色過程。
一個著色器可以用于不同的三維幾何模型,每個著色器實例的參數(shù)數(shù)值可不一樣。著色器沒有返回值,而是利用“輸出變量”存儲計算的數(shù)值。但函數(shù)可以接受參數(shù),并返回一個值。比如,以下函數(shù)通過點積操作符“.”計算矢量的長度并將之返回。
floatlength(vectorv){returnsqrt(v.v);}
必備功能
一個RenderMan渲染器,必須實現(xiàn)以下功能:
完全層級化的圖形狀態(tài)(graphics state),包括屬性、變換棧(transformation stacks)和有效光源列表。
正交投影和透視投影視角變換。
基于深度的隱面消除。
像素過濾和反走樣。
圖像量化前的伽馬校正和dithering。
輸出圖像包括RGB、A和Z的任意組合,并且分辨率可由用戶指定。
所有規(guī)范里描述的幾何圖元,以及各圖元的標準圖元變量。
支持可編程著色。
支持索引紋理貼圖、環(huán)境貼圖和陰影貼圖。
須提供規(guī)范所要求的十五種標準的著色器,包括light source,surface,volume,displacement和imager等類型。任一新增的和由規(guī)范標準衍生的著色器,都必須提供一個等效的RenderMan著色語言描述作為該著色器的文檔。
可選功能
此外,渲染器還可以實現(xiàn)以下的某項功能:
面光源
景深
置換貼圖
環(huán)境貼圖
全局照明
細節(jié)層次
運動模糊
特殊鏡頭映射
譜色(Spectral colors)
光線跟蹤
實體建模
體著色
工具
RenderMan 3delight,支持免費下載學(xué)習(xí) 主流的rendemran 渲染軟件
RenderMan Studio
RenderMan Pro Server
RIBKit,開源的RenderMan工具集,包括一個圖形界面的材質(zhì)編輯器——SLer。
RIBShrink和RIBDepends,3Delight渲染器附帶的RIB精簡工具和依賴處理工具。
ShaderMan.Next,開源的材質(zhì)編輯器,ShaderMan的重寫。
RIB導(dǎo)出工具
3Delight:[1],支持MAYA XSI 即將支持MAX 的版本
3ds Max:PaxRendus,已停止開發(fā)
Blender:開源的ribMosaic
Lightwave:
Maya:
Softimage:
編程語言實現(xiàn)
Python計算機圖形工具集,Python實現(xiàn)
RubyMan,Ruby實現(xiàn)
G&RT,Lua實現(xiàn)
參見
Reyes渲染架構(gòu)
參考書目
Apodaca, Anthony A.; Larry Gritz, Ronen Barzel. Advanced RenderMan: Creating CGI for Motion Pictures. San Francisco: Morgan Kaufmann Publishers. 1999. ISBN 1-55860-618-1. OCLC 42621055 .
Ebert, David S.; F. Kenton Musgrave, Darwyn Peachey, Ken Perlin, Steven Worley. Texturing and modeling: a procedural approach, 3rd ed.. Burlington, MA: Morgan Kaufmann Publishers. 2003. ISBN 1-55860-848-6. OCLC 52689816 .
Raghavachary, Saty. Rendering for Beginners: Image synthesis using RenderMan. Burlington, MA: Focal Press. 2005. ISBN 0-240-51935-3. OCLC 57670361 .
Stephenson, Ian. Essential RenderMan Fast. London, New York: Springer. 2002. ISBN 1-85233-608-0. OCLC 50494960 .
Upstill, Steve. The RenderMan Companion: A Programmer"s Guide to Realistic Computer Graphics. Reading, Mass: Addison-Wesley. 1990. ISBN 0-201-50868-0. OCLC 19741379 .
Cortes, Rudy; Saty Raghavachary. The RenderMan Shading Language Guide. Course Technology PTR. 2007. ISBN 1-598-63286-8.
免責(zé)聲明:以上內(nèi)容版權(quán)歸原作者所有,如有侵犯您的原創(chuàng)版權(quán)請告知,我們將盡快刪除相關(guān)內(nèi)容。感謝每一位辛勤著寫的作者,感謝每一位的分享。
- 有價值
- 一般般
- 沒價值
{{item.userName}} 舉報
{{item.time}} {{item.replyListShow ? '收起' : '展開'}}評論 {{curReplyId == item.id ? '取消回復(fù)' : '回復(fù)'}}
{{_reply.userName}} 舉報
{{_reply.time}}