当前位置: 首页 > 专利查询>中南大学专利>正文

用于光线跟踪的SAH-KD树设计方法技术

技术编号:18238711 阅读:48 留言:0更新日期:2018-06-17 02:25
本发明专利技术提供了一种用于光线跟踪的SAH‑KD树设计方法,包括:步骤S1、在进行所述SAH‑KD树的构建之前,对节点中的当前根节点的所有三角面片进行预处理;步骤S2、按层次递归构建所述SAH‑KD树,生成当前所述节点的左、右子节点的有序包围盒序列,并计算出当前层次每个所述节点的包围盒的三个维度的表面积;步骤S3、求出当前节点需要划分的维度,生成每一层所有所述节点的空间树和候选划分点,计算出每个所述候选划分点对应的SAH值;步骤S4、选择最小SAH值对应的所述候选划分点作为当前节点的最优划分点,并将该当前节点分成左、右两个子节点。与相关技术相比,本发明专利技术提供的用于光线跟踪的SAH‑KD树设计方法构建的SAH‑KD树性能好且效率高。 1

Design method of SAH-KD tree for ray tracing

This invention provides a SAH KD tree design method for ray tracing, including step S1, preprocessing all triangular facets of the current root node in the node before the construction of the described SAH KD tree; step S2, construct the SAH KD tree at the level recursively, and generate the left and right subsections of the current node. The sequence of the ordered encircling box is used and the surface area of the three dimensions of the bounding box of each of the nodes at the current level is calculated; step S3, the dimension of the current node needs to be divided, the space tree and the candidate partition point of all the nodes of each layer are generated, and the SAH value corresponding to each of the candidate partition points is calculated; step S4, The candidate partition points corresponding to the minimum SAH value are selected as the optimal division points of the current node, and the current node is divided into two sub nodes, left and right. Compared with the related technologies, the SAH KD KD tree constructed by the SAH KD tree design method for ray tracing has good performance and high efficiency. One

