CN101819675A - 一种基于gpu的层次包围盒的快速构造方法 - Google Patents
一种基于gpu的层次包围盒的快速构造方法 Download PDFInfo
- Publication number
- CN101819675A CN101819675A CN 201010150510 CN201010150510A CN101819675A CN 101819675 A CN101819675 A CN 101819675A CN 201010150510 CN201010150510 CN 201010150510 CN 201010150510 A CN201010150510 A CN 201010150510A CN 101819675 A CN101819675 A CN 101819675A
- Authority
- CN
- China
- Prior art keywords
- node
- formation
- thread
- scenario
- division
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于GPU的层次包围盒快速构造方法,包括:(1)将GPU的活动线程划分为若干线程块,通过构建层次包围盒对模型空间中的场景数据逐级进行划分,直至达到预定的级数,其中所有的线程块同时参与同一个场景节点的划分;(2)每个线程块分别参与不同的场景节点的划分,直至划分到每个节点所含面片数不多于每个线程块内的线程数;(3)每个线程分别参与不同的场景节点的划分,直至划分到每个节点所含面片数不多于5个。本发明方法可有效利用硬件的并行计算能力,提高加速结构的构造速度和质量。
Description
技术领域
本发明涉及图形实时渲染技术领域,尤其涉及一种层次包围盒的快速构造方法。
背景技术
在过去的二十年时间里,显卡性能的巨大提高,尤其是其可编程性的出现,大大促进了图形学研究领域的进步。光线跟踪技术是一种在图形绘制领域广泛应用的技术。相比光栅化技术,光线跟踪技术有很多优势,包括物体可见性的自动计算,时间复杂度与场景中图元数量呈次线性关系,更适合并行架构处理等。但是,由于光线跟踪技术模拟的是真实世界中光的物理路径,因此它最大的优势是产生高质量的图像,绘制出高真实感的平滑的反射、折射、软影(soft shadow)等全局光照效果。Whitted最早使用光线跟踪技术来模拟全局光照效果。由于光线跟踪技术需要花费很高的计算量,因此以往这种技术只能应用在非实时绘制领域中。
当前,计算机硬件的计算能力呈指数形式的增长速度已经使交互式的实时光线跟踪成为可能。越来越多的研究开始关注光线跟踪的实时计算,已经出现了一些优秀的研究成果。然而,尽管这些研究很多都是基于GPU架构设计的,但这些实现仍然未能充分利用当前GPU强大的并行计算能力。
近年来已经出现了一些基于GPU实现的编程方法,例如NVIDIA公司的CUDA(Compute Unified Device Architecture)编程模型、苹果公司的OpenCL,以及一些底层的框架结构。这些模型允许程序员自己定义合适的数据结构,为编程提供很大的灵活性和可操作性,包括创建、调度、同步等线程管理操作可以完全由硬件来完成。例如在CUDA编程模型里,我们可以根据程序的并行特征将程序划分成几个顺序执行的被称为kernel的代码段,使其在GPU中执行。为了有效地管理大量的线程,kernel使用标量形式的SIMT(Single Instruction,Multiple Thread)操作,线程以一种被称作warps的分组形式根据kernel中的指令来执行。程序员将线程组织成线程块(block),这些线程块本质上可以看成是虚拟的SM多处理器,拥有独立的寄存器和共享内存(shared memory),各线程块间相对独立的乱序执行。
为了获得GPU的最大计算性能,有两个问题需要考虑:第一,每个线程应该使用尽量少的硬件寄存器和存储资源,以保证GPU内部同一时刻运行更多的活动线程,Popov等的光线跟踪实现消耗了过多的寄存器,导致GPU利用率还不到33%;第二,线程的SIMD(Single Instruction,Multiple Data)操作对程序员来说是透明的,而SIMD的操作方式对程序的分支执行非常敏感,同一warp的线程只有执行程序的同一分支才能获得最大效益。
最近,一些研究开始关注动态场景下的光线跟踪方法。在光线跟踪算法中,构造加速结构是其中重要的一步,通过将面片重新进行组织,可以大大减少无效的光线遍历操作和相交操作。由于动态场景下物体间的拓扑结构会发生改变,甚至物体本身都会发生形变,因此,每一帧都需要重新对加速结构进行重构。然而,加速结构的构造是一个比较耗时的操作,通常无法在绘制一帧的时间内完成,这也是导致当前基于动态场景的实时光线跟踪研究进展较慢的主要原因。
kd树可以提供较好的光线跟踪性能,但是其昂贵的构造时间已满足不了实时光线跟踪的要求;网格结构易于构建,但是其光线跟踪的性能严重依赖于操作的相似性,而这往往在复杂场景或者二级光线中是不存在的。鉴于光线跟踪性能以及处理复杂场景和二级光线各方面的综合要求,在处理动态场景问题上,BVH(Bounding Volume Hierarchy)看起来是一个折中的选择,与kd树、网格结构按照空间的分割方法不同,BVH是一个按照物体分割的场景层次分割结构。
设计出一种高质量的快速的加速结构构造方法,使其可以充分利用多核处理器强大的并行处理能力,从而使加速结构建造速度进一步加快,满足实时性的要求,是一个光线跟踪算法能否有效执行的关键。目前公认的性能较好的加速结构一般都是一种层次结构,如BVH(Bounding VolumeHierarchies)、BSP(Binary Space Partitioning)、BIH(Bounding IntervalHierarchies)、八叉树(Octree)等结构。然而层次结构自上而下的构造方式使其很难在构造阶段初期充分的利用多核架构中每个核的计算能力,从而造成硬件的低效使用。
已经有一些工作关注于在多核体系下对加速结构的使用。MacDonald等提出了SAH(surface area heuristic)策略,Wald和Popov分别提出了针对这一策略设计的优化的构造方法。最近也出现了一些针对并行构造方面的工作,Popov用带有几个核的CPU去构造kd树,但由于带宽有限,取得的性能提升并不明显,Shevtsov同样用带有几个核的CPU去构造kd树,尽管取得了不错的性能,但他的这种算法不能扩展到更多的核进行处理。当前,随着硬件并行计算能力的增强,CUDA这样的编程平台也开始成熟,因此,应该重新考虑加速结构的设计。
发明内容
本发明提供一种基于GPU的层次包围盒(bvh)并行构建方法,可有效利用硬件的并行计算能力,提高加速结构的构造速度和质量。
一种基于GPU的层次包围盒的快速构造方法,包括:
(1)将GPU的活动线程划分为若干线程块,通过构建层次包围盒(BVH),对模型空间中的场景数据逐层进行划分,直至达到预定的层数,其中GPU内部所有的线程块同时参与同一个场景节点的划分;
划分时在需要进行渲染的模型空间的三个坐标轴上(相互垂直的X轴、Y轴和Z轴),分别计算采样分割点的SAH(surface area heuristic)花费(MacDonald等在文献“Heuristics for ray tracing using space subdivision.Visual Computer,1990.”中提出的评估加速结构最优分割点的方法,如公式(a)所示),然后选取三个坐标轴中花费最小的分割点,将选取的这个分割点作为分割平面,对模型空间中的场景数据进行划分。
将整个场景所形成的包围盒作为根节点,第一次划分可以得到两个子节点,然后以同样的方法,按照宽度优先的方式递归这个构造过程,逐层进行划分,直至构造的层数达到设定值,即此构造的层数是预先设定好的,一般为5层。
这种构造方式可以在层次包围盒构造初期,快速对场景节点进行分割,从而迅速产生出大量数据供成千上万的GPU线程使用,使它们一直保持满负荷工作状态。
我们使用公式(a)来计算每个潜在的分割点,另外我们还需要知道每个子结点所含面片数及其表面积。Wald等[15][19]通过使用排序来计算这些数量,为了避免昂贵的排序操作,我们使用bin方法[20]以减少带宽的使用。随着构造层次的加深,处理核所要处理的数据明显减少,使计算SAH花费的时间更短,从而使建造速度更快。
采样分割点的SAH花费
这里,nl和nr分别代表与当前采样分割点相邻的左、右子节点所含的面片数量,SA(Nl)、SA(Nr)分别表示与当前采样分割点相邻的左、右子节点的表面积,SA(N)表示当前采样分割点的父节点的表面积(没有父节点时取0),KT表示对当前采样分割点的父节点进行遍历所产生的花费(没有父节点时取0),KI表示对当前采样分割点进行相交操作所产生的花费。
KT和KI的含义是计算机硬件处理遍历或相交操作耗费的时间,KT和KI的绝对值可以人为设定,例如可以设定KT=10、KI=20;说明相交操作的花费大于遍历操作的花费,但10、20并不一定要求表示真实的处理时间,仅表示两者的相对关系。
所述的遍历或相交操作均可以是现有技术,本发明的重点在于层次包围盒结构的并行构建。
我们选取最优的分割点,使在这个点上所得到的SAH花费CP最小,或者如果KI·n花销更小,这时n=nl+nr,n为当前节点所含面片数量。
在进行SAH计算时,假设要在每个坐标轴上取p个采样分割点,那么为了计算花费最小的最优分割点,我们在三个维度上一共要进行3p次计算,由于这些计算只是用同样的操作对不同的数据进行处理,因此我们完全可以通过处理核的SIMD处理能力将这些操作并行处理。最后,当这些分割点计算都完成时,我们可以使用归约操作(reduction)找出具有最低花销的分割点。
(2)每个线程块分别参与不同的场景节点的划分,直至划分到每个节点所含面片数不多于每个线程块内线程的数量。
而每个线程块内线程的数量也是在步骤(1)中线程块的划分时已经设定的。
(3)线程块中的每个线程分别参与不同的场景节点的划分,直至划分到每个节点所含面片数不多于5个,最终产生叶子节点。
由于涉及到多个线程块或线程同时进行分割工作并产生结果,在步骤(2)和步骤(3)中划分场景数据的具体步骤如下:
a)在存储区域中建立两个队列(第一队列和第二队列),分别存放用来存放等待进行划分的场景节点;
b)当GPU存在空闲线程块或线程时,从第一队列中依次取等待进行划分的场景节点进行划分,并将产生的新的场景节点放入第二队列;
其中对第一队列中编号为k的场景节点进行划分所产生的新的场景节点在第二队列中的编号分别为2×k+t(t=0,1);场景节点在队列中的编号也对应了该场景节点在存储区域中的位置。
c)当第一队列中等待进行划分的场景节点处理完毕后,清空第一队列中的所有节点数据;当GPU存在空闲线程块或线程时,从第二队列中依次取等待进行划分的场景节点进行划分,并将产生的新的场景节点放入第一队列,直至第二队列中等待进行划分的场景节点都处理完毕。
其中对第二队列中编号为j的场景节点进行划分所产生的新的场景节点在第一队列中的编号分别为2×j+t(t=0,1);场景节点在队列中的编号也对应了该场景节点在存储区域中的位置。
d)循环步骤b)、步骤c),直至完成相应的场景节点的划分。
当每个队列中等待进行划分的场景节点划分完毕后,通过硬件支持的紧凑操作(compaction)清除对该队列中的空场景节点。
本发明快速构造方法分为三个阶段,构造初期、构造中期和构造后期,在构造初期由于需要进行大量的采样点计算,而GPU架构可以允许上万个线程同时进行计算,所有的线程块均同时参与一个场景节点的划分,保证了这些采样点的快速并行计算。
在构造中期,新结点所含面片数逐渐减少,在处理每一个结点时,可能无法找到足够多的采样点提供给GPU线程,从而造成GPU计算资源的浪费。因此,仅使用一个线程块block去处理一个场景节点的划分。
在构造后期,随着BVH结构构造层次的继续加深,BVH结构每个结点所含的面片数越来越少,甚至少于一个线程块的线程数,这样将会再一次出现计算资源闲置的情况。因此,为了能够充分利用GPU计算资源,,当结点所含面片数低于每个线程决内线程的数量时,采用每个线程分别参与不同的场景节点的划分的方法。
附图说明
图1为本发明方法在BVH结构构造过程中对GPU处理器的利用率分析。
图2为本发明方法基于不同的GPU处理核数所得到的BVH构造时间。
具体实施方式
为了在加速结构构造初期产生足够多的数据供多个处理核进行高效的并行处理,我们提出了以下构造方法。为了能在遍历操作与相交操作计算之间取得最优花费,我们仍然使用SAH策略作为确定分割面的方法。传统的BVH构造分别根据三个垂直坐标轴x、y、z方向上,计算具有最低SAH花费的位置,形成包围盒。不同于传统的BVH构造方法,我们采用宽度优先的方式,在三个坐标轴上分别计算采样分割点的SAH花费,然后选取每个坐标轴上花费最小的分割点。需要指出的是,对于大量采样点的SAH计算,本发明方法是使GPU当前所有线程都去做这个计算,相比传统的加速结构,这种构造方式可以迅速产生出大量数据供成千上万的GPU线程使用,使它们一直保持满负荷工作状态,大大减少了加速结构在构造初期的构造时间。
我们使用公式(1)来计算每个潜在的分割点,另外我们还需要知道每个子结点所含面片数及其表面积。Wald等]通过使用排序来计算这些数量,为了避免昂贵的排序操作,我们使用bin方法以减少带宽的使用。随着构造层次的加深,处理核所要处理的数据明显减少,使计算SAH花费的时间更短,从而使建造速度更快。
这里,nl和nr分别代表相应左右子节点所含的面片数量;SA(Nl)、SA(Nr)分别表示与当前采样分割点相邻的左、右子节点的表面积,SA(N)表示当前采样分割点的父节点的表面积,KT表示对当前采样分割点的父节点进行遍历所产生的花费,KI表示对当前采样分割点进行相交操作所产生的花费。我们选取最优的分割点,使在这个点上所得到的SAH花费CP最小,或者如果KI·n花销更小,这时n=nl+nr,n为当前节点所含面片数量。在使用SAH策略对结点进行分割计算时,我们使用SIMD多线程方式将这一操作并行化。在进行SAH计算时,假设要在每个坐标轴上取p个采样分割点,那么为了计算花费最小的最优分割点,我们在三个维度上一共要进行3p次计算,由于这些计算只是用同样的操作对不同的数据进行处理,因此我们完全可以通过处理核的SIMD处理能力将这些操作并行处理。最后,当这些分割点计算都完成时,可以使用归约操作(reduction)找出具有最低花销的分割点。
一般中等场景的面片数为几十万甚至上百万,这意味着在BVH结构构造初期,我们需要进行大量的采样点计算,当前的GPU架构可以允许上万个线程同时进行计算,保证了这些采样点的快速并行计算。然而,随着BVH构造层次的加深,新结点所含面片数逐渐减少,在处理每一个结点时,可能无法找到足够多的采样点提供给GPU线程,从而造成GPU计算资源的浪费。因此,在BVH结构构造中期,选择另外一种计算方式。
在当前的GPU架构中,程序员将线程组织成线程块(block),本质上可以看作是虚拟的SM多处理器,拥有独立的寄存器和共享内存(sharedmemory),各线程块间相对独立的乱序执行。在我们新的计算方法里,我们使用一个线程块block去处理一个结点,同时将处理后的结果放入全局存储区(global memory)。尽管访问全局存储区会产生较大的延迟,但是多线程切换机制可以使得这种延迟所带来的损失降到最低。若显卡中有N个SM多处理器,我们规定,当BVH结构构造到log2N时,算法执行将会切换到这种新的计算模式下。在NVIDIA公司性能相对较好的GTX285显卡中,一共有30个SM多处理器,因此在实现中我们选择在BVH结构的第五层切换到这种新的计算方式下。
在自上而下的构造过程中,每个结点按规则分割成两个新的结点,由于这些分割工作可以独立进行而不依赖其它结点,因此我们完全可以将这些结点的分割工作分给多个核同时进行处理,以加快构造速度,同时可以通过分割任务的切换来隐藏访存的延迟。我们可以设置一个队列用来存放等待进行分割计算的结点,这样当一个处理核完成了一个结点的分割计算以后可以立刻从这个队列里获得新的工作,同时也将刚产生的欲分割结点放入队列。
由于涉及到多个线程块同时进行分割工作并产生结果,而当前的GPU架构还不支持存储一致性,为了避免使用锁机制带来的同步开销,我们设置两个队列来记录这些位置,具体步骤如下:
a)在存储区域中建立两个队列(第一队列和第二队列),分别存放用来存放等待进行划分的场景节点;
b)当GPU存在空闲线程块时,从第一队列中依次取等待进行划分的场景节点进行划分,并将产生的新的场景节点放入第二队列;
其中对第一队列中编号为k的场景节点进行划分所产生的新的场景节点在第二队列中的编号分别为2×k+t(t=0,1);场景节点在队列中的编号也对应了该场景节点在存储区域中的位置。
c)当第一队列中等待进行划分的场景节点处理完毕后,清空第一队列中的所有节点数据;当GPU存在空闲线程块时,从第二队列中依次取等待进行划分的场景节点进行划分,并将产生的新的场景节点放入第一队列,直至第二队列中等待进行划分的场景节点都处理完毕。
其中对第二队列中编号为j的场景节点进行划分所产生的新的场景节点在第一队列中的编号分别为2×j+t(t=0,1);场景节点在队列中的编号也对应了该场景节点在存储区域中的位置。
d)循环步骤b)、步骤c),直至完成相应的场景节点的划分。当每个队列中等待进行划分的场景节点划分完毕后,通过硬件支持的紧凑操作(compaction)清除对该队列中的空场景节点。至于t的具体取值我们可以在block内速度更快的共享存储区(shared memory)里计算。在当前层次的子结点全部计算完毕后,我们使用压缩操作(compaction)将空结点去掉,形成新的父结点队列。
在BVH结构构造中期,我们使用一个线程块block去处理一个BVH结点,考虑到有限的寄存器资源和存储资源,为了使活动线程块数达到最优,我们在实现时将每个线程块的线程数设置为256个,这256个线程并行计算采样点的SAH花费,直至所有的采样点计算完毕,同时将结果存入共享存储区,最后判断出花费最低的分割位置。
然而,随着BVH结构构造层次的继续加深,BVH结构每个结点所含的面片数越来越少,甚至少于一个线程块的线程数,这样将会再一次出现计算资源闲置的情况。因此,为了能够充分利用GPU计算资源,在BVH结构构造后期,当结点所含面片数低于某一阈值时,我们再次切换新的计算方式。在实现时,我们将阈值设置为线程块所含的线程数目,在本实验条件下,即为256。
在BVH结构构造后期,GPU中的每一个线程不再只是计算某个结点其中的一个采样点的SAH花费,而是要处理整个结点的分割,也就是说这个线程要逐个计算结点中各采样点的SAH花费,然后选取最优的采样点作为该结点的分割位置。需要说明的是,由于目前的CUDA编程模型还不支持同一时间内运行多个kernel计算任务,因此我们上述的BVH结构在构造初期、中期、后期所对应的算法不会同时执行,它们的执行关系是互斥而又相互依赖的。
为了保证每个线程的计算量大致相同,而不至于出现由于任务量负载不均而出现线程等待的情况,我们仍然采用宽度优先的处理方式,按层次依次处理各个结点,线程块中的每个线程分别参与不同的场景节点的划分,直至划分到每个节点所含面片数不多于5个,最终产生叶子节点。另外,我们也同样采用在构造中期时使用的双队列形式来分别记录父子结点信息,以避免使用锁机制带来的同步开销。
选择一台配有一颗Intel Xeon 3.7GHz的4核CPU,一颗NvidiaGTX285(1G显存)的PC来实现我们的这个算法。我们使用Nvidia公司的CUDA编程框架,其为GPU计算提供了一个通用的C编程接口,方便编程者使用一些新的硬件特性。
选择具有不同几何复杂度的动态场景,Toys,Ben,Fairy,每个测试场景的分辨率为1024*1024,所以测试都包括了纹理、着色以及阴影部分。为了验证本BVH结构的构造速度和质量,首先,我们从构造时间、绘制帧率两个方面,与在CPU上使用SIMD指令构造BVH结构并使用基于SIMD的光线包(光线包大小为2*2)进行光线跟踪计算的算法进行对比,如表1所示,所有场景都是在一个点光源下绘制的。
表1
表1为本发明方法与在CPU上实现的BVH构造方法针对Toys,Ben,
Fairy场景在加速结构构造时间(S)、帧率(FPS)以及SAH上的性能比较。
可以看出,基于GPU实现的BVH结构并行构建算法,相比基于CPU实现的BVH结构构造算法,在构造时间上获得了近10倍的性能提升,在此基础上实现的绘制性能也获得近一倍的提升,尤其是对复杂场景表现了更为突出的性能,如Fairy场景,在绘制帧率上取得了近10倍的提升。需要指出的是,所有的测试场景均为动态场景,由实验结果可见,本发明方法大大缩短了加速结构的构造时间,满足了动态场景对加速结构的实时构建要求,进而达到了对动态场景进行实时光线跟踪的要求。同时,本发明还列出了所构造的BVH结构的SAH花费,可见本发明方法所生成的BVH结构的质量与CPU下由SIMD指令生成的BVH结构的质量相近,也就是说本发明方法在获得更短构造时间的同时并没有降低所构造的BVH结构的质量。
为了进一步验证本发明方法对硬件的并行使用能力,我们记录了在构造BVH结构时标量处理器的利用率,其直接反映了本BVH结构的构造方法能否有效使用硬件上的并行计算单元。注意,我们没有使用ALU的使用情况作为这个实验的测试标准,因为有些时候即便线程槽已被占用,但ALU也可能因为访存延迟或者SIMD的低利用率而未被完全使用。我们将本方法与Gunther等的BVH构造方法作比较,在BVH结构构造初期,本发明方法的优势并不明显,如图1所示(图中的文献[1]为(J.,POPOV,S.,SEIDEL,H.-P.,AND SLUSALLEK,P.2007.Realtime RayTracing on GPU with BVH-based Packet Traversal.In Proceedings of theIEEE/Eurographics Symposium on InteractiVe Ray Tracing,113″U-118,2007.)。
随着构造层次的加深,Gunther等的方法对GPU的有效利用率成超线性降低;而本发明方法则根据不同的构造时期呈现波段性变化,由图可见,当构造BVH结构的第5层时,GPU利用率陡然提高,这是因为构造算法切换到了构造中期的构造方式,此后GPU利用率稳中略降;当构造BVH结构的第22层时,GPU利用率再一次陡然提高,这是因为构造算法切换到了构造后期的构造方式。总之,本发明方法能够保证在BVH结构在构造期间对GPU计算单元保持着较高的有效利用率。
为了说明处理器处理核数对本算法在性能上的影响,做了如图2的实验,通过控制在GPU上使用的处理器核数,我们分别列举了Toys,Ben,Fairy场景在不同处理器核数的条件下其加速结构的构造时间。由图可见,本发明方法对不同的处理核数表现了良好的可扩展性,随着处理核数的不断增加,所有测试场景的加速结构的构造时间均明显减少;尤其是对于复杂场景的加速结构,处理核数的数量对构造时间的影响差别较大,说明本发明方法更适合复杂场景下加速结构的构造。
Claims (2)
1.一种基于GPU的层次包围盒快速构造方法,其特征在于,包括:
(1)将GPU的活动线程划分为若干线程块,通过构建层次包围盒对模型空间中的场景数据逐级进行划分,直至达到预定的级数,其中所有的线程块同时参与同一个场景节点的划分;
(2)每个线程块分别参与不同的场景节点的划分,直至划分到每个节点所含面片数不多于每个线程块内的线程数;
(3)每个线程分别参与不同的场景节点的划分,直至划分到每个节点所含面片数不多于5个;
在步骤(2)和步骤(3)中划分场景数据的具体步骤如下:
a)在存储区域中建立两个队列,为第一队列和第二队列,分别存放用来存放等待进行划分的场景节点;
b)当GPU存在空闲线程块或线程时,从第一队列中依次取等待进行划分的场景节点进行划分,并将产生的新的场景节点放入第二队列;
其中对第一队列中编号为k的场景节点进行划分所产生的新的场景节点在第二队列中的编号分别为2×k+t,其中t=0,1;场景节点在队列中的编号也对应了该场景节点在存储区域中的位置;
c)当第一队列中等待进行划分的场景节点处理完毕后,清空第一队列中的所有节点数据;当GPU存在空闲线程块或线程时,从第二队列中依次取等待进行划分的场景节点进行划分,并将产生的新的场景节点放入第一队列,直至第二队列中等待进行划分的场景节点都处理完毕;
其中对第二队列中编号为j的场景节点进行划分所产生的新的场景节点在第一队列中的编号分别为2×j+t其中t=0,1;场景节点在队列中的编号也对应了该场景节点在存储区域中的位置。
d)循环步骤b)、步骤c),直至完成相应的场景节点的划分;
当每个队列中等待进行划分的场景节点划分完毕后,通过硬件支持的紧凑操作清除对该队列中的空场景节点。
2.如权利要求1所述的快速构造方法,其特征在于,对模型空间中的场景数据进行划分时在需要进行渲染的模型空间的三个坐标轴上,分别计算采样分割点的SAH花费,然后选取三个坐标轴中花费最小的分割点,将选取的这个分割点作为分割平面。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101505109A CN101819675B (zh) | 2010-04-19 | 2010-04-19 | 一种基于gpu的层次包围盒的快速构造方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101505109A CN101819675B (zh) | 2010-04-19 | 2010-04-19 | 一种基于gpu的层次包围盒的快速构造方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101819675A true CN101819675A (zh) | 2010-09-01 |
CN101819675B CN101819675B (zh) | 2011-08-10 |
Family
ID=42654763
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010101505109A Expired - Fee Related CN101819675B (zh) | 2010-04-19 | 2010-04-19 | 一种基于gpu的层次包围盒的快速构造方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101819675B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508820A (zh) * | 2011-11-25 | 2012-06-20 | 中国人民解放军国防科学技术大学 | 一种基于gpu的消除云方程并行求解过程中数据相关的方法 |
GB2493425A (en) * | 2011-08-04 | 2013-02-06 | Nvidia Corp | Constructing an acceleration structure |
CN103021018A (zh) * | 2012-11-07 | 2013-04-03 | 浙江工业大学 | 基于gpu的构建bvh树并行光线追踪方法 |
CN103336718A (zh) * | 2013-07-04 | 2013-10-02 | 北京航空航天大学 | 一种gpu线程调度优化方法 |
CN105468439A (zh) * | 2015-11-19 | 2016-04-06 | 华东师范大学 | 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行算法 |
US9436475B2 (en) | 2012-11-05 | 2016-09-06 | Nvidia Corporation | System and method for executing sequential code using a group of threads and single-instruction, multiple-thread processor incorporating the same |
KR20170064977A (ko) * | 2015-12-02 | 2017-06-12 | 삼성전자주식회사 | Bvh 트리를 구성하기 위한 방법 및 시스템 |
CN106875492A (zh) * | 2017-02-13 | 2017-06-20 | 华东师范大学 | 一种面向gpu包围盒碰撞检测方法 |
CN107256574A (zh) * | 2017-05-31 | 2017-10-17 | 宝珑珠宝设计(北京)有限公司 | 一种真实3d实时混合渲染方法 |
CN107346527A (zh) * | 2017-06-29 | 2017-11-14 | 武汉大学 | 一种基于动态任务调度的层次包围盒构建方法 |
CN108171785A (zh) * | 2018-01-22 | 2018-06-15 | 中南大学 | 用于光线跟踪的sah-kd树设计方法 |
US10559125B2 (en) | 2015-12-02 | 2020-02-11 | Samsung Electronics Co., Ltd. | System and method of constructing bounding volume hierarchy tree |
CN111186139A (zh) * | 2019-12-25 | 2020-05-22 | 西北工业大学 | 一种3d打印模型的多层次并行切片方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002003326A2 (en) * | 2000-06-19 | 2002-01-10 | Mental Images, G.M.B.H. & Co., Kg. | Generating pixel values using strictly deterministic methodologies for generating sample points |
US20080100617A1 (en) * | 2000-06-19 | 2008-05-01 | Alexander Keller | Simultaneous simulation of markov chains using quasi-monte carlo techniques |
US20090106530A1 (en) * | 2007-10-17 | 2009-04-23 | Christian Lauterbach | System, method, and computer program product for generating a ray tracing data structure utilizing a parallel processor architecture |
CN101593367A (zh) * | 2009-06-25 | 2009-12-02 | 北京航空航天大学 | 一种基于四叉包围盒树的柔性织物自碰撞检测方法 |
CN101593366A (zh) * | 2009-06-24 | 2009-12-02 | 北京航空航天大学 | 一种基于平衡二叉树的大规模虚拟场景碰撞检测方法 |
-
2010
- 2010-04-19 CN CN2010101505109A patent/CN101819675B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002003326A2 (en) * | 2000-06-19 | 2002-01-10 | Mental Images, G.M.B.H. & Co., Kg. | Generating pixel values using strictly deterministic methodologies for generating sample points |
US20080100617A1 (en) * | 2000-06-19 | 2008-05-01 | Alexander Keller | Simultaneous simulation of markov chains using quasi-monte carlo techniques |
US20090106530A1 (en) * | 2007-10-17 | 2009-04-23 | Christian Lauterbach | System, method, and computer program product for generating a ray tracing data structure utilizing a parallel processor architecture |
CN101593366A (zh) * | 2009-06-24 | 2009-12-02 | 北京航空航天大学 | 一种基于平衡二叉树的大规模虚拟场景碰撞检测方法 |
CN101593367A (zh) * | 2009-06-25 | 2009-12-02 | 北京航空航天大学 | 一种基于四叉包围盒树的柔性织物自碰撞检测方法 |
Non-Patent Citations (5)
Title |
---|
《2007 IEEE/EG Symposium on Interactive Ray Tracing》 20070912 Ingo Wald et al. On fast construction of SAH-based bounding volume hierarchies 33-40 , 2 * |
《2007 IEEE/EG Symposium on Interactive Ray Tracing》 20070912 Johannes Günther et al. Realtime Ray Tracing on GPU with BVH-based Packet Traversal 113-118 , 2 * |
《2009 International Conference on Information Management and Engineering》 20090619 Lei Zhao et al. Real-Time Rendering of Highly Complex Dynamic Scenes Based on Parallel Multi-Core Architectures 593-597 , 2 * |
《EUROGRAPHICS 2009》 20091231 C. Lauterbach et al. Fast BVH Construction on GPUs 375-384 第28卷, 第2期 2 * |
《Eurographics Symposium on Parallel Graphics and Visualization (2007)》 20071231 Thiago Ize et al. Asynchronous BVH Construction for Ray Tracing Dynamic Scenes on Parallel Multi-Core Architectures , 2 * |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2493425A (en) * | 2011-08-04 | 2013-02-06 | Nvidia Corp | Constructing an acceleration structure |
CN103106681A (zh) * | 2011-08-04 | 2013-05-15 | 辉达公司 | 用于构建加速结构的系统、方法及计算机程序产品 |
CN102508820B (zh) * | 2011-11-25 | 2014-05-21 | 中国人民解放军国防科学技术大学 | 一种基于gpu的消除云方程并行求解过程中数据相关的方法 |
CN102508820A (zh) * | 2011-11-25 | 2012-06-20 | 中国人民解放军国防科学技术大学 | 一种基于gpu的消除云方程并行求解过程中数据相关的方法 |
US9436475B2 (en) | 2012-11-05 | 2016-09-06 | Nvidia Corporation | System and method for executing sequential code using a group of threads and single-instruction, multiple-thread processor incorporating the same |
US9747107B2 (en) | 2012-11-05 | 2017-08-29 | Nvidia Corporation | System and method for compiling or runtime executing a fork-join data parallel program with function calls on a single-instruction-multiple-thread processor |
US9727338B2 (en) | 2012-11-05 | 2017-08-08 | Nvidia Corporation | System and method for translating program functions for correct handling of local-scope variables and computing system incorporating the same |
US9710275B2 (en) | 2012-11-05 | 2017-07-18 | Nvidia Corporation | System and method for allocating memory of differing properties to shared data objects |
CN103021018B (zh) * | 2012-11-07 | 2015-04-22 | 浙江工业大学 | 基于gpu的构建bvh树并行光线追踪方法 |
CN103021018A (zh) * | 2012-11-07 | 2013-04-03 | 浙江工业大学 | 基于gpu的构建bvh树并行光线追踪方法 |
CN103336718A (zh) * | 2013-07-04 | 2013-10-02 | 北京航空航天大学 | 一种gpu线程调度优化方法 |
CN103336718B (zh) * | 2013-07-04 | 2016-07-06 | 北京航空航天大学 | 一种gpu线程调度优化方法 |
CN105468439A (zh) * | 2015-11-19 | 2016-04-06 | 华东师范大学 | 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行算法 |
CN105468439B (zh) * | 2015-11-19 | 2019-03-01 | 华东师范大学 | 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行方法 |
KR102570584B1 (ko) | 2015-12-02 | 2023-08-24 | 삼성전자 주식회사 | Bvh 트리를 구성하기 위한 방법 및 시스템 |
KR20170064977A (ko) * | 2015-12-02 | 2017-06-12 | 삼성전자주식회사 | Bvh 트리를 구성하기 위한 방법 및 시스템 |
US10559125B2 (en) | 2015-12-02 | 2020-02-11 | Samsung Electronics Co., Ltd. | System and method of constructing bounding volume hierarchy tree |
CN106875492A (zh) * | 2017-02-13 | 2017-06-20 | 华东师范大学 | 一种面向gpu包围盒碰撞检测方法 |
CN107256574A (zh) * | 2017-05-31 | 2017-10-17 | 宝珑珠宝设计(北京)有限公司 | 一种真实3d实时混合渲染方法 |
CN107346527A (zh) * | 2017-06-29 | 2017-11-14 | 武汉大学 | 一种基于动态任务调度的层次包围盒构建方法 |
CN107346527B (zh) * | 2017-06-29 | 2020-03-10 | 武汉大学 | 一种基于动态任务调度的层次包围盒构建方法 |
CN108171785A (zh) * | 2018-01-22 | 2018-06-15 | 中南大学 | 用于光线跟踪的sah-kd树设计方法 |
CN108171785B (zh) * | 2018-01-22 | 2021-12-10 | 中南大学 | 用于光线跟踪的sah-kd树设计方法 |
CN111186139B (zh) * | 2019-12-25 | 2022-03-15 | 西北工业大学 | 一种3d打印模型的多层次并行切片方法 |
CN111186139A (zh) * | 2019-12-25 | 2020-05-22 | 西北工业大学 | 一种3d打印模型的多层次并行切片方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101819675B (zh) | 2011-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101819675B (zh) | 一种基于gpu的层次包围盒的快速构造方法 | |
CN101826215B (zh) | 实时二级光线跟踪的并行渲染方法 | |
Meister et al. | A survey on bounding volume hierarchies for ray tracing | |
Deng et al. | Toward real-time ray tracing: A survey on hardware acceleration and microarchitecture techniques | |
CN109255828A (zh) | 用于光线跟踪的混合层级 | |
Gunther et al. | Realtime ray tracing on GPU with BVH-based packet traversal | |
CN101840565B (zh) | 一种基于gpu的八叉树并行构建方法 | |
Montani et al. | Parallel volume visualization on a hypercube architecture | |
Garanzha et al. | Grid-based SAH BVH construction on a GPU | |
Cirne et al. | Marching cubes technique for volumetric visualization accelerated with graphics processing units | |
Larsson et al. | Strategies for bounding volume hierarchy updates for ray tracing of deformable models | |
CN104463940B (zh) | 一种基于gpu的混合树并行构建方法 | |
McNeill et al. | Performance of space subdivision techniques in ray tracing | |
Nie et al. | A survey of continuous collision detection | |
Qi et al. | An enhanced sweep and prune algorithm for multi-body continuous collision detection | |
Ulyanov et al. | Interactive vizualization of constructive solid geometry scenes on graphic processors | |
KR20220139880A (ko) | 배터리 전력공급형 컴퓨팅 디바이스들을 위한 실시간, 소프트웨어 기반 하이브리드 광선 트레이싱 | |
Jun-Feng et al. | Parallel optimization of the ray-tracing algorithm based on the HPM model | |
dos Santos et al. | Review and comparative study of ray traversal algorithms on a modern gpu architecture | |
Miguet et al. | Complexity analysis of a parallel implementation of the marching-cubes algorithm | |
Jie et al. | LOD methods of large-scale urban building models by GPU accelerating | |
Shen et al. | A parallel image-rendering algorithm and architecture based on ray tracing and radiosity shading | |
Crause | Fast, realistic terrain synthesis | |
Erikson et al. | Hierarchical levels of detail for fast display of large static and dynamic environments | |
Lu et al. | Distributed visibility culling technique for complex scene rendering |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110810 Termination date: 20140419 |