Reyes渲染架构Reyes 渲染架构,是三维计算机图形学的一个软件架构,用于渲染照片一样真实的图像。该架构是 80 年代中期由卢卡斯影业的计算机图形研究小组成员艾德文·卡特姆、洛伦·卡彭特和罗伯特·库克所开发的,那个研究小组最后发展成了今天的皮克斯。[1] 该架构最早使用于 1982 年的科幻片《星际迷航 2:可汗之怒》中的创世片段。皮克斯的 PRMan 是 Reyes 算法的一个实现。 根据最初描述该算法的论文,Reyes 渲染系统是一个用于复杂图像的快速高质量渲染的“架构”,论文中指出 Reyes 包括一系列算法和数据处理系统,不过本词条中的“算法”和“架构”是同义的。 Reyes 是 Renders Everything You Ever Saw(渲染你曾见到的任何物体)的首字母缩写,这也是卢卡斯影业以前所在地——加州雷耶斯角的名字,因此 Reyes 是双关语,它还暗指和光学影像系统有关的过程。根据罗伯特·库克的说法,Reyes 的正确写法是首字母大写,其余小写,和 1987 年库克/卡彭特/卡特姆的 SIGGRAPH 论文中一样。 Reyes 架构的设计目标Reyes 架构的设计遵从以下目标:
Reyes 算法能很高效的渲染一些电影画面要求的必不可少的效果:光滑的曲面、表面纹理、运动模糊和景深。 Reyes 渲染流程Reyes 渲染流程 Reyes 算法通过把参数曲面分割成微多边形(micropolygon)——小于一个像素的四边形,来渲染光滑曲面。虽然要精确逼近曲面需要很多微多边形,不过他们可以简单并行的进行处理。Reyes 渲染器对高级的几何图形进行细分时,会根据需要来进行,它只需要刚好细分到使图形在最终图像中看起来光滑的程度。 然后,一个着色系统给微多边形的每个顶点赋予一个颜色和透明度,许多 Reyes 渲染器允许用户使用着色语言编写任意的灯光和纹理函数。微多边形可以在一个大的网格里进行处理,因此可以进行并行向量处理。 经过着色的微多边形在屏幕空间进行采样,以生成输出图像。Reyes 引入了一个开创性的隐面判别算法或者叫 hider,算法对运动模糊和景深进行必要的整合,而无需比未加模糊的渲染使用更高的模型和着色采样数。hider 通过一种称为随机采样的蒙特卡洛方法收集一定时间和镜头位置内每个像素里微多边形的颜色。 基本 Reyes 渲染管线工序
在这个设计中,渲染器必须把整个图像缓存在内存中,因为必须把所有的图形都处理完成以后才能输出最终图像。一般在dice步骤之前会进行一步叫 bucketing 的常见内存优化,这一步中,输出图像被分割成若干指定大小的小块,通常每一块是 16x16 像素大小,之后,场景中的物体沿着每小块的大致边缘按照位置分割到不同的块里,然后每个小块分别进行处理,处理下一小块之前会先丢弃上一个小块的数据。如此只有当前的小块区域里的图形被加载到内存里,通常的情况下,这种处理能比未修改的 Reyes 算法显著的减少内存的使用。 Reyes 渲染器以下渲染器使用了 Reyes 算法,或者用户可以根据需要选择使用 Reyes 算法:
参考资料
|