999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于GPU加速的光線跟蹤技術(shù)研究

2007-01-01 00:00:00章圣潔王國榮王小平
計(jì)算機(jī)時(shí)代 2007年6期

摘要:隨著圖形處理器性能的提高及其可編程特性的發(fā)展,圖形處理流水線的某些處理階段和圖形算法逐漸從CPU向GPU轉(zhuǎn)移。文章介紹了可編程圖形硬件基礎(chǔ),分析了基于GPU的光線跟蹤技術(shù)的實(shí)現(xiàn)原理。設(shè)計(jì)的6個(gè)實(shí)驗(yàn)場景所包含的三角形面片數(shù),從2016個(gè)到60960個(gè)成復(fù)雜度遞增,在3種不同分辨率下,分別實(shí)現(xiàn)GPU和CPU的光線跟蹤繪制。對實(shí)驗(yàn)結(jié)果比較、分析后,得到了GPU加速的光線跟蹤技術(shù)的特點(diǎn)。

關(guān)鍵詞:圖形硬件;圖形處理器;可編程性;光線跟蹤

0 引言

光線跟蹤是一種圖像合成技術(shù),它通過模擬光線與物體表面的交點(diǎn)來實(shí)現(xiàn)圖像的繪制。目前的一些交互式光線跟蹤和全局光照的應(yīng)用都是基于超級計(jì)算機(jī)和PC機(jī)集群的。這類系統(tǒng)因其昂貴的價(jià)格嚴(yán)重阻礙了其發(fā)展與推廣。隨著圖形處理器(GPU)性能的大幅度提高以及可編程特性的發(fā)展,圖形處理流水線的某些處理階段和圖形算法逐漸從CPU向GPU轉(zhuǎn)移。GPU的體系結(jié)構(gòu)是一種高度并行的單指令多數(shù)據(jù)(singleInstruction Multiple Data,SIMD)指令執(zhí)行體系,其計(jì)算速度非常高。GPU的指令執(zhí)行方式和CPU不一樣,不能直接執(zhí)行在CPU中實(shí)現(xiàn)的算法。圖形硬件技術(shù)一個(gè)最主要的突破是引入了可編程功能,它允許用戶編制自定義的著色器程序(shaderProgram)來替換原來固定流水線中的某些功能模塊。結(jié)合當(dāng)前GPU特性,文中提出了一種高質(zhì)量的渲染方法,把光線跟蹤表示成一種流計(jì)算模式,把目前可編程的圖形處理器抽象成通用的流處理器,充分利用了GPU并行處理體系結(jié)構(gòu)的性能優(yōu)勢。

1 可編程圖形硬件基礎(chǔ)

圖形硬件的可編程能力允許用戶編寫特定的程序來取代固定的圖形管道。在圖形管道中,有兩個(gè)可編程單元:點(diǎn)處理單元和片元處理單元。點(diǎn)處理單元由點(diǎn)編程引擎(Vertex ProgramEngine)控制,片元處理單元由片元編程引擎(Fragment ProgramEngine)控制。每個(gè)單元可由用戶編寫的小程序來控制。這個(gè)小程序可用匯編語言或c語言(cg)編寫,是一組順序執(zhí)行的指令代碼。這組指令代碼通過圖形驅(qū)動(dòng)程序編譯,并在圖形硬件的相應(yīng)的編程引擎上執(zhí)行,從而取代固定圖形管道中相應(yīng)單元的功能。

1.1 點(diǎn)編程引擎

點(diǎn)編程引擎可實(shí)現(xiàn)完全控制點(diǎn)的轉(zhuǎn)換、光照計(jì)算、復(fù)雜的點(diǎn)操作,產(chǎn)生紋理坐標(biāo)、操作紋理矩陣等功能。這些實(shí)現(xiàn)都由圖形硬件來處理。用戶可用點(diǎn)編程引擎實(shí)現(xiàn)用戶定制的功能。當(dāng)點(diǎn)編程被允許時(shí),幾何數(shù)據(jù)流會由點(diǎn)程序來處理,繞過了固定的圖形管道。同時(shí),如果用點(diǎn)程序來處理點(diǎn)數(shù)據(jù)流,就必須處理所有要處理的功能。點(diǎn)程序由嚴(yán)格按順序執(zhí)行的SIMD指令組成,不能使用條件語句。點(diǎn)程序代碼越少,執(zhí)行越快。使用點(diǎn)程序的優(yōu)點(diǎn)有:比軟件實(shí)現(xiàn)快,一個(gè)優(yōu)化的光照模型的點(diǎn)程序要比固定圖形管道提供的光照模型要快。

