[发明专利]一种基于GPU的混合树并行构建方法有效
| 申请号: | 201410810135.4 | 申请日: | 2014-12-23 |
| 公开(公告)号: | CN104463940A | 公开(公告)日: | 2015-03-25 |
| 发明(设计)人: | 程翔;何桃;杨子辉;龙鹏程;胡丽琴 | 申请(专利权)人: | 中国科学院合肥物质科学研究院 |
| 主分类号: | G06T15/06 | 分类号: | G06T15/06;G06T1/20 |
| 代理公司: | 北京科迪生专利代理有限责任公司 11251 | 代理人: | 杨学明;贾玉忠 |
| 地址: | 230031 *** | 国省代码: | 安徽;34 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 gpu 混合 并行 构建 方法 | ||
技术领域
本发明涉及图形实时渲染技术领域,尤其涉及一种基于GPU的混合树并行构建方法。
背景技术
虚拟现实技术(Virtual Reality-VR)技术,也称灵境技术或人工环境,20世纪八十年代由美国Jaron Lanier教授首次提出这一概念。主要是利用计算机模拟产生一个三维空间的虚拟世界、提供使用者关于视觉、听觉、触觉等感官的模拟,是计算机对复杂数据进行可视化操作与交互的一种技术。
光线跟踪技术是一种在图形绘制领域广泛应用的技术。它的最大的优势是产生高质量的图像,绘制出高真实感的平滑的反射、折射、软影等全局光照效果,但是它的计算量很高,因此以往这种技术只能应用在非实时绘制领域中。可见性判断及剔除技术。该技术是在三角形面片被送往渲染管线之前,通过算法或者硬件支持,提前判断出面片的可见性,并将不可见的部分剔除,以减轻渲染管线的工作量,达到加速绘制的效果。但是场景中的面片数通常都要达到百万量级,实时的对场景中的面片进行可见性判断几乎无法完成。为了提高虚拟现实中一些算法的执行效率,提出了场景划分技术。
场景划分技术的组织通常是层次结构的。宽泛地说,就是最高层次包含它下面的层次,后者又包含再下面的层次,如此类推。因此,这种结构具有嵌套和递归的特点。使用层次结构的原因是,可以明显地提高不同类型的查询速度,计算复杂度通常从O(n)提高到O(logn)。同时需要注意,大多数场景管理技术的构造开销都比较大,虽然也可以在实时过程中进行渐进更新,但是通常需要作为一个预处理过程来完成。不同类型的空间数据结构有:包围体层次(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划分;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院合肥物质科学研究院,未经中国科学院合肥物质科学研究院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410810135.4/2.html,转载请声明来源钻瓜专利网。





