基于GPU交互式光線跟蹤算法的設計與實現_第1頁
基于GPU交互式光線跟蹤算法的設計與實現_第2頁
基于GPU交互式光線跟蹤算法的設計與實現_第3頁
基于GPU交互式光線跟蹤算法的設計與實現_第4頁
基于GPU交互式光線跟蹤算法的設計與實現_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第7卷第3期2009年9月南京T程學院學報(自然科學版)JImmaIofV01.7,No.3FAilion)Sep.,2009Naminghr*litute?訂1h‘hn.h唱,y(Naturals‘‘iem。c文章編號:1672—2558(2009)03—0061—07基于GPU交互式光線跟蹤算法的設計與實現陸建勇1,曹雪虹2,焦良葆2(1.南京郵電大學通信與信息工程學院,江蘇2.南京工程學院通信工程學院,江蘇南京,210003;1南京,21167)摘要:由于(;Pu并行處理能力和可編程能力的提高,計算量巨大的光線跟蹤算法在(;Pu上的實現成為研究熱點.在CUDA平臺上驗證了Foley等人所采用的KD—tree加速算法,實現了交互式光線跟蹤.在圖像分辨率為512X512,跟蹤深度為4時,針對復雜場景的渲染速度達到15f/s,基本實現交互式光線跟蹤.關鍵詞:并行計算;GPU;光線跟蹤;KD-tree;流計算中圖分類號:TN91l文獻標識碼:ADesignandImplementationofInteractiveRayTracingAlgorithmBasedonGPULUJian-yon91,CAOXue?hon92,JIAOLiang—ba02(1.SchoolofTelecommunicationandInformationEngineering,Nanjing210003,China;UniversityofPostsandTelecommunications,Na-jing2.SchoolofCommunicationEngineering,NanjinInstituteofTechnology,Nanjing211167,China)Abstract:ThanksalgorithmonontotheimprovementsofparallelacomputationpowerandprogrammingabilitiesofGPU,raystructure,atracingGPUhasbecomeheatedareaofresearch.UsingtheKD—treedatamodelsystemisconstructedCUDAplatformandparallelprocessingofraytracingisachieved.Interactiveraytracingancanbeachievedwhenimageresolutionratiois512X512,thetracingdepth4andinteractiverenderingrate15f/s.Keywords:parallelcomputing;GPU;mytracing;KD—tree;streamcomputing光線跟蹤是一種真實感繪制算法,利用光路可逆原理,通過逆向跟蹤光線,生成栩栩如生漂亮非凡的圖像.光線跟蹤算法需要跟蹤每條從視點出發(fā)的光線,其巾涉及到大量的求交測試運算,計算量非常龐大,因此這一技術基本是離線處理.隨著光線跟蹤開始最大程度地利用CPU技術的最新進步成果,通過硬件的支持來實現真實感圖形的顯示,能達到實時交互的速率.目前,提高光線跟蹤算法速度的關鍵在于提高求交的效率、減少求交的次數、減少光線條數以及采用加速的數據結構等11。】.近年來,隨著GPU在并行計算能力、存儲容量和可編程能力方面的發(fā)展,在GPU上實現交互式光線跟蹤,甚至實時光線跟蹤成為研究熱點H。J.本文驗證了Foley等人所采用的KD—tree加速算法№].實驗結果達到了交互式光線跟蹤的效果.收稿日期:2009—09—02;修回日期:2009—12—01基金項目:西f】子巾圍研究院資助項目;南京T程學院科研基金項目(KXJ081M2)作者簡介:陸建勇(1984一),男,碩十研究生.研究方向為信號與信息處理.E?llfllai?。海桑辏瑁幔溃保叮常悖铮颍钊f方數據62南京工程學院學報(自然科學版)2009年9月1相關工作Whitted在文獻[7]中指出,渲染方程的計算時間中,大于95%的時間花費在光線與幾何體求交計算的代碼中.這就意味著光線跟蹤算法中,幾乎所有的計算都發(fā)生在求交中,而從著色函數中調用跟蹤光線函數能夠以任意順序進行,都不會影響最終的結果.因此,光線跟蹤的一個重要的特性就是計算光線與幾何體求交能以并行的方式執(zhí)行.另外,Wald在文獻[8]中指出,原則上,隨著能夠執(zhí)行首次光線計算的處理器的增加,速度上的提升將隨著所使用的CPU的數量呈線性增長.因此,GPU上實現光線跟蹤能大幅度提高運算速度.Purcell【93和Carr【l剛等人幾乎同時提出來第一個由GPU實現的光線跟蹤算法框架.Purcell等人提出的光線跟蹤算法將所有的光線跟蹤內核都建立在GPU之上,包括視線產生器、遍歷器、求交器和著色器.而Carr等人僅僅把GPU作為一個光線和三角片求交器,將其它的光線跟蹤工作留給CPU.這兩種方法的不同之處在于,Purcell把光線跟蹤的所有處理過稗都在GPU上完成,而Carr等人把光線跟蹤的不同工作分別交由CPU和GPU處理,所以前者能夠消除岡為CPU與GPU之間頻繁的數據傳輸帶來的損失,但這種方法會使GPU大量處于空閑階段.Cart等人的方法能夠獲得更高的GPU使用率,因為光線在被發(fā)送到GPU之前,已經提前在CPU上被處理成束,所以內在的就已經獲得了光線的一致性,但是這種方法會由于CPU—GPU之間大量的數據傳輸而帶來性能上的損失.為了提高光線和場景的求交速度,對于CPU提出了很多的加速結構.最近,很多這種加速結構己經被引入到GPU上,常用的三種加速結構為:均勻柵格(UniformGrid),KD.tree和包闈體層次(BVH).均勻柵格是在基于GPU光線跟蹤算法中第一個被使用的加速結構,因為這種結構無論是在構造還是在遍歷上都非常的簡單,Christen,Karlsson,Ljungstedt等人都用這種加速結構作為基于GPU的光線跟蹤算法的加速結構.但是它的性能同CPU上的實現相比要差.KD—tree被認為是CPU上對于光線跟蹤算法而言最快的加速結構,但是GPU卻缺少實現這個樹的遍歷的堆棧結構.Foley等人【61提出了一個能夠在GPU上實現的KD—tree,并且指出KD—tree的性能超過均勻柵格.斯坦福大學Daniel等人…’在Foley研究的基礎上進行了改進,采用了Packets、Push—Down和shon.Stack,進一步提升了光線跟蹤器的性能.Thrane等人¨21提出了GPU上的第一個BVH實現.2GPU編程架構簡介Nvidia公司針對GPU的通用運算,提出的GPU與CUDA(ComputeUnifiedDeviceArchitecture,計算統(tǒng)~設備體系結構)相結合進行并行運算的方法,可以通過片上(On—chip)上百個處理器同步協作,從而快速解決復雜的運算問題‘‘3】.CUDA是把GPU作為并行運算設備進行程序發(fā)布和管理運算,不需要將計算映射到圖形應用程序接口的硬件和軟件的架構.為了實現這一功能,CUDA定義了相應的邏輯架構,并于GPU設備相對應,如圖l所示.其中,Thread是最小的邏輯運算單位,多個Thread組成Block.這些Thread可以處理相同或不同的運算過程,每個Thread在Block中有唯一的標識符,通過標識符在程序中進行判斷,就可以讓某個或某些特定位置的數據得到相同或不同的運算處理.萬方數據第7卷第3期陸建勇,等:基于GPU交互式光線跟蹤算法的設計與實現圖lCUDA邏輯架構及其與設備內存的對應關系3算法設計3.1架構實驗采用如圖2所示的程序架構.為避免CPU和GPU之間的內存倒換,在場景構建中將讀人的紋理貼圖數據以及光線的參數和加速結構(KD.tree)這些數據寫入到紋理內存.然后,將這些數據作為渲染引擎的輸入.渲染引擎的主要工作流程如圖2右邊框圖所示,包括光線求交、判斷光源可見、計算光強貢獻以及生成次級光線后再次進行光線求交等,最終通過openGL生成效果圖.場景構建,ill構建KI)樹紋理拷貝光線生成.ll1./渲染引擎\上\openGL硅爪圖2基于GPU的光線跟蹤算法流程圖1)光線的生成.在進行光線跟蹤渲染時,首先要確定視點、觀察方向和視角,并由此確定生成的圖像平面,如圖3(a)所示.當確定了圖像平面后,根據圖像分辨率確定像素位置,從而得到初始光線,開始進行渲染.本文的初始視點位置、觀察方向由程序輸入;視角選?。叮罚常福啊W鳛槿笔≈?,視點距離圖像平面的距離為l,其余的兩個數值符合三角關系xdirectionlength:0.5。tanf羋1rightl.ength、二,根據視點位置、觀察方向、視角和圖像分辨率,可以確定像平面上每個像素點的位置,再根據視點位置,可以確定每條初始光線的方向,從而確定初始光線,如圖3(b)所示.2)光線求交.光線牛成后,便使光線在KD—tree巾搜索最近的相交i角片,求出交點坐標及光線參數t.萬方數據南京T程學院學報(自然科學版)2009年9月(a)視點、觀察方向和像平面(”光線及其參數(f為參數)圖3光線的生成3)判斷光源可見性.陰影效果在真實感圖像的生成和物體位置判斷方面是一個非常重要的元素,光線跟蹤可以自動生成陰影效果.當確定光線和i角面的交點后,在光源與交點之問生成探測光線,并利用KD—tree的求交方法,判斷在交點和光源之間是否有物體遮擋,如有遮擋,則光源對該像素點的色彩無直接貢獻,否則在計算像素色彩時,需要考慮光源的貢獻.由于對光源貢獻的不同處理,最終渲染的效果自動出現陰影.4)計算光強貢獻.像素點的色彩由光線與場景中物體的交點處材質的漫反射分量、鏡面反射分量和環(huán)境分量組成.光線每反射一次便需計算一次交點處的顏色值,這樣經過多次反射后,像素點最終色彩便是多次采樣值的累加.3.2KD.tree加速結構KD—tree是一種空間剖分結構,用一棵二叉樹將場景表示為一個層次結構,以便于光線快速與j角片求交.KD—tree算法主要包括KD—tree的構建和KD—tree的遍歷.3.2.1KD.tree的構建一個KD—tree的創(chuàng)建過程是一個自頂向下的遞歸的過程:1)輸入整個場景的三角片集合及包圍盒;2)將整個場景的所有i角片進行預處理,包括預先提取和排序,為每個三角片建立AABB(AxisAlignedBoundingBox即軸對稱綁定盒);3)月j遞歸的方法從t:N下構建KD.tree(重)選擇分割平面,通過計算最小代價函數,用SAH找到最佳分割面;②用最佳分割面平面進行空間分割;③將圖元對象分配給左、右子節(jié)點.這個遞歸過程不斷進行,直到達到選擇的最大的深度值,或者在一個節(jié)點巾的三角形的數量小于給定的閾值.Harvan【14’等人對基于CPU的光線跟蹤算法的加速結構進行了比較,得…的結論是對于眾多不同類型的測試場景,平均而青,KD—tree是最快的.Harvan還指出,當KD—tree的最大深度為16、包含的最小的三角形數量等于2的時候,性能最優(yōu).從上述過程可以看f}{,在構建KD.tree的過程巾,如何選取分割平面的位置對KD.tree的遍歷時間有很大影響.MacDonald提出了基于表面積的最小代價函數來評價分割平面的SAH算法¨5|,其基本思想是一條光線同一個子節(jié)點相交的概率,與子節(jié)點中的表面積和父親節(jié)點中的表面積之比成正比.使朋的代價函數為萬方數據第7卷第3期陸建勇,等:基于GPU交互式光線跟蹤算法的設計與實現C=c-tray+prob(hitL)×cost(L)+prob(hitR)×cost(R)=c?tray+SA(L)×TriCount(L)+SA(R)×TriCount(R)3.2.2KD-tree的遍歷KD—tree的遍歷就是光線在KD.tree中搜索最近的相交的三角片,見圖4,算法的過程為:1)初始化,對于每條光線,在光線同場景中的包圍體相交的地方,找出參數范圍[tmin,tmax];2)從根節(jié)點開始求交,并求出光線在該根包圍盒的全局跨度區(qū)間[scene—min,scene—max];3)如果是中間節(jié)點,則通過分割片面將跨度區(qū)間分為[t—min,t—split]和[t—split,t—max]兩部分;4)如果光線的跨度區(qū)間橫跨分割片面的兩側,說明該光線同時穿過兩個子包圍盒,則先和第一個子節(jié)點求交,并將第二個子節(jié)點壓人堆棧;5)否則,光線和相交的子節(jié)點求交;6)如果該節(jié)點是葉子節(jié)點,光線和該葉子節(jié)點中的所有三角片求交,如果相交則返回交點坐標和光線參數t;7)否則,將堆棧中的子節(jié)點彈出,返回2).scenerain圖4KD—tree的遍歷4實驗結果及分析對3個復雜的場景進行渲染:Robots、LivingRoom和Kitchen,如圖5所示.實驗環(huán)境為:1)GPU卡采用Nivida公司的Geforce=4;3)光源數為點光源1個.GTX260;2)每根光線的計算強度為光線遍歷深度圖5LivingRoom、Robots和Kitchen渲染場景萬方數據南京工程學院學報(自然科學版)2009年9月本文所指GPU上繪制速度,即并行算法所用的渲染時間,包括了初始光線在KD.tree上的求交時間、次級光線的計算時間開銷、各次級光線的求交時間、初級及各次級光線交點的光源可見性判斷開銷、初級及各次級光線交點的色彩計算時間開銷、各交點的紋理貼圖的時間等;而Daniel的并行算法中只包含求交運算的時間,因此,本項目并行算法的實際求交速度要大于48.0Mrays/s.具體繪制速度見表l,算法效率比較見表2.表1不同分辨率、不同場景下光線跟蹤繪制速度表2算法并行效率比較每秒計算的光線數GPU跟蹤器Kitchen(Mmys/s)Robots5結語在Foley等人提出的KD-tree算法的基礎上,通過對光線跟蹤并行粒度的分析和設計。在GPU上實現了交互式光線跟蹤算法.在Geforce前,在l024×lGTX260上,圖像分辨率為512×512時場景處理速度約為15£/s.目024分辨率上尚未能達到實時交互的要求,主要瓶頸在于GPU與CPU之間的數據通信.這需要對算法進行進一步的改進和并行粒度的優(yōu)化設計.參考文獻:[1]ANDREWSG.AnIntroductiontoRayTracing[M].London:AcademicrenderingusingPressLid.,1989.[2]BRUCEW,GEORGED,STEVENP.Interactivetherendercache[c]//ACMInternationalConferenceProceeding:10.Aire—la—Ville:Eure目mphicsAssociation.1999:235—2.46.[3】BRUCEW。GEORGED,DONALDPG.EnhancingandAire—la-Ville:EurographiesAssociation.2002:37—42.optimizingtherendercache[c]//ACMInternationalConferencePraceeding:28.[4]STEVENP。MICHAELP.InteractivePayTracingforLargeVolumeVisualization[c]//IEEETransactionsoncomputergraphicsandvisual.ization。2003.5:1—13.[5]INGOW.Real-timeRayTracingandInteractiveGlobalIllumination[D].Sarrland:SaarlandUniversity,2004.[6]FOLEYT,SUGERMANJ.KD.treeaccelerationstructuresfor8GPUraytracer[c]//ProceedingsoftheACMSIGGRAPH/EURO.GRAPHICSconferenceonGraphicshaldwal℃.NewYork:ACMPre∞.2005:15-22.modelfor[7】TURNERW.Animprovedilluminationshadeddisplay[J].CommunACM,1980,23(6):343—349.萬方數據第7卷第3期陸建勇,等:基于GPU交互式光線跟蹤算法的設計與實現67[8】INGOW,CARSTENB.Interactiverenderingwithcoherentmytracing[J].ComputerGraphicsFonnn。2001,20(3):153—164.[9】TIMOTHYJP,IANB,WILLIAMBM,eta1.RaytracingonprogrammablegraphicshuldwAl.e[J].ACMTmrmactionsonGrap

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論