RenderMan规范
RenderMan接口规范内容
RenderMan渲染接口,主要包括两大部分,第一部分是RenderMan Interface,定义了着色计算所必须的一些基本数据类型,和RenderMan接口字节流协议(RenderMan Interface Bytestream Protocol),简写为RIB, rib 也是RenderMan场景描述文件的扩展名;规范的第二部分,是RenderMan着色语言,RenderMan Shading Language,简称RSL,使用RenderMan着色语言编写的源程序,其源代码文件扩展名通常是 sl 。
RenderMan接口
RenderMan接口,定义了一些基本的数据类型,以规范的C语言实现为例,规范把C语言的short、int、float、char数据类型,分别映射至其RtBoolean、RtInt、RtFloat和*RtToken类型,另外,规范还定义了RtColor、RtPoint、RtVector、RtMatrix等特定于图形学着色计算必要的数据类型。
规范的图形状态(graphics state),包括了渲染一个模型所需的全部信息,RenderMan接口的命令,要么改变图形状态,要么渲染一个模型。图形状态又分为两部分,其一是全局状态,在渲染一幅图像或序列中的一帧时,保持不变;其二是当前状态,针对不同待渲染的模型,可以发生改变。全局状态中的参数,称为选项(Options);当前状态中的参数,称为属性(Attributes)。选项包括相机和显示(指输出像素的)参数,还有其他影响渲染质量的参数;属性包括控制模型外观和材质的参数(比如颜色、透明度、着色模型等),还有模型的位置、朝向和细分程度等参数。
RenderMan规范支持 多边形 ( 英语 : Polygon (computer graphics) ) 、曲面片、细分曲面、二次曲面、点和曲线、元球、程序图元等多样的几何模型
RenderMan着色语言(RSL)
RenderMan规范引入了RenderMan着色语言,使三维场景的外观不只用很少的参数来描述,而是允许使用类似C语言的程序来编写任意复杂的着色函数,通常称之为程序纹理和着色器(shader)。光照以及表面置换也是可编程的,能用着色语言编程来修改。RSL允许每个语句以单指令流多数据流的方式执行,但不强制使用此方式。另一个使RenderMan渲染器区别于许多其他渲染器的功能是它允许输出着色函数里的任意信息,不管是表面法线、单独的灯光通道还是什么别的信息,都可以使用RenderMan渲染器输出到单独的通道里。
一个RSL编写的着色器,可以用于任何符合RenderMan渲染规范的RenderMan渲染器,比如皮克斯的PRMan、DNA Research的3Delight,以及开源的Pixie和Aqsis。
RSL可以编写独立的函数和RenderMan渲染规范定义的五种类型的着色器:surface,light,volume,imager和displacement着色器。
以下是定义塑料表面材质的一个示例着色器:
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;}
着色器通过接收一些可以由艺术家调节的变量比如Cs(表面颜色),Os(表面透明度)等,结合RenderMan渲染规范定义的内置变量N(着色点的法线),P(着色点位置)等,依据一定的算法计算出Ci(最终表面颜色),Oi(最终表面透明度)或任意所需信息,从而完成着色过程。
一个着色器可以用于不同的三维几何模型,每个着色器实例的参数数值可不一样。着色器没有返回值,而是利用“输出变量”存储计算的数值。但函数可以接受参数,并返回一个值。比如,以下函数通过点积操作符“.”计算矢量的长度并将之返回。
floatlength(vectorv){returnsqrt(v.v);}
必备功能
一个RenderMan渲染器,必须实现以下功能:
完全层级化的图形状态(graphics state),包括属性、变换栈(transformation stacks)和有效光源列表。
正交投影和透视投影视角变换。
基于深度的隐面消除。
像素过滤和反走样。
图像量化前的伽马校正和dithering。
输出图像包括RGB、A和Z的任意组合,并且分辨率可由用户指定。
所有规范里描述的几何图元,以及各图元的标准图元变量。
支持可编程着色。
支持索引纹理贴图、环境贴图和阴影贴图。
须提供规范所要求的十五种标准的着色器,包括light source,surface,volume,displacement和imager等类型。任一新增的和由规范标准衍生的着色器,都必须提供一个等效的RenderMan着色语言描述作为该着色器的文档。
可选功能
此外,渲染器还可以实现以下的某项功能:
面光源
景深
置换贴图
环境贴图
全局照明
细节层次
运动模糊
特殊镜头映射
谱色(Spectral colors)
光线跟踪
实体建模
体着色
工具
RenderMan 3delight,支持免费下载学习 主流的rendemran 渲染软件
RenderMan Studio
RenderMan Pro Server
RIBKit,开源的RenderMan工具集,包括一个图形界面的材质编辑器——SLer。
RIBShrink和RIBDepends,3Delight渲染器附带的RIB精简工具和依赖处理工具。
ShaderMan.Next,开源的材质编辑器,ShaderMan的重写。
RIB导出工具
3Delight:[1],支持MAYA XSI 即将支持MAX 的版本
3ds Max:PaxRendus,已停止开发
Blender:开源的ribMosaic
Lightwave:
Maya:
Softimage:
编程语言实现
Python计算机图形工具集,Python实现
RubyMan,Ruby实现
G&RT,Lua实现
参见
Reyes渲染架构
参考书目
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.
免责声明:以上内容版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。感谢每一位辛勤著写的作者,感谢每一位的分享。
- 有价值
- 一般般
- 没价值