论文部分内容阅读
在国家文化产业振兴的大背景下,中国的CG影视产业已经开始呈现爆发式增长,CG电影逐步向着超高清、3D电影等方向发展。随着画质越来越高,画面越来越细腻,渲染一帧图像所需的计算量日益增加,渲染电影动画中的一帧图像往往需要数个小时,这带来的结果是渲染整个电影动画的整体时间越来越长。渲染电影动画,单个计算机的计算能力是难以满足其巨大的计算能力需求的,采用集群进行并行渲染成为一种常用的加快整体渲染时间的方法。采用集群并行渲染时,传统的渲染管理软件都是将渲染任务作为普通的任务来处理的,并没有考虑到渲染应用的特殊性质,比如渲染任务与任务之间的在时间上的连续性、渲染任务需要的数据上的相关性等。经过研究发现,同一个渲染镜头内存在共享数据,多个并行渲染的任务之间都需要访问相同的静态几何数据和纹理数据,针对该特性,本文对集群上的并行渲染做了特定优化处理。本文的主要工作是在集群渲染环境下,围绕同一个镜头内的渲染帧任务之间存在共享的几何数据和纹理数据的特性,即帧任务之间的数据相关性,所展开的研究。为了能够利用镜头内帧任务的数据上的相关性,需要将并行执行的、所处理的任务同属一个镜头的渲染引擎进程,通过消息通信的方式连接成为一个整体,由这个整体统一管理整个镜头中的共享数据,本文称每个这样的整体为一个渲染单元,称负责管理共享数据的部分为共享数据管理。每一个渲染单元负责处理同属于一个镜头的渲染任务。当渲染单元内的节点需要访问共享数据时,需要向共享数据管理发出数据请求,然后共享数据管理针对该请求做相应操作。由于渲染单元作为一个整体来处理同属一个镜头的帧任务,这意味着需要对用户任务进行多级调度:镜头级任务调度、帧任务调度。其中前者在渲染管理软件进行,而后者由渲染单元负责处理。本文中实现的数据管理模块设计上参考了分布式文件系统的设计方法,支持位置透明性、数据访问透明性和数据复制等特性:位置透明性和数据访问透明性使得渲染引擎及其使用的三方库可以透明的使用共享数据管理,无需进行大量的应用代码修改,并且在需要时可以方便的切换至使用操作系统库进行文件访问的状态。由于渲染既是一个计算密集型应用,同时也是数据密集型应用,为了避免对正常渲染造成影响,共享数据管理只能将共享数据分散存放在整个渲染单元的各个计算节点上,这带来了异地数据访问的问题。本文中介绍了三种可用来实现异地数据访问的方法,基于MPI单边通信、基于RDMA和基于TCP协议栈的方法,并实现和测试了基于RDMA的方法。本文中所做工作为国家863项目《真实感动漫渲染系统应用与研究》的一部分,渲染引擎为项目组自主开发的Bleman, Bleman是符合Renderman规范的渲染引擎。