1.2 片元編程引擎

固定圖形管道的片元處理單元用于定義紋理應(yīng)用、紋理環(huán)境、顏色疊加和霧化操作。正像點(diǎn)編程模型中提到的一樣,這個(gè)固定的處理不能給用戶提供更大的靈活性和擴(kuò)展性。可編程的片元處理單元提供了基于每個(gè)片元的靈活的計(jì)算。片元程序是一組順序執(zhí)行的指令代碼,它在像素被渲染時(shí)執(zhí)行。片元程序的指令和點(diǎn)程序的指令非常接近。片元程序不能像點(diǎn)程序那樣,單獨(dú)存在。片元程序在運(yùn)行的時(shí)候,必須有一個(gè)點(diǎn)程序被激活。

2 基于GPU的光線跟蹤實(shí)現(xiàn)

2.1 可編程圖形處理器抽象化

紋理內(nèi)存通常用于存儲場景中幾何體的紋理。光柵器產(chǎn)生的片元都有自己的紋理坐標(biāo)。這個(gè)紋理坐標(biāo)可作為包含顏色信息的二維內(nèi)存區(qū)域的索引。這個(gè)方法的一個(gè)主要限制是:從內(nèi)存中提取的地址沒法通過計(jì)算獲得,它僅是一個(gè)被光柵化了的幾何體屬性。

為了解決這個(gè)問題,本文使用圖形處理器中新增加的功能——依賴紋理查找。依賴紋理訪問允許由片元程序計(jì)算從紋理內(nèi)存中要提取的地址。同時(shí),它允許紋理查找的結(jié)果用于其它內(nèi)存地址的計(jì)算。圖形處理器性能的增強(qiáng),使得在單渲染通道能夠?qū)崿F(xiàn)反射、凹凸映射等效果。

通過依賴紋理查找,能把紋理內(nèi)存子系統(tǒng)作為一個(gè)通用的只讀內(nèi)存來使用,以便在圖形硬件上實(shí)現(xiàn)通用計(jì)算。圖形處理器的這個(gè)功能使得可在GPU上實(shí)現(xiàn)許多包含復(fù)雜數(shù)據(jù)結(jié)構(gòu)的算法,和實(shí)現(xiàn)查找這些復(fù)雜數(shù)據(jù)結(jié)構(gòu)中的元素。依賴紋理查找具體的實(shí)現(xiàn)方法如圖1所示。圖中顯示了一個(gè)簡單的三角形網(wǎng)格數(shù)據(jù)結(jié)構(gòu),其中to、t1、t2、t3分別表示4個(gè)不同的三角形面片,v0、v1、v2、v3、v4分別表示三角形面片的頂點(diǎn)坐標(biāo)。4個(gè)三角形網(wǎng)格使用兩個(gè)紋理分別存儲三角形的頂點(diǎn)編號和頂點(diǎn)坐標(biāo)。

每個(gè)三角形被存儲成一個(gè)RGB紋理單元,利用R、G、B通道保存每個(gè)三角形面片的頂點(diǎn)編號。三角形的頂點(diǎn)坐標(biāo)同樣分別用R、G、B通道存儲x、y、z分量。若想獲取一個(gè)三角形的3個(gè)頂點(diǎn)位置,只需完成4次依賴紋理提取:先從三角形紋理中提取頂點(diǎn)編號,后根據(jù)紋理中的R、G、B通道中編號,從頂點(diǎn)坐標(biāo)紋理中分別提取頂點(diǎn)的位置。

目前,圖形處理器不支持一維紋理,許多數(shù)據(jù)結(jié)構(gòu)超過了一維紋理的最大尺寸。本文使用二維紋理來實(shí)現(xiàn)紋理內(nèi)存的抽象。紋理內(nèi)存的簡單抽象能把復(fù)雜的數(shù)據(jù)結(jié)構(gòu)載入顯示內(nèi)存以及使用片元程序進(jìn)行處理。更重要的是,它使GPU上的紋理內(nèi)存可作為一個(gè)簡單的只讀內(nèi)存來使用。這是GPU作為一個(gè)通用處理器的關(guān)鍵所在。

