论文部分内容阅读
真实感绘制是影视动漫、虚拟现实、游戏娱乐、工业仿真等数字产业中的关键技术之一。其中,全局光照算法是真实感绘制的核心部分,其通过模拟现实世界中的光照,生成逼真的图片。随着人们对绘制质量的追求日益提高,一方面需要发射大量的光线保证绘制质量,另一方面几何模型的复杂度不断增加,单机难以满足其存储需求,故全局光照算法对计算机的计算能力和存储能力均提出巨大挑战。针对大量光照计算速度慢的问题,一个有效的解决办法是将全局光照算法并行化。全局光照并行绘制算法利用硬件的并行计算能力,通过将光照计算任务划分为多个子任务并并行执行来提高绘制速度。针对单机内存无法处理大规模场景的问题,可以通过分布式并行方式解决。但是,由于在全局光照绘制中,当光线在场景传播中,特别是多次弹射后,有可能和整个场景中任意位置产生交点,这对于单个节点无法存储的大规模场景而言,全局的离散访存会带来频繁的数据传输,降低数据利用率。因此,如何在保证数据利用率的前提下,实现均衡的任务划分,是分布式全局光照并行绘制算法的难点。对于此类问题,绘制任务的划分、数据的组织、调度算法的设计、计算机的系统架构等均与之密切相关。高性能计算机运算能力强、存储容量大,已被用于天气预测、分子模型、物理模拟、密码分析等领域。我国的高性能计算机经历了从模仿到超越的过程,目前在计算能力方面已经位于世界前列,但商用渲染软件难以在国产高性能计算机上部署,制约了我国数字内容创意产业的发展。因此,亟需研究适用于国产高性能计算机架构的高度真实感绘制算法,在保证绘制质量的同时,实现超大规模场景的快速渲染,对于扩展国产高性能计算机的应用具有重要意义。本文针对全局光照绘制中的速度和存储问题,提出了高性能计算机架构下的三类典型绘制方法的并行化算法:1)提出基于点的全局光照(Point based global illumination,简称PBGI)向量化算法,将点云树遍历和微缓冲区投影部分向量化执行,提高了高性能计算机单节点的全局光照计算速度;2)提出基于帧间连贯性的异步分布式光线追踪算法,利用前一帧的光线传输信息优化异步分布式光线追踪算法,实现了 TB级以上超大规模场景的全局光照计算;3)提出负载均衡的分布式光子映射算法,利用着色点树和光子树均衡分布式节点间的负载,实现大规模光子的高效收集,提升了焦散绘制效果。归纳的,本文贡献和创新点如下:1)基于点的全局光照算法能够快速生成没有噪声的全局光照效果。为了提高基于点的全局光照算法的运行速度,本文提出了一种基于点的全局光照向量化计算方法,提高了高性能计算机单节点的全局光照计算速度。该算法包括点云树遍历向量化和微缓冲区投影向量化两个部分。对于点云树遍历部分,本文对于具有不同空间连贯性的着色点,分别提出了多着色点(Packet)遍历、单着色点(Single)遍历以及混合遍历三种不同的向量化遍历算法;对于微缓冲区投影部分,本文按照点云树节点与着色点之间的距离,对近距离、中距离和远距离三种不同的点云树节点提出了不同的向量化投影方法。实验结果表明,与非PBGI向量化算法相比,本算法在点云树遍历阶段可以实现7~9倍的加速,在微缓冲区投影部分可以实现2倍的加速,总体算法实现5~7倍的加速。2)分布式光线追踪算法是进行大规模场景绘制的常用手段,通过将场景划分为多个场景块并分布式存储,来减少单个计算节点的存储压力,但难以实现节点间的负载均衡并减少节点间的通信。为此,本文提出了一种基于帧间连贯性的异步分布式光线追踪绘制算法,实现了 TB级以上超大规模场景的全局光照计算。算法主要利用连续帧之间光线传播的相似性,通过记录前一帧光线传输的信息,将其用于下一帧绘制的场景块预分配以及运行时各节点的场景块调度。算法并行执行各个节点内部的数据传输、任务调度与绘制任务,并通过异步调度方法,隐藏数据调度开销。此外,为了避免绘制时低贡献光线在场景中多次反射占用计算资源的问题,本文算法在绘制时记录下穿过场景块的光线的辐射亮度,在下一帧绘制时,对于经过辐射亮度低的区域的光线,直接将其与简化模型进行求交计算,进一步提高了算法的速度。实验结果表明,与已有的异步分布式算法相比,本算法能够实现高达75%的速度提升,且生成图像与原图像差异(MSE)低于e-4。3)光子映射算法适用于计算焦散等全局光照效果。其为了生成高质量的焦散效果,需要发射大量的光子数据。但是,这些光子数据无法在单机内存中进行收集。本文提出一种数据和任务紧耦合的分布式光子映射算法,实现了各个分布式节点数据与任务的负载均衡,可支持亿级以上大规模光子的高效收集,提升了焦散绘制效果。其中,在数据组织阶段,提出基于莫顿码的并行分布式光子树构建以及着色点树构建算法;在任务调度阶段,提出有效的光子树和着色点树检索算法,提升着色点任务和光子数据的关联性,实现了各个分布式节点间的负载均衡。实验结果表明,与已有的分布式光子映射算法相比,本文算法在256个节点下依然保持较高并行绘制效率,且没有任何质量损失。本文算法已经集成到山东大学自主研发的渲染系统“RWing”中,并部署在“神威·太湖之光”、“天河二号”以及曙光“昆仑”等国产高性能计算机上,为影视动漫行业提供渲染服务。下一步,为实现能够运行在不同高性能计算机架构下的高可移植性并行绘制,将继续探索能够适用于不同硬件架构的单机异构并行绘制算法,以及异构分布式架构下的并行绘制算法。