一种基于GPU的混合树并行构建方法技术

技术编号:11192830 阅读:206 留言:0更新日期:2015-03-25 21:27
本发明专利技术公开了一种基于GPU的混合树并行构建方法,在需要进行渲染的模型空间的三个坐标轴中选取一个面片分布方差最大的坐标轴,计算切割平面垂直于该坐标轴上的位置点坐标,使得基于该位置点的切面两边的面片数相等,对模型空间中的场景数据逐级进行KD树划分,然后对划分后的叶节点依次进行八叉树划分。在对模型空间进行划分的过程中,运用了GPU技术进行加速处理,大大提高了场景划分的速度。本发明专利技术由于先在三个维度上进行基于KD树的选择划分,使得划分后的场景达到三个维度上的面片分布均匀的特点,为后续的八叉树快速划分提供了质量的保证,大大减少了无效遍历和相交操作,尤其适合非均匀的复杂场景的可见性计算。

【技术实现步骤摘要】
-种基于GPU的混合树并行构建方法
本专利技术涉及图形实时渲染
,尤其涉及一种基于GPU的混合树并行构建方 法。
技术介绍
虚拟现实技术(Virtual Reality-VR)技术,也称灵境技术或人工环境,20世纪 八十年代由美国Jaron Lanier教授首次提出这一概念。主要是利用计算机模拟产生一个 三维空间的虚拟世界、提供使用者关于视觉、听觉、触觉等感官的模拟,是计算机对复杂数 据进行可视化操作与交互的一种技术。 光线跟踪技术是一种在图形绘制领域广泛应用的技术。它的最大的优势是产生高 质量的图像,绘制出高真实感的平滑的反射、折射、软影等全局光照效果,但是它的计算量 很高,因此以往这种技术只能应用在非实时绘制领域中。可见性判断及剔除技术。该技术 是在三角形面片被送往渲染管线之前,通过算法或者硬件支持,提前判断出面片的可见性, 并将不可见的部分剔除,以减轻渲染管线的工作量,达到加速绘制的效果。但是场景中的面 片数通常都要达到百万量级,实时的对场景中的面片进行可见性判断几乎无法完成。为了 提高虚拟现实中一些算法的执行效率,提出了场景划分技术。 场景划分技术的组织通常是层次结构的。宽泛地说,就是最高层次包含它下面的 层次,后者又包含再下面的层次,如此类推。因此,这种结构具有嵌套和递归的特点。使用 层次结构的原因是,可以明显地提高不同类型的查询速度,计算复杂度通常从0( n)提高到 O(Iogn)。同时需要注意,大多数场景管理技术的构造开销都比较大,虽然也可以在实时过 程中进行渐进更新,但是通常需要作为一个预处理过程来完成。不同类型的空间数据结构 有:包围体层次(BVH)、各种二元空间分割树(BSP)、多维空间的二叉树(KD),以及八叉树 (Octree)等。 GPU(Graphic Processing Unit)最初应用于图形显示的加速,GPU的单指令多数 据流(SIMD:Single Instruction Multiple Data)的处理方式可并行地对大规模的数据进 行操作,可大大缩短计算时间。GPU上的可编程语言出现以后,研究人员将一部分运算交由 GPU来执行,以加快程序运行的速度。基于该思路,使用GPU进行场景节点的面片分布计算, 可以有效的提高场景划分的速度。 传统的八叉树构造根据三个垂直坐标轴X、y、z方向上对象的中间位置对场景进 行划分,这种划分方式尽管简单快速,但其粗糙的质量造成了大量无效的遍历和相交操作, 也造成了大量的空节点而浪费存储空间,使得八叉树逐渐被构建质量更高的KD树所取代。 而KD树的划分虽然具有高效的结构特征,但其划分的计算复杂度远却远高于八叉树,导致 划分的预处理时间难以满足动态场景的实时光线跟踪计算要求。另一方面,当前的GPU架 构包含多个多核处理器,需要同时运行上万个线程才能充分利用这些处理器的计算能力, 而KD树等加速结构在其构建过程中节点的产生速度慢,大大浪费了 GPU的计算资源,进而 影响构造速度。
技术实现思路
本专利技术提供一种基于GPU的混合树并行构建方法,构建高质量的加速结构,同时 充分利用硬件的并行计算能力,提高加速结构的构造速度,以达到动态场景计算的实时性。 本专利技术采用的技术方案为:一种基于GPU的混合树并行构建方法,在需要进行渲 染的模型空间的X、Y、Z三个坐标轴方向中选取一个面片分布方差最大的,计算该坐标轴 的垂直切面位置,使得切面两边的面片数相等,对模型空间中的场景数据逐级进行KD树划 分,然后对划分后的叶节点依次进行八叉树划分;其中划分场景数据的具体步骤如下: 步骤a)、在存储区域中建立两个队列,一个存放等待处理的场景节点数据,一个存 放已经处理过后的场景节点数据,一个存放等待处理的八叉树根节点; 步骤b)、将第一个队列中的场景节点数据依次取出,如果节点数据满足停止划分 的条件,则将节点放入第三个队列中;否则进行KD树的空间划分,将处理后生成的孩子节 点放入第二个队列中; 当前节点的深度为k,则该节点的孩子节点的编号为10k+i(i = 1,2)(其中如果是 左节点,则i = 1 ;如果是右节点,则i = 2 ; 步骤c)、当第一个队列中的所有场景节点处理完毕后,将第一队列清空,逐个处理 第二队列中的场景节点,并将生成的孩子节点放入第一个队里中; 步骤d)、循环步骤b)、步骤c),直至完成所有场景节点的KD划分; 步骤e)、将第三队列中的节点放入第一队列中,并清空第三队列,然后进行八叉树 的划分。依次取出第一队列中的节点进行八叉树划分,其具体过程与KD树类似,其中节点 的编号为 l〇k+i(i = 1,2,...8)。 进一步的,KD树停止划分的条件为三个坐标轴的面片分布方差接近相等,即最 小的方差值大于最大的方差值的80%,或者是节点内的面片数为全场景的面片总数的^ (如果KD树为第二种情况停止划分,则不再进行八叉树的划分);八叉树停止划分的条件为 节点内的面片数为全场景的面片总数的$。 进一步的,对每一个场景节点进行划分时,GPU的每一个线程块分别处理一个场景 节点,在相互对应的线程块和场景节点中,线程块中的每一线程计算节点中不同面片离中 心位置的距离,最后通过硬件支持的归约操作,得到场景的面片分布方差。本文档来自技高网
...

