gpu光线跟踪算法加速结构研究

gpu光线跟踪算法加速结构研究

ID:22505692

大小:52.50 KB

页数:5页

时间:2018-10-29

gpu光线跟踪算法加速结构研究_第1页
gpu光线跟踪算法加速结构研究_第2页
gpu光线跟踪算法加速结构研究_第3页
gpu光线跟踪算法加速结构研究_第4页
gpu光线跟踪算法加速结构研究_第5页
资源描述:

《gpu光线跟踪算法加速结构研究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、GPU光线跟踪算法加速结构研究:基于GPU的光线跟踪算法是当前图形学研究的一个热点,也是将来用于广告、电影、游戏等娱乐产业的关键技术。本文论述了如何对基于GPU的光线跟踪算法进行实现,以及利用各种加速结构,加速算法实现,提高算法执行效率,并对各种加速结构的效果进行了比较研究。关键词:GPGPU光线跟踪BVHKD-Treedoi:10.3969/j.issn.1006-8554.2010.05.0051.引言近年来,CPU无论在运算能力,还是在可编程性上都得到了大幅的提高,GPU已经在需要大量运算的密集运算领域发挥了举足轻重的作用。各种基于CPU的

2、密集运算被移植到GPU上,以利用GPU巨大的运算能力,加速整个算法的运算过程。光线跟踪算法是生成真实感图形的一种非常重要的方法,在电影、游戏、广告等产业,获得广泛的应用,而光线跟踪算法也是典型的密集运算算法,利用原始的基于CPU的光线跟踪渲染一幅图片是非常耗时的操作。因此,如果能够将CPU上的光线跟踪算法,映射到CPU上,加速光线跟踪算法的执行时间,将会带来巨大的经济效益。因此,基于CPU的光线跟踪算法已成为国内外科研人员的研究热点。2.基于GPU的光线跟踪2.1相关工作当前,主要由两种方法利用CPU来加速光线跟踪算法。第一种是Carr等人提出来

3、的,将CPU转换为一个蛮力的执行光线一三角形求交的计算器,而将任何的光线生成以及着色过程在CPU上完成。这就需要CPU依然执行绝大部分的渲染工作。Carr等人指出,在ATIRadeon8500上,每秒最快能够执行1亿2千万次的光线一三角形求交。同时,也指出,由于GPU的单精度浮点的限制,图片上依然存在一些不太真实的地方。第二种方法由Purcell等人提出的,改种方法将整个光线跟踪器都移植到CPU上进行实现。从光线的产生,加速结构的遍历,到最后的着色过程都在GPU上执行。此后,有很多相同的项目都是基于Purcell的模型上进行的。2.2GPU上的光

4、线跟踪算法的映射方式将传统的CPU上执行的光线跟踪算法,映射成为一个GPU协助的,或者基于GPU的光线跟踪器有众多方法。下面重点介绍Purcell提出的映射模型,以及在本文的实现中提出的一个基于CPU的oller和Trumbore提出了一个高效的光线一三角形求交算法,使用这个算法,并利用CPU在向量计算上的优势来进行求交计算。下面列出了求交的代码,这个代码也展示了如何利用向量指令来提高效率。当所有的原始光线都已经计算出了相交的状态的时候,就能够查询着色过程所需要的表面法线和材质的信息。每一个击中记录都存储了一个指向材质纹理的索引,这个材质纹理包含

5、了三角形的法线,材质颜色以及类型。三个顶点的法线根据击中记录的中心坐标进行了插值。最终的颜色能够按(N-L)C进行计算,此处Ⅳ是法线,L是光源的方向,G是三角形的颜色。现在根据击中的三角形所具有的材质的类型(漫反射材质,或者镜面反射材质),需要产生二次光线,以此来计算阴影和反射。1)如果一条光线射出场景之外,像素就被赋予全局的背景颜色。2)如果一条光线击中了一个漫反射材质表面,就发射一条阴影射线(shdoailbox技术,这就意味着需要对于相同的光线和三角形之间进行不止一次的相交测试。3.2KD-tree最近,Havran等人对基于CPU的光线跟

6、踪算法的加速结构进行了比较,得出的结论是对于众多不同类型的测试场景,平均而言,KD-tree是最快的。所以,有必要考察一下对于基于KD-tree的GPU光线跟踪算法,是否也会有相似的结论。就像均匀栅格一样,KD-tree也是一种空间细分结构。同均匀X格不同的是,KD-tree利用一个二叉树将场景表示成一个层次结构。在二叉树中,我们将内部节点和叶子节点区分开。叶子节点用来表示体素和与之相关的保存在该体素内的三角形的引用。一个内部节点用来表示空间区域的某个部分。所以,内部节点包含一个分裂面的两个子树的引用,而叶子节点只包含一个三角形列表。KD-tre

7、e的创建过程从上而下,根据一个评价函数,通过放置一个分离平面,递归的将场景分离成两个体素。我们能够以递归的方式遍历KD-tree,但是由于GPU没有堆栈结构,所以无法应用递归的策略。取而代之的是,我们能够通过记住我们沿着光线前进了多远来向上或者向下遍历树。这种策略消除了需要堆栈的限制,使得用CPU来完成对KD-tree结构的遍历成为可能。当使用GPU对KD-tree进行遍历的时候,KD-tree像均匀栅格那样被表示成一个纹理的集合。这就意味着有一个保存树数据的纹理,一个保存三角形列表的纹理,和一个保存实际的三角形数据的纹理。GPU的遍历首先调用一

8、个初始化内核,然后按照需要,多次调用合并后的遍历和求交内核。3.3包围体层次(BVH)给定一些随机的光线,通过计算遍历包围体层次的平均花

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。