用于mic架构协处理器的光子映射并行方法

文档序号:8395705阅读:410来源:国知局
用于mic架构协处理器的光子映射并行方法
【技术领域】
[0001]本发明涉及真实感渲染和高性能领域,具体涉及一种用于MIC架构协处理器的光子映射并行方法。
【背景技术】
[0002]真实感渲染是影视动漫制作领域最核心的技术也是最耗时的阶段,真是感渲染技术的加入可以增加三维动漫作品的真实性,同时也带了时间和内存的消耗。真实感渲染技术的实现依赖的是全局光照算法,很多全局光照算法不断提出,比如基于蒙特卡洛光线跟踪的各种算法、辐射度算法、光子映射算法和基于点的渲染技术。但是全局光照算法耗时是普遍问题,和高性能领域结合,采用SIMD(单指令多数据)并行化和从核加速的思想是目前提高密集计算效率的有效方案。
[0003]2012 年底,Intel 公司推出了基于 MIC架构(Intel Many Integrated Core 架构)的至强融核协处理。这个产品有超过50个核以上的x86架构的核心,用于解决高度并行计算问题,由于MIC的基本指令集与CPU—样使MIC架构从核加速更为灵活。Carsten Benthin等人提出一种使用MIC架构协处理器的并行光线追踪算法,该方法使用offload模式(卸载模式),将光线追踪中光线和场景树求交的运算加载到MIC上并行计算60条光线和场景树求交,并使用四叉树结构利用MIC的516位的向量计算单元一次性计算一条光线和树中的4个兄弟节点的求交结果。
[0004]光子映射算法是一种扩展光线跟踪的全局光照算法。光子映射算法可以直接渲染焦散和色溢,相对于光线追踪算法,光子映射可以更加便捷地实现全局光照效果。光线追踪算法从摄像机向屏幕空间发射主光线,并在场景空间递归地跟踪光线,在交点处计算光照,阴影和颜色,信息返回屏幕形成最终图像。在光子映射算法中,在计算交点的光照时,改变计算方法,使用预渲染一遍保存的光子图来收集照射信息。光子图是第一次渲染阶段通过从光源处向场景中发射光子并追踪保存得到的光照缓存数据。在渲染阶段,找到距离光线最近的交点,即渲染点最近邻的K(K ^ I)个光子,累加光子能量估计光源的照射效果。
[0005]中国专利(申请号:CN 201010138101,专利名称:一种基于光子映射的全局光照方法)中提出了一种将光子映射和光线追踪结合的方法。为保证精度,需要大量的光子发射和高分辨率,这些会造成光子图过来和渲染点过多,在光子跟踪阶段和渲染阶段都是非常耗时的计算。
[0006]中国专利(申请号:CN 201410341679,专利名称:一种基于OpenCL的并行化渐进式光子映射方法和装置)中提出了一种并行化渐进式光子映射的方法。基于OpenCL对视点光线跟踪、光子跟踪和场景渲染进行并行化,把工作负载合理设计在对应的处理器上。该方法将任务划分并行化,并没有针对光子映射算法的特征做并行改变。

【发明内容】