【技术实现步骤摘要】
用于光线跟踪的SAH-KD树设计方法
本专利技术涉及数据处理
,尤其涉及一种用于光线跟踪的SAH-KD树设计方法。
技术介绍
K维树(KD树)是一类坐标轴对齐的平衡二叉树,是常用于K维空间中进行空间划分的数据结构,被当作加速结构广泛的应用于图形应用与查询领域,比如光线跟踪中三角面集合与光线的相交检测和最近邻查询等。KD树的遍历成本在不同的应用领域有不同的计算方式,在光线跟踪中需要计算出每条光线穿过的KD树所有叶节点。为了达到高效遍历,通常在构建时使用表面积启发式划分法(SAH),通过最小化每个节点上三角面片与光线相交测试复杂度期望选择划分点。相关技术中,为了快速高效的构造用于光线跟踪的SAH-KD树,一种方法是串行构造方法,最简单的思路是对构造的SAH-KD树的每个节点上所有划分点进行全遍历计算SAH值,其计算复杂度为O(N2),由于计算复杂度较高,使得该方法无法应用于大场景;另一种是并行化构建方法,在上层大节点通过一个高性能线程进行计算,直到每个节点计算量足够小,才将它们分配到多核系统中的构造思路,该方法虽然提高了SAH-KD树的构建效率,但是算法遍历时由于顶层的中值选择效率有些退化,在超大型场景有不同程度的性能损失。因此,实有必要提供一种新的用于光线跟踪的SAH-KD树设计方法解决上述问题。
技术实现思路
本专利技术需要解决的技术问题是提供性能好且效率高的用于光线跟踪的SAH-KD树设计方法。为解决上述技术问题,本专利技术提供了一种用于光线跟踪的SAH-KD树设计方法,该方法包括如下步骤:步骤S1、在进行所述SAH-KD树的构建之前,对节点中的当前根节点的所有三角面片进行预处理,计算所述当前根节点的所有三角面片的包围盒,将所述包围盒在三个维度排列,形成有序包围盒序列;步骤S2、按层次递归构建所述SAH-KD树,通过遍历上层每个所述节点的所述有序包围盒序列,生成当前所述节点的左、右子节点的有序包围盒序列,并计算出当前层次每个所述节点的包围盒的三个维度的表面积;步骤S3、根据每个所述节点的所述包围盒求出当前节点需要划分的维度,生成每一层所有所述节点的空间树和候选划分点,利用所述空间树并行计算出每个所述候选划分点对应的SAH值;步骤S4、对于当前层的每个所述节点,遍历其包含的所述候选划分点,选择最小SAH值对应的所述候选划分点作为当前节点的最优划分点,并将该当前节点分成左、右两个子节点。优选的,步骤S1中,所述包围盒为AABB包围盒。优选的,步骤S1中,将所述包围盒在三个维度按升序排列。优选的,步骤S2中,具体还包括:迭代计算出每个节点在新的一层空间中的偏移D,使用AssignTri算法将所述左、右子节点包含的所述三角面片有序指派至所述左、右子节点中:其中,NT为新一层三角面片的总和;NL为左子节点的三角面片数,NR为右子节点的三角面片数,i为自然数;D为偏移。优选的,步骤S3中,选择所述包围盒最长的维度作为需要划分的维度。优选的,该方法为CPU/GPU混合编程的SAH-KD树设计方法,利用GPU使用宽度优先搜索构建所述SAH-KD树,所述CPU对每次结果进行同步。与相关技术相比,本专利技术的用于光线跟踪的SAH-KD树设计方法为基于CPU/GPU混合编程的SAH-KD树构建方法,先生成一层每个所述节点在三个维度上三角面片包围盒的有序包围盒序列,根据每个所述节点包围盒选择一个维度进行划分,生成所有节点在相应维度下的候选划分点,计算出每个候选划分点的SAH值,并选择每个节点最小SAH值对应的候选划分点为最优划分点。该方法充分利用GPU多核的特性,使用宽度优先搜索(BFS)构建所述SAH-KD树,并在每层构建时基于当前层次所有所述节点的每个划分点来进行并行计算,CPU仅对每次结果进行同步,充分发挥CPU与GPU本身的计算特点,提高构建效率。同时使用所述空间树高效计算所述SAH值,所述空间树可以使每个GPU线程在最坏情况下保持远小于当前节点三角面片数的计算复杂度,从而实现在整体设计构建上达到高性能的目的。附图说明图1为本专利技术用于光线跟踪的SAH-KD树设计方法的流程框图;图2为本专利技术用于光线跟踪的SAH-KD树设计方法在Cooper场景下与I.Wald串行算法的层次数量中的时间效率对比曲线图;图3为本专利技术设计方法在使用8~64个GPU核心时(以8核为基准)在四种场景下与对比算法的性能加速比曲线图;图4为通过本专利技术的设计方法在场景Toys、Bunny、Dragon和Cooper时分别生成的效果图。具体实施方式下面将结合附图和实施方式对本专利技术作进一步说明。本专利技术提供了一种用于光线跟踪的SAH-KD树设计方法,本专利技术的用于光线跟踪的SAH-KD树设计方法为CPU/GPU混合编程的SAH-KD树构建方法,充分利用GPU多核的特性,使用宽度优先搜索(BFS)构建所述SAH-KD树,并在每层构建时基于当前层次所有节点的每个候选划分点来进行并行计算,所述CPU仅对每次结果进行同步,充分发挥CPU与GPU本身的计算特,提高构建效率。同时用空间树高效计算SAH值,空间树可以使每个GPU线程在最坏情况下保持远小于当前节点三角面片数的计算复杂度,从而实现整体构建上达到较高的性能的目的。请参阅图1,为本专利技术用于光线跟踪的SAH-KD树设计方法的流程框图。该方法包括如下步骤:步骤S1、在进行所述SAH-KD树的构建之前,对节点中的当前根节点的所有三角面片进行预处理,计算所述当前根节点的所有三角面片的包围盒,将所述包围盒在三个维度排列,形成有序包围盒序列(或有序序列)。具体的,三角面片的包围盒方式有多种,如最小包围球、方向包围盒OBB以及固定方向凸包FDH等。本实施方式中,作为计算性能与查询性能的折中,所述包围盒为AABB包围盒。本实施方式中,将所述包围盒在三个维度按升序排列,当然不限于此。步骤S2、按层次递归构建所述SAH-KD树,通过遍历上层每个所述节点的所述有序包围盒序列,生成当前所述节点的左、右子节点的有序包围盒序列,并计算出当前层次每个所述节点的包围盒的三个维度的表面积。由于所述SAH-KD树只在叶节点保存三角面片,需要把父节点中的三角面片指派到每个所述节点的左、右两个子节点中。在并行计算出所有的SAH值后,使用CPU进行同步,顺序找出每个节点最小的SAH值对应的划分点,以及其左右子节点包含的三角面片数NL和NR。而一次处理所述SAH-KD树一层的所有所述节点,需要一次性对所有所述节点产生的新子节点分配空间。新一层三角面片的总和为:其中,NT为新一层三角面片的总和;NL为左子节点的三角面片数,NR为右子节点的三角面片数,i为自然数。之后依次在三个维度遍历每一个所述节点的所有三角面片,并按照每一个所述节点的实际左、右子节点的归属依次加入到新分配的空间中。具体做法是先迭代计算出每个所述节点在新的一层空间中的偏移D,之后使用算法AssignTri将三角面片有序指派到其左、右子节点中:由于其父节点是有序序列,所以得到的子节点也是有序序列,从而省略了排序的步骤,直接进行下一层候选划分计算。步骤S3、根据每个所述节点的所述包围盒求出当前节点需要划分的维度,生成每一层所有所述节点的空间树和候选划分点,利用所述空间树并行计算出每个所述候选划分本文档来自技高网...
用于光线跟踪的SAH-KD树设计方法

【技术保护点】
1.一种用于光线跟踪的SAH‑KD树设计方法,其特征在于,该方法包括如下步骤:

【技术特征摘要】
1.一种用于光线跟踪的SAH-KD树设计方法,其特征在于,该方法包括如下步骤:步骤S1、在进行所述SAH-KD树的构建之前,对节点中的当前根节点的所有三角面片进行预处理,计算所述当前根节点的所有三角面片的包围盒,将所述包围盒在三个维度排列,形成有序包围盒序列;步骤S2、按层次递归构建所述SAH-KD树,通过遍历上层每个所述节点的所述有序包围盒序列,生成当前所述节点的左、右子节点的有序包围盒序列,并计算出当前层次每个所述节点的包围盒的三个维度的表面积;步骤S3、根据每个所述节点的所述包围盒求出当前节点需要划分的维度,生成每一层所有所述节点的空间树和候选划分点,利用所述空间树并行计算出每个所述候选划分点对应的SAH值;步骤S4、对于当前层的每个所述节点,遍历其包含的所述候选划分点,选择最小SAH值对应的所述候选划分点作为当前节点的最优划分点,并将该当前节点分成左、右两个子节点。2.根据权利要求1所述的用于光线跟踪的SAH-KD树设计方法,其特征...

【专利技术属性】
技术研发人员:廖胜辉李建锋谭耀华夏佳志郭璠赵于前邹北骥
申请(专利权)人:中南大学吉首大学
类型:发明
国别省市:湖南,43

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

1