基于硬件加速的三維紋理、多紋理和片元澆染器_第1頁(yè)
基于硬件加速的三維紋理、多紋理和片元澆染器_第2頁(yè)
基于硬件加速的三維紋理、多紋理和片元澆染器_第3頁(yè)
基于硬件加速的三維紋理、多紋理和片元澆染器_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于硬件加速的三維紋理、多紋理和片元澆染器

1程序的兩種支持下一代圖形數(shù)據(jù)處理的標(biāo)志是一種集成了圖形硬件的編程能力,它集成了點(diǎn)源處理器(vertexshoat)和用于繪制圖表的片源渲染器(framtsea或薄膜映射)。可編程渲染器并沒(méi)有完全替代傳統(tǒng)處理器中的頂點(diǎn)管道和像素管道的固定處理單元,它們構(gòu)成了圖形處理器中不同的頂點(diǎn)和像素管道(如圖1)。可編程渲染器由有限的寄存器和運(yùn)算器組成,能夠?qū)?shù)據(jù)流中的數(shù)據(jù)元素重復(fù)執(zhí)行有限量的一段指令程序,意即一段指令多次數(shù)據(jù)(SingleInstructionMultiData,SIMD)。這一小段程序釋放了固定渲染管道的約束,使得用戶能夠根據(jù)自己的要求為硬件制定較為復(fù)雜的渲染程序,產(chǎn)生各種特殊的圖像效果。PC上兩種主要編程接口Direct3D和OpenGL均支持可編程渲染器。Direct3D對(duì)VertexShader和PixelShader有統(tǒng)一的編程接口和渲染器語(yǔ)言(匯編或者高級(jí)代碼)。而OpenGL現(xiàn)在要通過(guò)OpenGL的寄存器的Combiner擴(kuò)展函數(shù)實(shí)現(xiàn)渲染器的編程,但圖形硬件廠商ATI和NVIDIA各有自己的一套Shader擴(kuò)展函數(shù)。NVIDIA已經(jīng)發(fā)布了CG(CGraphics)工具,渲染器程序可以用與C十分相似的高級(jí)語(yǔ)言編寫(xiě),而且能夠針對(duì)不同的顯示芯片核心和DirectX或者OpenGL接口產(chǎn)生相應(yīng)的代碼。我們?cè)跀?shù)字人腦圖譜系統(tǒng)上采了用Direct3D編程接口,Shader采用Direct3D的匯編語(yǔ)言。但我們不久將加入對(duì)OpenGL的支持使得能夠運(yùn)行在Linux平臺(tái)上。測(cè)試用的顯卡是Geforce4Ti4200-8X-128MB1(見(jiàn)圖1)。1.1維體數(shù)據(jù)的特征直接體繪制是體數(shù)據(jù)顯示中的重要方法,與基于面繪制方法的根本區(qū)別是:直接體繪制最終合成的圖像是所有體元經(jīng)過(guò)轉(zhuǎn)換函數(shù)混合合成,而面繪制是選擇一部分體元重建成幾何面后的繪制。因此,直接體繪制可以更加靈活的利用轉(zhuǎn)換函數(shù)來(lái)選擇體元,顯示復(fù)雜的物體結(jié)構(gòu)并暴露其內(nèi)部信息。大部分體數(shù)據(jù)如CT,MRI和三維超聲數(shù)據(jù)都是對(duì)物體在三維空間離散規(guī)則點(diǎn)上進(jìn)行的測(cè)量或者采樣的標(biāo)量值,但在各個(gè)方向上的采樣頻率并不一致,即所謂各向異分辨率。物體在連續(xù)空間中場(chǎng)的定義可以通過(guò)體數(shù)據(jù)重建得到,根據(jù)Nyquist定理,重建后的連續(xù)空間場(chǎng)其最大頻率不高于空間采樣頻率的二分之一。原始的體數(shù)據(jù)往往反映的是物體的某些屬性而不是真實(shí)的發(fā)光顏色和阻光度等光學(xué)特性。將體數(shù)據(jù)進(jìn)行分類(lèi)和映射到顏色與阻光度的轉(zhuǎn)換函數(shù)對(duì)直接體繪制來(lái)說(shuō)非常重要,它直接影響最后圖像顯示的結(jié)構(gòu)和層次。設(shè)一維轉(zhuǎn)換函數(shù)在物體連續(xù)空間中的定義為發(fā)光顏色?cc?(s)和光吸收率?ττ?,s是在物體在空間位置x的標(biāo)量值s=s(x)。三維體數(shù)據(jù)投影到二維像平面的過(guò)程使用的一個(gè)常用簡(jiǎn)單模型是密度發(fā)光模型,即假設(shè)物體在每一點(diǎn)發(fā)射光線和吸收光線,并忽略散射和頻譜效應(yīng)。成像顏色用公式表示即C=∫D0?c(s(x(t)))e-∫t0?τ(s(x(t′)))dt′dtC=∫D0c?(s(x(t)))e?∫t0τ?(s(x(t′)))dt′dt即顏色光線從0到D累積發(fā)光和吸收因子(如圖2)。我們把這個(gè)積分公式離散化,即設(shè)沿光線0到D分為n等分,間隔為d。則有阻光度Ai=1-e-τ(s(x(t′(id)))d和顏色Ci=c(s(x)id)))d,于是得到Capprox=n∑i=0Cii-1∏j=0(1-Ai)∑i=0nCi∏j=0i?1(1?Ai)這個(gè)方程可以利用從前至后或從后至前的alpha混合來(lái)得到即C′i=Ci+(1-Ai)C′i+1。體數(shù)據(jù)的存儲(chǔ)量非常大,直接體繪制又涉及大量的插值運(yùn)算和顏色混合運(yùn)算,在微機(jī)上的顯示速度很慢,只有通過(guò)硬件加速才能達(dá)到實(shí)時(shí)交互顯示。在目前通用顯示硬件上,顯示芯片上的顯存空間已經(jīng)達(dá)到128MB或256MB,并且支持AGP8X標(biāo)準(zhǔn),使得訪問(wèn)系統(tǒng)內(nèi)存的帶寬超過(guò)1GB/S。體數(shù)據(jù)可以三維紋理或二維紋理的多紋理方式表示存儲(chǔ)在顯卡內(nèi)存或AGP內(nèi)存,通過(guò)中間幾何面取得紋理中的體數(shù)據(jù)。如圖3有幾種中間幾何面的表示:圖中A情形是按照與視線垂直方向等分三維紋理空間的平面切片,B是維紋理空間的某個(gè)正交方向等分的切片,C是視點(diǎn)方向的球錐切片(圖C左和圖C中是在另一個(gè)視點(diǎn)(不是球錐的頂點(diǎn))的觀察圖,圖C右中視點(diǎn)和球錐頂點(diǎn)位于同一點(diǎn)的實(shí)際圖)。而從顏色混合公式來(lái)看,在視線方向上與切片相交的切片間距應(yīng)當(dāng)一致,即對(duì)紋理數(shù)據(jù)的空間采樣距離應(yīng)當(dāng)一致。否則,合成的圖像會(huì)有一定的色彩空間和結(jié)構(gòu)的走樣。A情形在平行投影時(shí)和C情形在透視投影時(shí)的空間采樣率一致。A和C情形均是在三維紋理空間中定義紋理坐標(biāo),利用硬件進(jìn)行三線性插值的紋理采樣。B情形在沒(méi)有硬件三維紋理支持的時(shí)候采用的二維多紋理切片,但通過(guò)設(shè)定多紋理間的運(yùn)算,也可以避免在不同方向上平行投影時(shí)的空間采樣率不同的問(wèn)題。對(duì)于各向異性分辨率的體數(shù)據(jù),A和C情形中只要對(duì)各向的紋理坐標(biāo)做相應(yīng)的縮放處理即可。A和C情形在每次變換視線方向后都要重新計(jì)算切片的中間幾何。A中間幾何的三角面數(shù)一般在1000以下,而C情形由于是三角面片對(duì)球面的近似,如果在較高精度下,通常會(huì)達(dá)到三角面數(shù)100000(對(duì)于體數(shù)據(jù)256×256×256而言)。這樣C情形的繪制就比較耗時(shí)不能達(dá)到實(shí)時(shí)的交互。我們?cè)谕敢曂队敖换r(shí),采用A情形,并且把視點(diǎn)放置在較遠(yuǎn)處即可。而靜止的圖像采用C情形繪制。1.2定dirc3的混合因子根據(jù)C′i=Ci+(1-Ai)C′i+1,中間幾何面可以從后至前的順序依次繪制,通過(guò)設(shè)定Direct3D的混合因子SourceBlend為SourceAlpha和DestBlend為InverseSourceAlpha進(jìn)行顏色混合。Direct3D提供了多種顏色混合因子和操作,如設(shè)定Direct3D的混合操作為取最大值即能得到最大值投影,如圖4。2轉(zhuǎn)換函數(shù)作用時(shí)的圖像轉(zhuǎn)換函數(shù)一直以來(lái)都是直接體視繪制的重要問(wèn)題。它主要是映射了紋理標(biāo)量值s到RGBA的顏色形式,是決定某些重要結(jié)構(gòu)和細(xì)節(jié)顯示的關(guān)鍵。人們已經(jīng)提出了許多種自動(dòng)和半自動(dòng)的轉(zhuǎn)換函數(shù)的設(shè)計(jì)方法,Kniss等還提出了多維轉(zhuǎn)換函數(shù)。本文中使用的轉(zhuǎn)換函數(shù)計(jì)算和人工調(diào)整的方法得到轉(zhuǎn)換函數(shù)。轉(zhuǎn)換函數(shù)相當(dāng)于顯示硬件的顏色查找表。對(duì)于一個(gè)256×256×256×8的體數(shù)據(jù),如果以D3DFMT_P8格式只存儲(chǔ)標(biāo)量值,存儲(chǔ)量為16MB,而要以D3DFMT_A8R8G8B8,先要經(jīng)過(guò)轉(zhuǎn)換函數(shù)得到ARGB值再存儲(chǔ),而這時(shí)需要的存儲(chǔ)量就為64MB(見(jiàn)圖5)。在光線積分離散化的公式中,我們可以看到Ci=?c(s(x(id)))dCi=c?(s(x(id)))d。其中id應(yīng)是第i中間幾何切片,s應(yīng)是這個(gè)中間幾何切片紋理坐標(biāo)上的紋理插值,即s=sample(x(id),?s[?x,?y,?z]?Ci=?c(s)d。但是無(wú)論紋理格式是顏色索引值還是RGBA格式,紋理的插值都是對(duì)顏色的插值而不是原始紋理標(biāo)量值的插值。即其公式變?yōu)镃i=sample(x(id),?c(?s[?x,?y,?z]))d,因此這種插值是在轉(zhuǎn)換函數(shù)作用以后發(fā)生的?,F(xiàn)在片元處理器具有依賴紋理提取(dependenttexturefetch)的指令,即可以將第一個(gè)紋理提取的紋理值作為下一個(gè)紋理的坐標(biāo)值來(lái)提取紋理。因此將可以把轉(zhuǎn)換函數(shù)以第二個(gè)一維紋理或二維紋理的方式表示,而將顏色索引表的值定義為以原始紋理的標(biāo)量為灰度級(jí)的索引表。這樣,第一個(gè)紋理即三維紋理提取的紋理值雖然是轉(zhuǎn)換函數(shù)作用以后的插值,但其中的ARGB每個(gè)分量值均等于對(duì)原始三維紋理標(biāo)量值的插值,而利用這個(gè)值可以做下個(gè)紋理的地址取得顏色值,這樣的插值可看作是在轉(zhuǎn)換函數(shù)作用以前發(fā)生的。用Direct3D的PixselShader表示,其代碼是:其中紋理0即顏色表格式的三維紋理,紋理1即轉(zhuǎn)換函數(shù)。當(dāng)轉(zhuǎn)換函數(shù)非線性且有高頻分量的時(shí)候,插值所發(fā)生的位置對(duì)合成的圖像有明顯的不同。發(fā)生在轉(zhuǎn)換函數(shù)作用之前的插值合成的圖像較多保留了轉(zhuǎn)換函數(shù)的高頻變化部分,即圖像色彩有高頻分布。可以對(duì)比以下圖像(如圖6)。利用硬件的依賴紋理提取,我們還可以實(shí)現(xiàn)二維轉(zhuǎn)換函數(shù),即使得顏色值與強(qiáng)度和其梯度相關(guān)。3基于ps的體元光照描述使用簡(jiǎn)單的體數(shù)據(jù)發(fā)光和吸收成像模型沒(méi)有考慮外部光源的因素。Phong光照模型是比較通用和簡(jiǎn)單的局部光照模型,即不考慮模型遮擋住光源。渲染得到的光強(qiáng)是環(huán)境光,漫反射光和鏡面反射光三種性質(zhì)的光強(qiáng)累加的結(jié)果。Iphone=IAmbient+IDiffuse+ISpecular,其中IAmbient=kα為反射環(huán)境光常量,ΙDiffuse=Ιpkdcosφ=Ιpkd(→l?→n是漫反射光強(qiáng),Ip為光源強(qiáng)度,kd為材質(zhì),→l,→n分別是指向光源方向和表面法向量,ΙSpecular=Ιpkscosnα=Ιpks(→h?→n)n是鏡面反射光,→h是指向視點(diǎn)的向量和指向光源向量的中間向量。傳統(tǒng)的圖形管道的光照渲染是基于點(diǎn)元的,因?yàn)辄c(diǎn)元具有法向量。而可編程渲染器使得我們能夠進(jìn)行基于片元的光照渲染,這也發(fā)生在Direct3D的PixelShader中。為了對(duì)體元進(jìn)行光照,每個(gè)體元都要有法向量,由于體元所在位置的表面未知,法向量使用體元的梯度方向是最簡(jiǎn)單合理的。由于目前PixelShader沒(méi)有直接計(jì)算紋理梯度的指令,因此我們必須預(yù)先計(jì)算體數(shù)據(jù)的梯度,存儲(chǔ)紋理格式為ARGB,其中A通道為體數(shù)據(jù),RGB通道為體數(shù)據(jù)梯度的三個(gè)分量。這樣,在中間幾何面上的體數(shù)據(jù)梯度單位向量是通過(guò)鄰點(diǎn)插值得到的,由于PS1.3沒(méi)有向量歸一化指令,其插值結(jié)果不能歸一化使得與實(shí)際的梯度單位向量不一致,這會(huì)導(dǎo)致光照計(jì)算的一定失真。同樣由于PS1.3可執(zhí)行的指令數(shù)目有限,我們規(guī)定光源為平行光,則光照方向在繪制每一幀時(shí)對(duì)所有體元都一樣。因而可以在程序中預(yù)設(shè)為一常數(shù),它的代碼是:3.1ha的體數(shù)據(jù)合成在片元渲染器計(jì)算得到像素之后并且到達(dá)與幀緩存進(jìn)行顏色混合之前,像素要經(jīng)過(guò)一些測(cè)試通道,如Alpha測(cè)試和Z測(cè)試。假使我們放棄體數(shù)據(jù)發(fā)光和吸收的模型,而是用外部光源渲染,此時(shí)Alpha仍為體數(shù)據(jù),這時(shí)我們可以利用Alpha測(cè)試通道決定是否接受該像素。設(shè)定Alpha測(cè)試參考值為Siso并且相等時(shí)才接受該像素。這樣最后合成的圖像上所有像素點(diǎn)都是體數(shù)據(jù)中標(biāo)量值為Siso的空間分布點(diǎn)的投影。但會(huì)發(fā)現(xiàn)這樣通常得到的圖像顯示的等值面并不連續(xù),這是因?yàn)橛捎谟邢薜闹虚g幾何切面數(shù)導(dǎo)致許多具有Siso的空間位置上沒(méi)有中間幾何面采樣。只有大大增加中間幾何的切面數(shù)才能得到連續(xù)感的等值面。這樣完成等值面繪制速度較慢,但如果改變Alpha測(cè)試方法為大于等于Siso或小于等于Siso則無(wú)需增加切面數(shù),這時(shí)顯示的是等值面的一邊,如圖8。4預(yù)制件用預(yù)壓機(jī)技術(shù)在PC機(jī)上具有可編程能力的顯示芯片使得我們能夠由硬件加速完成過(guò)去只能由軟件計(jì)算完成的直接體繪制方法,而且能與軟件計(jì)算方法得到同樣的結(jié)果,使得PC繪制速度和性能得到極大的提高,甚至達(dá)到和超過(guò)了一般檔次的圖形工作站

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論