專利名稱::一種基于gpu的層次包圍盒的快速構造方法
技術領域:
:本發明涉及圖形實時渲染
技術領域:
,尤其涉及一種層次包圍盒的快速構造方法。
背景技術:
:在過去的二十年時間里,顯卡性能的巨大提高,尤其是其可編程性的出現,大大促進了圖形學研究領域的進步。光線跟蹤技術是一種在圖形繪制領域廣泛應用的技術。相比光柵化技術,光線跟蹤技術有很多優勢,包括物體可見性的自動計算,時間復雜度與場景中圖元數量呈次線性關系,更適合并行架構處理等。但是,由于光線跟蹤技術模擬的是真實世界中光的物理路徑,因此它最大的優勢是產生高質量的圖像,繪制出高真實感的平滑的反射、折射、軟影(softshadow)等全局光照效果。Whitted最早使用光線跟蹤技術來模擬全局光照效果。由于光線跟蹤技術需要花費很高的計算量,因此以往這種技術只能應用在非實時繪制領域中。當前,計算機硬件的計算能力呈指數形式的增長速度已經使交互式的實時光線跟蹤成為可能。越來越多的研究開始關注光線跟蹤的實時計算,已經出現了一些優秀的研究成果。然而,盡管這些研究很多都是基于GPU架構設計的,但這些實現仍然未能充分利用當前GPU強大的并行計算能力。近年來已經出現了一些基于GPU實現的編程方法,例如NVIDIA公司的CUDA(ComputeUnifiedDeviceArchitecture)編程模型、蘋果公司的OpenCL,以及一些底層的框架結構。這些模型允許程序員自己定義合適的數據結構,為編程提供很大的靈活性和可操作性,包括創建、調度、同步等線程管理操作可以完全由硬件來完成。例如在CUDA編程模型里,我們可以根據程序的并行特征將程序劃分成幾個順序執行的被稱為kernel的代碼段,使其在GPU中執行。為了有效地管理大量的線程,kernel使用標量形式的SIMT(SingleInstruction,MultipleThread)操作,線程以一種被稱作warps的分組形式根據kernel中的指令來執行。程序員將線程組織成線程塊(block),這些線程塊本質上可以看成是虛擬的SM多處理器,擁有獨立的寄存器和共享內存(sharedmemory),各線程塊間相對獨立的亂序執行。為了獲得GPU的最大計算性能,有兩個問題需要考慮第一,每個線程應該使用盡量少的硬件寄存器和存儲資源,以保證GPU內部同一時刻運行更多的活動線程,Popov等的光線跟蹤實現消耗了過多的寄存器,導致GPU利用率還不到33%;第二,線程的SIMD(SingleInstruction,MultipleData)操作對程序員來說是透明的,而SIMD的操作方式對程序的分支執行非常敏感,同一warp的線程只有執行程序的同一分支才能獲得最大效益。最近,一些研究開始關注動態場景下的光線跟蹤方法。在光線跟蹤算法中,構造加速結構是其中重要的一步,通過將面片重新進行組織,可以大大減少無效的光線遍歷操作和相交操作。由于動態場景下物體間的拓撲結構會發生改變,甚至物體本身都會發生形變,因此,每一幀都需要重新對加速結構進行重構。然而,加速結構的構造是一個比較耗時的操作,通常無法在繪制一幀的時間內完成,這也是導致當前基于動態場景的實時光線跟蹤研究進展較慢的主要原因。kd樹可以提供較好的光線跟蹤性能,但是其昂貴的構造時間已滿足不了實時光線跟蹤的要求;網格結構易于構建,但是其光線跟蹤的性能嚴重依賴于操作的相似性,而這往往在復雜場景或者二級光線中是不存在的。鑒于光線跟蹤性能以及處理復雜場景和二級光線各方面的綜合要求,在處理動態場景問題上,BVH(BoundingVolumeHierarchy)看起來是一個折中的選擇,與kd樹、網格結構按照空間的分割方法不同,BVH是一個按照物體分割的場景層次分割結構。設計出一種高質量的快速的加速結構構造方法,使其可以充分利用多核處理器強大的并行處理能力,從而使加速結構建造速度進一步加快,滿足實時性的要求,是一個光線跟蹤算法能否有效執行的關鍵。目前公認的性能較好的加速結構一般都是一種層次結構,如BVH(BoundingVolumeHierarchies)>BSP(BinarySpacePartitioning)、BIH(BoundingIntervalHierarchies)、八叉樹(Octree)等結構。然而層次結構自上而下的構造方式使其很難在構造階段初期充分的利用多核架構中每個核的計算能力,從而造成硬件的低效使用。已經有一些工作關注于在多核體系下對加速結構的使用。MacDonald等提出了SAH(surfaceareaheuristic)策略,Wald和Popov分別提出了針對這一策略設計的優化的構造方法。最近也出現了一些針對并行構造方面的工作,Popov用帶有幾個核的CPU去構造kd樹,但由于帶寬有限,取得的性能提升并不明顯,Shevtsov同樣用帶有幾個核的CPU去構造kd樹,盡管取得了不錯的性能,但他的這種算法不能擴展到更多的核進行處理。當前,隨著硬件并行計算能力的增強,CUDA這樣的編程平臺也開始成熟,因此,應該重新考慮加速結構的設計。
發明內容本發明提供一種基于GPU的層次包圍盒(bvh)并行構建方法,可有效利用硬件的并行計算能力,提高加速結構的構造速度和質量。一種基于GPU的層次包圍盒的快速構造方法,包括(1)將GPU的活動線程劃分為若干線程塊,通過構建層次包圍盒(BVH),對模型空間中的場景數據逐層進行劃分,直至達到預定的層數,其中GPU內部所有的線程塊同時參與同一個場景節點的劃分;劃分時在需要進行渲染的模型空間的三個坐標軸上(相互垂直的X軸、Y軸和Z軸),分別計算采樣分割點的SAH(surfaceareaheuristic)花費(MacDonald等在文獻"Heuristicsforraytracingusingspacesubdivision.VisualComputer,1990.,,中提出的評估加速結構最優分割點的方法,如公式(a)所示),然后選取三個坐標軸中花費最小的分割點,將選取的這個分割點作為分割平面,對模型空間中的場景數據進行劃分。將整個場景所形成的包圍盒作為根節點,第一次劃分可以得到兩個子節點,然后以同樣的方法,按照寬度優先的方式遞歸這個構造過程,逐層進行劃分,直至構造的層數達到設定值,即此構造的層數是預先設定好的,一般為5層。這種構造方式可以在層次包圍盒構造初期,快速對場景節點進行分割,從而迅速產生出大量數據供成千上萬的GPU線程使用,使它們一直保持滿負荷工作狀態。我們使用公式(a)來計算每個潛在的分割點,另外我們還需要知道每個子結點所含面片數及其表面積。Wald等[15][19]通過使用排序來計算這些數量,為了避免昂貴的排序操作,我們使用bin方法[20]以減少帶寬的使用。隨著構造層次的加深,處理核所要處理的數據明顯減少,使計算SAH花費的時間更短,從而使建造速度更快。采樣分割點的SAH花費<formula>formulaseeoriginaldocumentpage5</formula>(a)這里,ni和r^分別代表與當前采樣分割點相鄰的左、右子節點所含的面片數量,SA(N1),SA(Nr)分別表示與當前采樣分割點相鄰的左、右子節點的表面積,SA(N)表示當前采樣分割點的父節點的表面積(沒有父節點時取0),Kt表示對當前采樣分割點的父節點進行遍歷所產生的花費(沒有父節點時取0),&表示對當前采樣分割點進行相交操作所產生的花費。Kt和&的含義是計算機硬件處理遍歷或相交操作耗費的時間,Kt和&的絕對值可以人為設定,例如可以設定Kt=10,Kt=20;說明相交操作的花費大于遍歷操作的花費,但10、20并不一定要求表示真實的處理時間,僅表示兩者的相對關系。所述的遍歷或相交操作均可以是現有技術,本發明的重點在于層次包圍盒結構的并行構建。我們選取最優的分割點,使在這個點上所得到的SAH花費CP最小,或者如果&n花銷更小,這時n=ni+nr,n為當前節點所含面片數量。在進行SAH計算時,假設要在每個坐標軸上取p個采樣分割點,那么為了計算花費最小的最優分割點,我們在三個維度上一共要進行3p次計算,由于這些計算只是用同樣的操作對不同的數據進行處理,因此我們完全可以通過處理核的SIMD處理能力將這些操作并行處理。最后,當這些分割點計算都完成時,我們可以使用歸約操作(reduction)找出具有最低花銷的分割點。(2)每個線程塊分別參與不同的場景節點的劃分,直至劃分到每個節點所含面片數不多于每個線程塊內線程的數量。而每個線程塊內線程的數量也是在步驟(1)中線程塊的劃分時已經設定的。(3)線程塊中的每個線程分別參與不同的場景節點的劃分,直至劃分到每個節點所含面片數不多于5個,最終產生葉子節點。由于涉及到多個線程塊或線程同時進行分割工作并產生結果,在步驟(2)和步驟(3)中劃分場景數據的具體步驟如下a)在存儲區域中建立兩個隊列(第一隊列和第二隊列),分別存放用來存放等待進行劃分的場景節點;b)當GPU存在空閑線程塊或線程時,從第一隊列中依次取等待進行劃分的場景節點進行劃分,并將產生的新的場景節點放入第二隊列;其中對第一隊列中編號為k的場景節點進行劃分所產生的新的場景節點在第二隊列中的編號分別為2Xk+t(t=0,1);場景節點在隊列中的編號也對應了該場景節點在存儲區域中的位置。c)當第一隊列中等待進行劃分的場景節點處理完畢后,清空第一隊列中的所有節點數據;當GPU存在空閑線程塊或線程時,從第二隊列中依次取等待進行劃分的場景節點進行劃分,并將產生的新的場景節點放入第一隊列,直至第二隊列中等待進行劃分的場景節點都處理完畢。其中對第二隊列中編號為j的場景節點進行劃分所產生的新的場景節點在第一隊列中的編號分別為2Xj+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花費的時間更短,從而使建造速度更快。Cp=Kt+為[niSA(N丨)+nrSA(Nr)],(1)6這里,ni和n,分別代表相應左右子節點所含的面片數量;SA(N1)、SA(Nr)分別表示與當前采樣分割點相鄰的左、右子節點的表面積,SA(N)表示當前采樣分割點的父節點的表面積,KT表示對當前采樣分割點的父節點進行遍歷所產生的花費,KI表示對當前采樣分割點進行相交操作所產生的花費。我們選取最優的分割點,使在這個點上所得到的SAH花費CP最小,或者如果!^!!花銷更小,這時n=ni+rvn為當前節點所含面片數量。在使用SAH策略對結點進行分割計算時,我們使用SIMD多線程方式將這一操作并行化。在進行SAH計算時,假設要在每個坐標軸上取P個采樣分割點,那么為了計算花費最小的最優分割點,我們在三個維度上一共要進行3p次計算,由于這些計算只是用同樣的操作對不同的數據進行處理,因此我們完全可以通過處理核的SIMD處理能力將這些操作并行處理。最后,當這些分割點計算都完成時,可以使用歸約操作(reduction)找出具有最低花銷的分割點。一般中等場景的面片數為幾十萬甚至上百萬,這意味著在BVH結構構造初期,我們需要進行大量的采樣點計算,當前的GPU架構可以允許上萬個線程同時進行計算,保證了這些采樣點的快速并行計算。然而,隨著BVH構造層次的加深,新結點所含面片數逐漸減少,在處理每一個結點時,可能無法找到足夠多的采樣點提供給GPU線程,從而造成GPU計算資源的浪費。因此,在BVH結構構造中期,選擇另外一種計算方式。在當前的GPU架構中,程序員將線程組織成線程塊(block),本質上可以看作是虛擬的SM多處理器,擁有獨立的寄存器和共享內存(sharedmemory),各線程塊間相對獨立的亂序執行。在我們新的計算方法里,我們使用一個線程塊block去處理一個結點,同時將處理后的結果放入全局存儲區(globalmemory)。盡管訪問全局存儲區會產生較大的延遲,但是多線程切換機制可以使得這種延遲所帶來的損失降到最低。若顯卡中有N個SM多處理器,我們規定,當BVH結構構造到log2N時,算法執行將會切換到這種新的計算模式下。在NVIDIA公司性能相對較好的GTX285顯卡中,一共有30個SM多處理器,因此在實現中我們選擇在BVH結構的第五層切換到這種新的計算方式下。在自上而下的構造過程中,每個結點按規則分割成兩個新的結點,由于這些分割工作可以獨立進行而不依賴其它結點,因此我們完全可以將這些結點的分割工作分給多個核同時進行處理,以加快構造速度,同時可以通過分割任務的切換來隱藏訪存的延遲。我們可以設置一個隊列用來存放等待進行分割計算的結點,這樣當一個處理核完成了一個結點的分割計算以后可以立刻從這個隊列里獲得新的工作,同時也將剛產生的欲分割結點放入隊列。由于涉及到多個線程塊同時進行分割工作并產生結果,而當前的GPU架構還不支持存儲一致性,為了避免使用鎖機制帶來的同步開銷,我們設置兩個隊列來記錄這些位置,具體步驟如下a)在存儲區域中建立兩個隊列(第一隊列和第二隊列),分別存放用來存放等待進行劃分的場景節點;b)當GPU存在空閑線程塊時,從第一隊列中依次取等待進行劃分的場景節點進行劃分,并將產生的新的場景節點放入第二隊列;其中對第一隊列中編號為k的場景節點進行劃分所產生的新的場景節點在第二隊列中的編號分別為2Xk+t(t=0,1);場景節點在隊列中的編號也對應了該場景節點在存儲區域中的位置。c)當第一隊列中等待進行劃分的場景節點處理完畢后,清空第一隊列中的所有節點數據;當GPU存在空閑線程塊時,從第二隊列中依次取等待進行劃分的場景節點進行劃分,并將產生的新的場景節點放入第一隊列,直至第二隊列中等待進行劃分的場景節點都處理完畢。其中對第二隊列中編號為j的場景節點進行劃分所產生的新的場景節點在第一隊列中的編號分別為2Xj+t(t=0,1);場景節點在隊列中的編號也對應了該場景節點在存儲區域中的位置。d)循環步驟b)、步驟c),直至完成相應的場景節點的劃分。當每個隊列中等待進行劃分的場景節點劃分完畢后,通過硬件支持的緊湊操作(compaction)清除對該隊列中的空場景節點。至于t的具體取值我們可以在block內速度更快的共享存儲區(sharedmemory)里計算。在當前層次的子結點全部計算完畢后,我們使用壓縮操作(compaction)將空結點去掉,形成新的父結點隊列。在BVH結構構造中期,我們使用一個線程塊block去處理一個BVH結點,考慮到有限的寄存器資源和存儲資源,為了使活動線程塊數達到最優,我們在實現時將每個線程塊的線程數設置為256個,這256個線程并行計算采樣點的SAH花費,直至所有的采樣點計算完畢,同時將結果存入共享存儲區,最后判斷出花費最低的分割位置。然而,隨著BVH結構構造層次的繼續加深,BVH結構每個結點所含的面片數越來越少,甚至少于一個線程塊的線程數,這樣將會再一次出現計算資源閑置的情況。因此,為了能夠充分利用GPU計算資源,在BVH結構構造后期,當結點所含面片數低于某一閾值時,我們再次切換新的計算方式。在實現時,我們將閾值設置為線程塊所含的線程數目,在本實驗條件下,即為256。在BVH結構構造后期,GPU中的每一個線程不再只是計算某個結點其中的一個采樣點的SAH花費,而是要處理整個結點的分割,也就是說這個線程要逐個計算結點中各采樣點的SAH花費,然后選取最優的采樣點作為該結點的分割位置。需要說明的是,由于目前的CUDA編程模型還不支持同一時間內運行多個kernel計算任務,因此我們上述的BVH結構在構造初期、中期、后期所對應的算法不會同時執行,它們的執行關系是互斥而又相互依賴的。為了保證每個線程的計算量大致相同,而不至于出現由于任務量負載不均而出現線程等待的情況,我們仍然采用寬度優先的處理方式,按層次依次處理各個結點,線程塊中的每個線程分別參與不同的場景節點的劃分,直至劃分到每個節點所含面片數不多于5個,最終產生葉子節點。另外,我們也同樣采用在構造中期時使用的雙隊列形式來分別記錄父子結點信息,以避免使用鎖機制帶來的同步開銷。選擇一臺配有一顆IntelXeon3.7GHz的4核CPU,一顆NvidiaGTX285(1G顯存)的PC來實現我們的這個算法。我們使用Nvidia公司的CUDA編程框架,其為GPU計算提供了一個通用的C編程接口,方便編程者使用一些新的硬件特性。選擇具有不同幾何復雜度的動態場景,Toys,Ben,Fairy,每個測試場景的分辨率為1024*1024,所以測試都包括了紋理、著色以及陰影部分。為了驗證本BVH結構的構造速度和質量,首先,我們從構造時間、繪制幀率兩個方面,與在CPU上使用SIMD指令構造BVH結構并使用基于SIMD的光線包(光線包大小為2*2)進行光線跟蹤計算的算法進行對比,8如表1所示,所有場景都是在一個點光源下繪制的。表1<table>tableseeoriginaldocumentpage9</column></row><table>Fairy場景在加速結構構造時間⑶、幀率(FPS)以及SAH上的性能比較。可以看出,基于GPU實現的BVH結構并行構建算法,相比基于CPU實現的BVH結構構造算法,在構造時間上獲得了近10倍的性能提升,在此基礎上實現的繪制性能也獲得近一倍的提升,尤其是對復雜場景表現了更為突出的性能,如Fairy場景,在繪制幀率上取得了近10倍的提升。需要指出的是,所有的測試場景均為動態場景,由實驗結果可見,本發明方法大大縮短了加速結構的構造時間,滿足了動態場景對加速結構的實時構建要求,進而達到了對動態場景進行實時光線跟蹤的要求。同時,本發明還列出了所構造的BVH結構的SAH花費,可見本發明方法所生成的BVH結構的質量與CPU下由SIMD指令生成的BVH結構的質量相近,也就是說本發明方法在獲得更短構造時間的同時并沒有降低所構造的BVH結構的質量。為了進一步驗證本發明方法對硬件的并行使用能力,我們記錄了在構造BVH結構時標量處理器的利用率,其直接反映了本BVH結構的構造方法能否有效使用硬件上的并行計算單元。注意,我們沒有使用ALU的使用情況作為這個實驗的測試標準,因為有些時候即便線程槽已被占用,但ALU也可能因為訪存延遲或者SIMD的低利用率而未被完全使用。我們將本方法與Gimther等的BVH構造方法作比較,在BVH結構構造初期,本發明方法的優勢并不明顯,如圖1所示(圖中的文獻[1]為(GtfNTHER,J.,POPOV,S.,SEIDEL,H.-P.,ANDSLUSALLEK,P.2007.RealtimeRayTracingonGPUwithBVH-basedPacketTraversal.InProceedingsoftheIEEE/EurographicsSymposiumonInteractiveRayTracing,113"U-118,2007.)o隨著構造層次的加深,Gimther等的方法對GPU的有效利用率成超線性降低;而本發明方法則根據不同的構造時期呈現波段性變化,由圖可見,當構造BVH結構的第5層時,GPU利用率陡然提高,這是因為構造算法切換到了構造中期的構造方式,此后GPU利用率穩中略降;當構造BVH結構的第22層時,GPU利用率再一次陡然提高,這是因為構造算法切換到了構造后期的構造方式。總之,本發明方法能夠保證在BVH結構在構造期間對GPU計算單元保持著較高的有效利用率。為了說明處理器處理核數對本算法在性能上的影響,做了如圖2的實驗,通過控制在GPU上使用的處理器核數,我們分別列舉了Toys,Ben,Fairy場景在不同處理器核數的條件下其加速結構的構造時間。由圖可見,本發明方法對不同的處理核數表現了良好的可擴展性,隨著處理核數的不斷增加,所有測試場景的加速結構的構造時間均明顯減少;尤其是對于復雜場景的加速結構,處理核數的數量對構造時間的影響差別較大,說明本發明方法更適合復雜場景下加速結構的構造。權利要求一種基于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花費,然后選取三個坐標軸中花費最小的分割點,將選取的這個分割點作為分割平面。全文摘要本發明公開了一種基于GPU的層次包圍盒快速構造方法,包括(1)將GPU的活動線程劃分為若干線程塊,通過構建層次包圍盒對模型空間中的場景數據逐級進行劃分,直至達到預定的級數,其中所有的線程塊同時參與同一個場景節點的劃分;(2)每個線程塊分別參與不同的場景節點的劃分,直至劃分到每個節點所含面片數不多于每個線程塊內的線程數;(3)每個線程分別參與不同的場景節點的劃分,直至劃分到每個節點所含面片數不多于5個。本發明方法可有效利用硬件的并行計算能力,提高加速結構的構造速度和質量。文檔編號G06T11/00GK101819675SQ201010150510公開日2010年9月1日申請日期2010年4月19日優先權日2010年4月19日發明者楊鑫,許端清,趙磊申請人:浙江大學