APP下载

一个新的线索KD树并行算法

2011-07-07焦良葆

图学学报 2011年5期
关键词:效率

焦良葆, 陈 瑞, 张 健

(南京工程学院通信工程学院,江苏 南京 211167)

作为在光线跟踪广泛使用的一种层次树结构,KD树(K-Dimensional Tree)得到了诸多研究者的关注[1]。作为一种基于空间剖分的加速结构,它采用轴对齐的分割面对场景空间进行剖分,递归地生成空间单元间的组织结构。光线跟踪算法中,当光线穿越空间单元时,就借助空间单元间的这种组织关系,跨越空单元来直接找到包含物体的单元,并进行光线与物体的求交测试,然后计算光强进行场景渲染。算法中计算量最大的部分就是光线与物体的求交运算。为提高光线和物体的求交速度,除了KD树外,常用的加速结构还有 Grids(网格)和 BVH(Bounding Volume Hierarchies,层次包围体)等[2-3]。文献[4]对基于CPU的光线跟踪算法的加速结构进行比较,认为对于不同类型的测试场景平均而言,KD树是最快的。同时由于光线跟踪有着天然的并行性,为了利用基于 SIMD(Single Instruction Multiple Data,单指令多数据)计算平台的GPU(Graphic Process Unit,图形处理单元)协处理器在并行计算上的优势,将KD树算法移植到GPU上已成为目前的研究热点[5-6]。

KD树算法包括创建和遍历两个过程。好的KD树构建方法能够生成优化的树结构,从而提高遍历速度。传统上KD树的实现一般基于递归过程或者栈数据结构,但 GPU缺少对递归过程的支持且堆栈存取效率低下。因此,Foley等人[5]提出了基于GPU的无栈遍历算法KD-restart。算法中为省去堆栈结构,每次遍历都退回到根节点处重新开始,因此遍历效率低下。斯坦福大学Daniel Reiter Horn等人[6]在此基础上提出了short-stack遍历算法,采用push-down结构降低额外的节点访问次数,效率高于 KD-restart,但仍然需要使用少量堆栈。……

登录APP查看全文

猜你喜欢

效率
你在咖啡馆学习会更有创意和效率吗?
提升朗读教学效率的几点思考
注意实验拓展,提高复习效率
效率的价值
引入“倒逼机制”提高治霾效率
质量与效率的争论
跟踪导练(一)2
提高食品行业清洁操作的效率
OptiMOSTM 300V提高硬开关应用的效率,支持新型设计
“钱”、“事”脱节效率低