跳转到内容

RenderMan规范:修订间差异

维基百科,自由的百科全书
删除的内容 添加的内容
BnW.h留言 | 贡献
新条目
(没有差异)

2011年8月24日 (三) 08:31的版本

RenderMan规范[1],简称RISpec,是一个开放的应用程序接口(API),由皮克斯开发,用于描述三维场景并把它转换成逼真的数字图像,该规范包括了RenderMan着色语言

RenderMan规范作为建模程序和渲染程序之间的通信协议(或称为接口),用于生成逼真的数字图像。该规范类似于PostScript,不过是用来描述三维场景而非二维页面布局。因此,理解RenderMan接口的建模软件,可以输出场景数据到符合RenderMan规范的渲染器(以下简称RenderMan渲染器),而无需关心后者使用什么渲染算法渲染出图像。

RenderMan规范最初发布于1988年(3.0版本),后来的事实证明了规范的前瞻性,规范在多年之后也无需过多改动就能引入新技术。RenderMan规范的当前版本是3.2.1版,发布于2005年11月。

RenderMan接口规范

RenderMan规范和当时的其他标准的不同之处在于它允许使用高级的几何图元,比如二次曲面双三次曲面来表示图形,而非依赖于建模程序事先生成多边形逼近模型。规范的另一个创新之处是着色语言的规范。

RenderMan着色语言(简称RSL)使三维场景表面的材质不只用很少的参数来描述,而是允许使用类似C语言的程序来编写任意复杂的着色函数,通常称之为程序纹理着色器(shader)。光照以及表面置换也是可编程的,能用着色语言编程来修改。RSL允许每个语句以单指令流多数据流的方式执行,但不强制使用此方式。另一个使RenderMan渲染器区别于许多其他渲染器的功能是它允许输出任意变量为一个图像,不管是表面法线、单独的灯光通道还是什么别的信息,都可以使用RenderMan渲染器输出到单独的通道里。

RenderMan和OpenGL有很多相同之处,虽然两个API是针对不同的用户(OpenGL用于实时硬件辅助渲染,而RenderMan规范则用于逼真图像的离线渲染),两个API都是基于栈的状态机机制直接渲染出几何图形。


必备功能

一个RenderMan渲染器,必须实现以下功能:

  • 完全层级化的图形状态(graphics state),包括属性、变换栈(transformation stacks)和有效光源列表。
  • 正交投影透视投影视角变换。
  • 基于深度的隐面消除。
  • 像素过滤反走样
  • 图像量化前的伽马校正dithering
  • 输出图像包括RGB、A和Z的任意组合,并且分辨率可由用户指定。
  • 所有规范里描述的几何图元,以及各图元的标准图元变量。
  • 支持可编程着色。
  • 支持索引纹理贴图环境贴图阴影贴图
  • 须提供规范所要求的十五种标准的着色器,包括light source,surface,volume,displacement和imager等类型。任一新增的着色器和由规范中标准着色器衍生的着色器,都必须提供一个等效的RenderMan着色语言描述作为该着色器的文档。

可选的功能

此外,渲染器还可以实现以下的某项功能:

RIB导出工具

工具

编程语言实现

进阶阅读

参见

参考来源

  1. ^ RenderMan规范主页. [2009-06-12]. 

外部链接