用紋理內(nèi)存的抽象來遍歷網(wǎng)格加速結(jié)構(gòu)。每個(gè)網(wǎng)格單元包含一個(gè)指向這個(gè)網(wǎng)格單元中三角形列表的起始地址。若網(wǎng)格單元是空的,則用一個(gè)空指針表示。三角形列表用另外一個(gè)紋理表示,三角形列表中的每個(gè)實(shí)體是一個(gè)指向表示三角形的頂點(diǎn)數(shù)據(jù)集合的指針。三角形頂點(diǎn)存儲在3個(gè)獨(dú)立紋理的集合中。在系統(tǒng)實(shí)現(xiàn)過程中,每個(gè)三角形面片的頂點(diǎn)都是獨(dú)立存儲,不共享任何頂點(diǎn)數(shù)據(jù)。頂點(diǎn)法向量、頂點(diǎn)顏色等渲染數(shù)據(jù),頂點(diǎn)位置也是獨(dú)立存儲。紋理內(nèi)存作為存儲系統(tǒng)中不同內(nèi)核之間傳遞數(shù)據(jù)的流緩沖區(qū)使用。

2.2 基于流的光線跟蹤設(shè)計(jì)

實(shí)現(xiàn)基于流的光線跟蹤最大的難度是如何把光線跟蹤映射到設(shè)計(jì)的流計(jì)算模型中。GPU有很強(qiáng)的流處理能力,但在GPU上實(shí)現(xiàn)遞歸非常困難。本文把光線跟蹤細(xì)分成多個(gè)內(nèi)核,內(nèi)核通過數(shù)據(jù)流聯(lián)系在一起。以下將分析如何把光線跟蹤形式化為一個(gè)流計(jì)算。

不管是繪制靜態(tài)場景還是動(dòng)態(tài)場景,首先要確定光線跟蹤能夠處理的幾何體片元的類型,以及系統(tǒng)實(shí)現(xiàn)中所使用的加速結(jié)構(gòu)的類型。假設(shè)場景中所有幾何體都使用三角形表示。光線跟蹤能夠渲染由不同幾何體片元組成的場景,其中最適合的是三角形。因?yàn)閳D形硬件僅支持三角形渲染,其它表面形狀雖能使用,但在渲染之前它們都要被轉(zhuǎn)換成三角形。其次,建模程序和掃描軟件產(chǎn)生的模型都是由三角形網(wǎng)格組成的,當(dāng)只有一種簡單圖形單元被允許時(shí),光線跟蹤會顯得更加簡單有效。對于流計(jì)算來說,這些限制意味著所有的繪制可以被相同的內(nèi)核集來處理,這種方式簡化了系統(tǒng)的數(shù)據(jù)流。

為了實(shí)現(xiàn)基于流模式的光線跟蹤,把基于流實(shí)現(xiàn)的光線跟蹤細(xì)分成4個(gè)內(nèi)核,分別是:視光線產(chǎn)生器、網(wǎng)格遍歷、光線與三角形求交和渲染。如圖3所示,每個(gè)內(nèi)核的輸入顯示在盒子的左邊,內(nèi)核之間傳輸?shù)牧鲾?shù)據(jù)的類型由虛線所指的內(nèi)容表示。這種細(xì)分的方式在流編程模型中并不是強(qiáng)制性的,因?yàn)樵谀壳癎PU執(zhí)行的片元程序還缺乏分支功能(不過最新的Nvidia GeForce6800、Nvidia GeForce7800片元處理器已經(jīng)支持分支處理功能)。

視光線產(chǎn)生器內(nèi)核產(chǎn)生一束視光線流,每根視光線都和圖像中的某個(gè)像素相關(guān)聯(lián),以此形成光線向量集。網(wǎng)格遍歷內(nèi)核讀取由視光線產(chǎn)生器產(chǎn)生的光線流,然后作用光線,使光線一步一步地遍歷網(wǎng)格直到碰到一個(gè)包含三角形面片的體素,光線和體素對被輸出并傳遞到光線與三角形面片求交測試內(nèi)核里。

求交測試內(nèi)核主要負(fù)責(zé)測試該光線是否和體素中包含的三角形面片有交點(diǎn)。光線和體素對被求交測試器處理后有兩種輸出情況,若光線和體素包含的三角形面片相交,則交點(diǎn)所在的三角形面片被輸出到繪制階段;若光線與體素中包含的任何三角形面片都沒有交點(diǎn),則光線返回遍歷內(nèi)核并按照遍歷算法搜索下一個(gè)包含三角形面片的體素。

