论文部分内容阅读
数字动漫与影视产业蓬勃发展,虚拟现实技术也逐渐走入我们的生活中。为了带给人们更加真实的观影和体验效果,高度真实感绘制技术在影视动漫游戏等作品的制作中发挥着越来越重要的作用。优秀电影和动漫作品的不断涌出离不开绘制技术的不断发展,更加真实的绘制效果使动漫电影的作品质量得到质的飞跃。然而高度真实感绘制算法是计算复杂的,尤其是三维动漫和特效电影作品的场景设计都包含大量的模型,材质,灯光等,这使得在这些作品的制作中绘制成为最为耗时的阶段之一。因此,研究逼真而高效的绘制算法和充分利用计算硬件计算能力的并行绘制算法,提升算法计算效果和计算速度,是计算机图形学和绘制领域最重要的研究课题之一。全局光照算法是真实感绘制中核心的部分,全局光照是指除了计算物体表面从光源接收到的光照外,还要计算场景中物体相互作用后到达物体表面的光照,以及物体自身所发出的光照。在计算机图形学中,通常使用绘制方程来求解全局光照问题。现实中,我们能看到一个物体,是因为这个物体或反射或自发光射出的光能进入了我们的眼睛。绘制方程即是描述了在物体表面上的一个点处所有对它产生照射的光能和在这一点上某个出射方向出射光能的关系。光子映射算法通过求解绘制方程完成绘制,是一种多遍绘制的全局光照算法。第一遍绘制是光子追踪过程,光子追踪的目的是记录在漫反射表面的光照信息,从场景的光源处发射光子,光子是带有一定光通量的最小单位。光子在场景中反弹和表面发生交互,并在非镜面表面保存,最后产生光子图(Photon Map)。光子图是光子映射的中间结果,需要缓存到内存中,一般使用KD-树组织存储。第二遍绘制是光线追踪和辐射亮度估计过程。按照光线追踪流程,从屏幕空间发射光线来计算屏幕空间像素颜色,追踪这些光线,在光线与几何相交的着色点处收集一定数目的最近邻光子计算出射辐射亮度并完成着色计算。本文首先对光子映射算法的研究现状进行总结分析,将光子映射算法的优化算法进行分类,从辐射亮度估计优化,光子分布优化,光子图生成优化,渐进式光子映射优化和并行光子映射算法优化这五个方面进行划分,总结各类方法的特点以及它们的优缺点。并且从结果的平滑程度,特征保持,和内存及绘制效率三个方面比较优化程度。最后对光子映射算法未来的研究方向提出建议并根据光子映射算法中存在的问题开展研究。在光子映射算法中,通过收集最近邻光子来估计着色点处的出射辐射亮度是计算中的核心步骤,同时由于光子的离散分布也引入了一定的偏差和噪声。本文针对这一问题,提出了一种基于梯度的光子映射算法。利用光子分布的梯度检查区分光照平滑表面和光照变化特征表面,在光照平滑的表面,计算的梯度值小,需要保持较大的搜索范围以去除噪声;而在光照变化的特征处,计算的梯度值大,需要自适应地缩小光子搜索范围和改变搜索范围的形状,使光子收集尽量不跨越特征范围而减少偏差现象。基于梯度的光子映射算法在收集光子过程中只增加梯度值计算和梯度值控制,计算简单,不增加内存使用,并且易于在当前的光子映射算法的框架中实现和集成,同时可以获得更优的绘制效果。渐进式光子映射算法有别于传统的光子映射算法,它通过光子迭代发射实现无限大的光子计算,来解决传统的光子映射算法无法保存超大光子图的问题。由于需要大量的迭代计算次数达到绘制要求,计算时间长,本文提出了一种基于样本消除的渐进式光子映射算法,算法通过使用样本处理的方法从光子分布中去除一定的噪声从而达到优化绘制效果,加速绘制效率的目的。算法的核心思想是在每一遍光子绘制中,加入一步使用光子消除处理光子图的计算过程,并且在多次迭代中引入一颗全局的消除状态树保存和不断更新消除的中间数据。消除状态树保存局部的光子分布密度和局部光子消除比例,并可以使状态树的采样点分布符合光子分布。在光子绘制过程,通过改进样本消除的计算使它适合光子绘制中不同的光子分布密度的消除,并不断迭代完善状态树中保存的用于光子消除的光子分布信息,确保消除后剩余光子分布的准确。同时,基于消除状态树中局部光子消除信息,我们提出了光子消除的并行策略,将光子按包围盒划分并分块处理,使光子消除的效率控制在可使用的范围内。通过状态树的维护和并行策略的优化,基于样本消除的渐进式光子映射算法可以促进渐进式光子映射算法的加速收敛,同时保证光照分布的准确性。除了使用优化算法提高绘制效率,本文还提出一种在Intel众核架构(Many Integrated Core, MIC)上实现的并行光子映射算法,充分考虑协处理器的并行处理能力和16位浮点数宽度向量计算单元。在光子发射阶段,每个光子初始化后都有不同的方向,采用单条光线并行地和场景树求交的算法将光子追踪过程部署在MIC协处理器并行加速。每个线程负责处理一条光线,将场景组织成四叉的BVH树(Quad Bounding Volume Hierarchy Tree),使用向量计算单元并行计算单条光线和一个树节点的四个孩子包围盒并行求交。在第二步光子绘制阶段,利用着色点之间的连贯性,使用向量计算单元并行地计算每个着色点的最近邻光子搜索。首先将一组着色点按照相似性聚类。每个MIC协处理器线程负责处理一个着色点类,在一个着色点类内,首先为这个类搜索一个初始的最近邻范围,利用向量计算单元并行地在这一初始范围内为每个着色点挑选它的最近邻光子,算法采用了数据直方图统计的方式计算每个着色点的最近邻搜索范围。算法通过两个不同阶段的并行方案,将光子映射算法首次部署在搭载MIC协处理器的服务器上,达到精确计算的同时又取得了最优的并行加速效率。本文研究基于光子映射的全局光照算法,在分析光子映射算法发展的基础上,提出有效的优化算法,提升光子映射算法的绘制效果和绘制效率。并提出了在IntelMIC架构服务器上部署的并行光子映射算法,在未来的发展中,为绘制应用在目前已有的超级计算机上的部署提供了研究基础。