【技术保护点】
一种基于GPU的混合树并行构建方法,其特征在于,在需要进行渲染的模型空间的X、Y、Z三个坐标轴方向中选取一个面片分布方差最大的,计算该坐标轴的垂直切面位置,使得切面两边的面片数相等,对模型空间中的场景数据逐级进行KD树划分,然后对划分后的叶节点依次进行八叉树划分;其中划分场景数据的具体步骤如下:步骤a)、在存储区域中建立两个队列,一个存放等待处理的场景节点数据,一个存放已经处理过后的场景节点数据,一个存放等待处理的八叉树根节点;步骤b)、将第一个队列中的场景节点数据依次取出,如果节点数据满足停止划分的条件,则将节点放入第三个队列中;否则进行KD树的空间划分,将处理后生成的孩子节点放入第二个队列中;当前节点的深度为k,则该节点的孩子节点的编号为10k+i(i=1,2)(其中如果是左节点,则i=1;如果是右节点,则i=2;步骤c)、当第一个队列中的所有场景节点处理完毕后,将第一队列清空,逐个处理第二队列中的场景节点,并将生成的孩子节点放入第一个队里中;步骤d)、循环步骤b)、步骤c),直至完成所有场景节点的KD划分;步骤e)、将第三队列中的节点放入第一队列中,并清空第三队列,然后进行八叉树的划分。依次取出第一队列中的节点进行八叉树划分,其具体过程与KD树类似,其中节点的编号为10k+i(i=1,2,...8)。...

【技术特征摘要】
1. 一种基于GPU的混合树并行构建方法,其特征在于,在需要进行渲染的模型空间的 X、Y、Z三个坐标轴方向中选取一个面片分布方差最大的,计算该坐标轴的垂直切面位置,使 得切面两边的面片数相等,对模型空间中的场景数据逐级进行KD树划分,然后对划分后的 叶节点依次进行八叉树划分;其中划分场景数据的具体步骤如下: 步骤a)、在存储区域中建立两个队列,一个存放等待处理的场景节点数据,一个存放已 经处理过后的场景节点数据,一个存放等待处理的八叉树根节点; 步骤b)、将第一个队列中的场景节点数据依次取出,如果节点数据满足停止划分的条 件,则将节点放入第三个队列中;否则进行KD树的空间划分,将处理后生成的孩子节点放 入第二个队列中; 当前节点的深度为k,则该节点的孩子节点的编号为10k+i(i= 1,2)(其中如果是左节 点,则i= 1 ;如果是右节点,则i= 2 ; 步骤c)、当第一个队列中的所有场景节点处理完毕后,将第一队列清空,逐个处理第二 队列中的场景节点,并将生成的孩子节点放入第一个队里中; 步骤d)、循环步骤b)、步骤c),直至完成所有场景节点的KD划分; 步骤e)、将第三队列中的节点放入第一队列中,并清空第三队列,然后进行八叉树...

【专利技术属性】
技术研发人员:程翔何桃杨子辉龙鹏程胡丽琴
申请(专利权)人:中国科学院合肥物质科学研究院
类型:发明
国别省市:安徽;34

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1