基于GPU快速光线跟踪算法的设计与实现.doc

基于GPU快速光线跟踪算法的设计与实现.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第27卷第8期   2007年8月 文章编号:1001-9081(2007)08-2033-03 计算机应用 ComputerApplications   Vol.27No.8Aug.2007 基于GPU快速光线跟踪算法的设计与实现 杨俊华,符红光,郭 惠 (1.中国科学院成都计算机应用研究所,成都610041;2.电子科技大学计算机科学与工程学院,成都610054) (tietong01@) 摘 要:设计和实现了GPU上基于流的光线跟踪算法,采用一种基于线索二叉树的KD2Tree结构组织场景,避免了传统KD2Tree结构在遍历场景时在堆栈上的开销。算法在组织复杂场景上,优于利用传统KD2Tree和均匀剖分结构加速场景遍历的方法,在普通PC。 关键词:GPU;光线跟踪;KD2Tree;线索二叉树中图分类号:TP391.41  文献标志码:A 2 DesignandimpleoningbasedonGPU FUHong2guang,GUOHui 2 3 (1.ofApplication,ChineseAcademyofSciences,ChengduSichuan610041,China; 2.SchoolmputerScienceandEngineering,UniversityofElectronicScienceandTechnologyofChina, ChengduSichuan610054,China) Abstract:LighttrackingalgorithmbasedonGPUwiththestreamarchitecturewasdesignedandimplemented.Meanwhile,toavoidtheoverheadinstackoperationofthetraditionalKD2Treewhentraversing,aKD2Treestructurebasedonthreadedbinarytreewasusedtoorganizescene.ThemethodissuperiortotheuseoftraditionalKD2Treeanduniformsplitstructuretoacceleratetraversinginorganizingcomplexscenes,andtherapidtrackingrenderingoflightwasachievedinordinaryPC. Keywords:GPU;raytracing;KD2Tree;threadedbinarytree 0 引言 随着计算机图形硬件的快速发展,真实感图形绘制成为图形学研究的热点。光线跟踪算法是一种经典的真实感绘制算法,它利用光路可逆原理,通过追踪光线,能很好地渲染真实世界。国内外在这方面做了大量的研究[1-3]。因为光线跟踪算法需要追踪每条从视点发出的光线,因此涉及到大量的求交测试运算。提高该算法效率的关键在于提高求交测试的效率,而包围盒技术则是提高求交测试效率的通用办法。常见的包围盒包括轴向包围盒(Axis2AlignedBoundingBoxes,AABB)、方向包围盒(OrientedBoundingBoxes,OBB)、离散方向多面体(K2DOP)等。 随着GPU的可编程特性及可编程硬件高级语言(如GLSL,CG等)的发展,人们开始关注和研究如何利用GPU强大的运算能力将CPU从繁重的运算中解放出来[3]。基于 [4,5] GPU的光线跟踪成为了一个活跃的研究方向。 本文借鉴文献[6]的方法,提出了GPU下的基于流的多遍绘制的光线跟踪构架体系。同时,改变了传统的基于均匀剖分的加速算法,采用了一种改进的2维KD2Tree加速算法组织复杂场景。实验证明,该算法提高了光线跟踪的效率,实现了光线跟踪的实时渲染。 水线互相连接(如图1),构成了处理能力强大的GPU并行处理流水线。同时,支持对GPU编程的高层GPU编程语言也随之出现,用户可以通过编写VertexShader和FragmentShader,实现更多强大的功能。 然而,GPU还是有它的一些局限性:可编程GPU仍然是一种SIMD架构,CPU与GPU的切换常会导致较大的系统开销,这给基于GPU的应用带来了困难 。 图1 OpenGL流水线 解决该问题的一个有效办法就是采用GPU多pass渲染技术。多pass渲染技术需要将计算的中间结果作为后一过程的输入继续进行计算。为了进行这种多pass渲染,并避免从显存中反馈数据到CPU端(这是一项非常耗时的操作),我们将计算任务主要在片元操作中完成。在片元操作部分,可 α测试和混合等操作以利用纹理合成、深度测试、模板测试、 来完成比较复杂的计算。计算结果可以作为纹理继续使用。纹理在这里就如

文档评论(0)

3388813 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档