[0007]针对真实感渲染中光子映射算法计算耗时的问题,本发明提供了一种能够处理全局光照且并行加速灵活地用于MIC架构协处理器的光子映射并行方法。
[0008]为了实现上述目的,本发明采用以下技术方案:
[0009]一种用于MIC架构协处理器的光子映射并行方法,包括以下步骤:
[0010]步骤(I):开始光子跟踪阶段
[0011]上传场景数据至MIC架构协处理器端;从光源发射光子,将光子分为多束光子线处理;其中,每束光子线包括若干条光子光线;
[0012]步骤⑵:光子光线求交阶段
[0013]每一个线程每次处理一条光线进行求交计算,返回光线交点信息;
[0014]步骤⑶:光子图生成阶段
[0015]根据光线交点信息执行不同的光子碰撞行为,保存碰撞的光子至光子图,直至追踪完成所有的光子线束,生成完整的光子图;
[0016]步骤⑷:开始渲染阶段
[0017]上传光子图至MIC架构协处理器端,组织若干组渲染点,将每一组的渲染点进行层次聚类;
[0018]步骤(5):最近邻光子搜索阶段
[0019]上传聚类完毕的渲染点,每一个线程每次处理一个渲染点类,并行计算渲染点类中每个渲染点的最近邻光子,并求每个渲染点的出射辐射度;
[0020]步骤(6):图像生成阶段
[0021]计算渲染点的颜色,并把每一组渲染点的颜色返回屏幕空间形成最终图像。
[0022]所述步骤(I)中开始光子跟踪阶段,包括:
[0023]步骤(1.1):将每个线程共享的场景数据上传给MIC端;
[0024]步骤(1.2):中央处理器CPU端组织光源发射光子,每次绑定一束光子线上传MIC端计算。
[0025]所述步骤(2)中光子光线求交阶段,包括:
[0026]步骤(2.1):选择一束光子光线数据上传至MIC架构协处理器端,每一个线程每次处理一条光线,采用动态分配策略为每个线程动态分配处理的光线;
[0027]步骤(2.2):每条光子光线并行求交。
[0028]所述光子光线并行求交的具体过程为:
[0029]求交时组织4叉场景树的当前要计算的一个层次上的4个兄弟节点的位置向量到一个16位向量寄存器中,把16个浮点数宽度的向量计算单元看成四个模块,每个模块存储场景树四个孩子中的一个分支,把光线的位置信息复制4份填充16位向量,一次判断同一层上的4个兄弟节点是否相交。
[0030]所述步骤(3)中光子图生成阶段,包括如下步骤:
[0031]步骤(3.1):MIC架构协处理器将计算的光线交点信息传递给CPU ;
[0032]步骤(3.2):CPU根据交点执行不同的光子碰撞行为,重新绑定为一束光子上传MIC端计算,直到达到最大追踪深度;
[0033]步骤(3.3):CPU处理全部的光子线束,完成在场景中的传递运算,输出一个缓存的光子图文件。
[0034]所述步骤(4)中开始渲染阶段,包括如下步骤:
[0035]步骤(4.1):将光子图上传至MIC端的共享内存中,为每个渲染点类在MIC上遍历光子图开辟缓存空间;
[0036]步骤(4.2):按屏幕空间的划分组织一个grid的渲染点,将渲染点按照的位置和法向的相近关系进行层次聚类。
[0037]所述步骤(4.2)中描述的层次聚类方法为:
[0038]先将每个点看作一类,再将相近的两个类两两聚为一类,然后按照相同的预设规则再次聚类,直到每个类达到预设要求。
[0039]所述步骤(5)中最近邻光子搜索阶段,包括如下步骤:
[0040]步骤(5.1):将聚类好的渲染点信息上传至MIC架构协处理器端内存,MIC架构协处理器端的一个线程负责一个渲染点类,并行地计算每个渲染点类;
[0041]步骤(5.2):计算每个渲染点的中心点,按照渲染点类的半径和中心点查找半径的加和来查找这个范围内的最近邻的光子集合;最近邻的光子集合中包含了渲染点类的每个渲染点周围的K个最近邻光子,其中,K多I ;
[0042]步骤(5.3):遍历最近邻的光子集合,选取渲染点类的每个渲染点的最近邻的K个光子,并求每个渲染点的出射辐射度。
[0043]所述步骤(5.3)中选取每个渲染点的最近邻的K个光子的具体过程为:
[0044]首先,每次取一个渲染点类的16个渲染点,并将这16个渲染点的位置法向组织成16位向量表不,每一位代表一个植染点;再将一个光子的信息复制16份扩展成一个16位向量;最后,将计算的渲染点和光子的距离组织成一个二维的直方图来选取出每个渲染点距离它第K远的光子的距离;
[0045]比较渲染点类的每个渲染点分布的第K远光子的距离,使用向量计算的方式选取每个植染点的分布的K个最近邻光子。
[0046]所述二维的直方图形成的具体过程为:
[0047]将每个渲染点与其计算出的最远光子的距离划分为若干等份,形成一个二维的距离数组;二维直方图统计的是每个与渲染点距离小于所述距离划分范围的光子的数目,所述二维直方图的一个维度是距离的划分,另一个维度是16个不同的渲染点;
[0048]将与每个渲染点距离第K远的光子所在的距离划分范围选取出来,再次划分这16个距离范围形成新的直方图的范围划分,如此迭代形成二维直方图,选出渲染点类中的每个渲染点与其距离第K远的光子的距离。
[0049]本发明的有益效果为:
[0050](I)本发明提出了一种用于MIC架构协处理器的光子映射并行方法,是光子映射方法在MIC架构协处理器上的首次实现,MIC架构协处理器由于采用X86架构,有较大的共享内存和操作系统调度,能够处理全局光照且并行加速更加灵活。
[0051](2)本发明在光子追踪阶段和光子搜索阶段都利用了单指令多数据向量计算单元,一次可以处理16个光子或渲染点,使单指令多数据向量计算单元的利用更加合理。
[0052](3)本发明采用了 CPU和MIC的主从架构,在MIC端和CPU端使用多线程并行,并使用单指令多数据向量计算,这种多层次的并行相对于CPU原生模式快8-12倍。
[0053](4)本发明针对光子映射中的各个步骤的特点,使用不同的并行策略来实现在MIC架构协处理器上的并行,使本发明中的光子映射并行方法可以完全应用MIC架构协处理器的计算能力,用于提高光子光线求交阶段和光子搜索阶段的速度。
【附图说明】
[0054]图1为用于MIC架构协处理器的光子映射并行方法的总体流程图;
[0055]图2a)为四叉场景树树的组织模式示意图;
[0056]图2b)为四叉场景树树的中渲染点的组织位置示意图。
【具体实施方式】
[0057]下面结合附图与实施例对本发明做进一步说明:
[0058]MIC架构协处理器被布置在装有Intel至强处理器的服务器上,服务器硬件具体为:CPU:1ntel Xeon E5-2609 (2.4GHz/8core)和 MIC:1ntel Xeon Phi MICSC7110P(1.lGHz/61core)。
[0059]运行实例时,将渲染引擎和测试实例布置在服务器上,make命令编译好程序后,使用rndr命令提交渲染任务,渲染准备好的场景文件。场景文件分为两部分,第一部分用于指导光子的发射,生成光子图,第二部分用于指导渲染生成最终图片。此实例中,选取的最近距离光子的搜索数目设为300
[0060]用于MIC架构协处理器的光子映射并行方法,具体步骤如下:
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1