繪制內(nèi)核的功能主要是計(jì)算顏色值。如果一根光線終止在相交點(diǎn)上,那么把這個(gè)相交點(diǎn)的顏色值寫進(jìn)累加的圖像上。此外,繪制內(nèi)核可能產(chǎn)生陰影或次光線,這種情況下,將這些新產(chǎn)生的光線返回到遍歷階段,開始新的跟蹤。

3 實(shí)驗(yàn)結(jié)果與分析

實(shí)驗(yàn)?zāi)康模涸趫鼍皬?fù)雜度不同的測試環(huán)境下,對兩種光線跟蹤繪制方式(方式1:基于GPU加速;方式2:基于CPU的傳統(tǒng)遞歸方式)的性能進(jìn)行測試。

算法和數(shù)據(jù)實(shí)驗(yàn)的硬件平臺:512M內(nèi)存和3.0GHzPentium CPU的主機(jī),配備具有64M顯存的Nvidia 6800圖形顯卡。

用Visual C++.NET、OpenGL以及cg語言來實(shí)現(xiàn)算法程序。系統(tǒng)中使用的場景加速結(jié)構(gòu)的網(wǎng)格精度都使用了默認(rèn)模式,即由128*128*128個(gè)體素組成。

3.1 實(shí)驗(yàn)結(jié)果

6個(gè)不同復(fù)雜度的場景效果圖都是基于GPU的光線跟蹤繪制實(shí)現(xiàn)的。場景1至場景6包含的三角形面片數(shù),從2016個(gè)到60960個(gè)成復(fù)雜度遞增。

基于GPU加速的光線跟蹤繪制速度的測試不包含加速結(jié)構(gòu)構(gòu)建的時(shí)間,因?yàn)閷?shí)驗(yàn)的目的是測試GPU加速對場景繪制速度的影響。對于靜態(tài)場景的繪制,加速結(jié)構(gòu)構(gòu)建可以在預(yù)處理階段完成。以下將對基于GPU加速的光線跟蹤繪制進(jìn)行分析。這兩種實(shí)現(xiàn)方式在分辨率為256*256、512*512、1024*1024的情況下,分別繪制場景1-6時(shí)。

3.2 結(jié)果分析

數(shù)據(jù)結(jié)果和系統(tǒng)實(shí)現(xiàn)所采用的軟硬件環(huán)境,對基于GPU加速的光線跟蹤實(shí)現(xiàn)方法,得出以下結(jié)論:

(1)與方式2相比,方式1更適合復(fù)雜場景的繪制。場景復(fù)雜度越高,GPU高性能的計(jì)算能力體現(xiàn)越明顯。

(2)當(dāng)場景復(fù)雜度較低時(shí),場景的加速結(jié)構(gòu)中存在大量的空體素(體素中沒有包含場景對象)。這導(dǎo)致光線遍歷加速結(jié)構(gòu)中的空體素消耗大量的計(jì)算時(shí)間,且分辨率越高這種消耗越明顯。當(dāng)光線遍歷空的加速結(jié)構(gòu)所耗的時(shí)間和有效場景繪制所耗的時(shí)間達(dá)到一定的比例程度時(shí),方式1的整體效果不會得到很好的體現(xiàn),甚至不如傳統(tǒng)的光線跟蹤繪制。

(3)在相同的分辨率情況下,當(dāng)場景復(fù)雜度的增加時(shí),方式1消耗時(shí)間的增加并不明顯。這主要由光線遍歷加速結(jié)構(gòu)所致。實(shí)驗(yàn)繪制的場景使用的加速結(jié)構(gòu)是由128*128*128個(gè)體素組成,不管場景是否復(fù)雜,光線遍歷加速結(jié)構(gòu)都要耗費(fèi)一定的時(shí)間。

(4)實(shí)驗(yàn)所采用的圖形硬件還不支持條件分支以及循環(huán),這降低了系統(tǒng)實(shí)現(xiàn)的靈活性及其繪制速度。

(5)在選用加速結(jié)構(gòu)時(shí),主要考慮硬件表示的方便性。若要使加速性能更優(yōu),則應(yīng)降低光線遍歷加速結(jié)構(gòu)所耗的時(shí)間。可從兩方面改進(jìn)系統(tǒng)性能,一是通過使用層次包圍盒技術(shù)來進(jìn)一步優(yōu)化;另一是在現(xiàn)有的加速結(jié)構(gòu)的基礎(chǔ)上,通過降低光線遍歷空的加速結(jié)構(gòu)的消耗來優(yōu)化遍歷。如果在未來幾年,圖形硬件的發(fā)展速度像過去幾年一樣迅速,未來圖形硬件完全有可能實(shí)現(xiàn)實(shí)時(shí)的光線跟蹤。

4 結(jié)束語

本文通過對基于GPU加速的光線跟蹤技術(shù),設(shè)計(jì)了6個(gè)不同復(fù)雜度的場景,在分辨率分別為:256*256、512*512、1024*1024時(shí),實(shí)現(xiàn)了GPU和CPU實(shí)現(xiàn)光線跟蹤繪制。從實(shí)驗(yàn)結(jié)果可得到基于GPU加速的光線跟蹤的優(yōu)勢。基于可編程圖形硬件的算法,既達(dá)到了實(shí)時(shí)的效率,也保證了算法的質(zhì)量。

目前最迫切需要解決的問題是,CPU和GPU之間的數(shù)據(jù)交換限制與負(fù)載均衡算法。在本論文完成之時(shí),PCI-Expres技術(shù)已經(jīng)開始實(shí)用化,市場上已經(jīng)出現(xiàn)了支持PCI-E的顯卡。顯然,這將有利于解決GPU應(yīng)用中的帶寬限制問題。隨著GPU可編程能力的進(jìn)一步增強(qiáng),可以將GPU作為CPU的協(xié)處理器。

主站蜘蛛池模板: 国产91麻豆免费观看| 无码人中文字幕| 激情亚洲天堂| 亚洲a免费| 2021国产乱人伦在线播放| 无码免费的亚洲视频| 日韩视频免费| 亚洲日本在线免费观看| 久久中文电影| 免费三A级毛片视频| 特级欧美视频aaaaaa| 国产日韩欧美一区二区三区在线| 午夜福利在线观看入口| 亚洲成人播放| 欧美激情视频一区二区三区免费| 久久久国产精品无码专区| 中国毛片网| 99无码中文字幕视频| www.亚洲色图.com| 欧洲av毛片| 久久人体视频| 一级片一区| 99久久亚洲精品影院| 波多野结衣一区二区三区AV| 国产高清无码麻豆精品| 欧美综合区自拍亚洲综合绿色| 午夜视频在线观看免费网站| www.日韩三级| 亚洲中文在线看视频一区| 亚洲综合亚洲国产尤物| AV无码无在线观看免费| 亚洲区视频在线观看| 久久黄色小视频| 在线免费看黄的网站| 国模粉嫩小泬视频在线观看| 久久免费视频播放| 在线国产毛片手机小视频| av大片在线无码免费| 欧美综合激情| 狠狠综合久久久久综| 国产福利免费视频| 国产成人精品高清不卡在线| 夜夜爽免费视频| 亚洲美女视频一区| 日本精品影院| 一区二区理伦视频| 成人精品免费视频| 亚洲第一成年人网站| 亚洲性色永久网址| 成年女人18毛片毛片免费| 国产69囗曝护士吞精在线视频| 日韩免费毛片| 国产本道久久一区二区三区| 久996视频精品免费观看| 欧美在线一二区| 思思热在线视频精品| 一级毛片免费观看久| 在线欧美日韩| 成人免费视频一区二区三区| 亚洲天堂精品视频| 欧美人与牲动交a欧美精品| 国产青青操| 99国产精品国产| 亚洲精品福利视频| 国产精品亚洲精品爽爽| 国产精品一区在线麻豆| aⅴ免费在线观看| 国产男人的天堂| 99精品福利视频| 尤物精品视频一区二区三区 | 2021国产v亚洲v天堂无码| 欧美色99| 国产91无码福利在线| 日韩激情成人| 久久久噜噜噜久久中文字幕色伊伊| 免费人成在线观看视频色| 无码国产偷倩在线播放老年人| 亚洲成人在线免费观看| 国产在线97| 精品小视频在线观看| 亚洲女人在线| 精品无码一区二区在线观看|