向前,周珍艮
(銅陵學(xué)院電氣工程學(xué)院,安徽銅陵244000)
3D圖形硬件加速紋理映射單元設(shè)計
向前,周珍艮
(銅陵學(xué)院電氣工程學(xué)院,安徽銅陵244000)
隨著第三代(3G)手持電子產(chǎn)品的發(fā)展,極大地拓寬了實時圖形學(xué)的應(yīng)用領(lǐng)域,而紋理映射是提高圖形真實感最為有效的方法。電子技術(shù)的發(fā)展,為硬件加速芯片的設(shè)計提供了更多的選擇。設(shè)計了基于FPGA的紋理映射電路,采用MIPmapping紋理映射算法,電路由紋理映射地址計算、三線性濾波和紋理存儲器三部分組成。綜合結(jié)果表明,對于24bits像素的繪制速度可達(dá)到41.145Mpixels/s和329.16Mtexels/s。
電子產(chǎn)品設(shè)計,實時圖形學(xué);紋理映射;電路;算法
隨著移動電子市場的發(fā)展,第三代(3G)多媒體設(shè)備,如PDA、智能手機等變得越來越普遍。這些設(shè)備不僅具有MP3音頻、MPEG-4視頻實時解碼電路,甚至于具備了三維圖形功能。3D圖形學(xué)對在游戲、廣告和網(wǎng)絡(luò)虛擬角色方面的應(yīng)用具有極大的誘惑力,它們的數(shù)據(jù)通過有限帶寬的無線網(wǎng)絡(luò)下載。為了滿足手持設(shè)備實現(xiàn)3D圖形這類市場的需要,近些年來國外進(jìn)行了大量的研究嘗試,開發(fā)了各種專用硬件加速電路方法,或者純軟件方案。盡管如此,還是永遠(yuǎn)不能滿足市場要求,僅僅實現(xiàn)有限的圖形明暗操作,而沒有紋理映射所產(chǎn)生的真實感和其它特定的繪制效果,對于3D游戲這類應(yīng)用是永遠(yuǎn)不夠的[1]。
紋理映射就是將二維紋理圖像映射到計算機產(chǎn)生的圖形上,以提高圖像的視覺真實感。它是高質(zhì)量圖像合成中最成功的新技術(shù)之一。
紋理映射在計算機圖形計算中屬于光柵化階段,處理的是像素,主要的特點是數(shù)據(jù)的吞吐量大,對實時系統(tǒng)來說轉(zhuǎn)換的速度是一個關(guān)鍵的因素,人們尋求各種加速算法來提高運算速度。傳統(tǒng)的方法是用更快的處理器,并行算法或?qū)S糜布?。隨著數(shù)字技術(shù)的發(fā)展,尤其是可編程邏輯門陣列(FPGAs)的發(fā)展,提供了一種新的加速方法。FPGAs在密度和性能上都有突破性的發(fā)展,當(dāng)前的FPGA芯片已經(jīng)能夠運算各種圖形算法,而在速度上與專用的圖形卡硬件相同。因此,F(xiàn)PGA芯片非常適合這項工作[2]。
紋理映射就是將任意的平面圖形或圖像覆蓋到物體表面,形成表面細(xì)節(jié)。紋理映射過程就是尋求每個屏幕像素所對應(yīng)的紋理像素,將這些像素從存儲器中讀出,并對其進(jìn)行加權(quán)后用來替換屏幕像素顏色值。所以整個紋理映射涉及紋理尋址以及紋理加權(quán)。紋理加權(quán)又稱為后置濾波。
基于硬件加速的紋理映射按其后置濾波的原理可分為各向同性和各向異性,常用的各向異性算法如橢圓形權(quán)重平均、區(qū)域求和表法由于運算量太大,難以硬件實現(xiàn)。硬件實現(xiàn)的各向異性濾波方法稱為足跡集合(Footprint assembly)的濾波方法,主要用于圖形工作站及高檔個人電腦?;诜旨壖?xì)化(MIPmapping)的各向同性濾波,由于它的運算量小和易于硬件實現(xiàn),以及可以產(chǎn)生良好的圖像質(zhì)量,成為最普遍的紋理濾波方法,當(dāng)前各種圖形加速卡都以各自的方式對它進(jìn)行支持。
圖1 MIPm apping紋理映射
圖1 為分級細(xì)化的紋理映射過程[3]。首先將紋理圖像從原始圖像開始,以1/2的分辨率進(jìn)行縮減采樣,并將圖像以金字塔方式存儲在存儲器中,不同分辨率的圖像稱為不同細(xì)節(jié)層次(LOD)。紋理映射時,將每個屏幕像素看成是單位正方形,利用透視投影函數(shù)將正方形四個頂點投影到原始紋理空間(LOD= 0),形成一個任意形狀的四邊形,這個過程稱為透視校正地址計算。接著根據(jù)四邊形的四個邊在橫坐標(biāo)與縱坐標(biāo)上的最大跨度來計算所要采樣的紋理圖像細(xì)節(jié)層次。如果采樣不在整數(shù)層次上,則需要在兩個層次上進(jìn)行采樣。
圖1中假設(shè)LOD為1.64,故在第1層次及第2層次上進(jìn)行采樣。映射到該細(xì)節(jié)層次上的紋理坐標(biāo)可能不在整數(shù)位置上,這時要對其鄰近的4個紋理進(jìn)行采樣加權(quán),稱為雙線性插值。在兩個層次上對8個紋理雙線性插值后的結(jié)果還要進(jìn)行一次插值,稱為三線性插值。得到的最終顏色值送到幀緩沖中進(jìn)行紋理混合,用來取代屏幕上的像素顏色值,完成整個映射過程。
3.1 總體結(jié)構(gòu)
MIPmapping紋理映射硬件實現(xiàn)的總體框圖如圖2所示[3][4],主要由三個部分組成:紋理地址產(chǎn)生、紋理存儲器及后置濾波單元。紋理地址單元的作用是計算出屏幕像素點(x,y)所對應(yīng)紋理在存儲器中的存儲地址,它包括透視投影轉(zhuǎn)換的透視校正地址計算、像素在紋理圖像上映射坐標(biāo)的雙線性紋理地址計算,以及紋理存儲物理地址的計算。
從紋理存儲器中讀出的4個或8個紋理在紋理濾波器中進(jìn)行加權(quán),得到最終用于與屏幕像素混合的顏色值。后置濾波由兩個雙線性濾波和一個三線性濾波組成,當(dāng)然,如果紋理訪問只在單一層次上進(jìn)行,只需要進(jìn)行一次雙線性插值即可。
紋理存儲單元是用來存儲所需紋理,每個紋理按不同的細(xì)節(jié)層次存放,不同的紋理有一個起始地址(entry_address)。
圖2 紋理映射總體框圖
3.2 透視校正地址計算
根據(jù)屏幕像素坐標(biāo)來求對應(yīng)的紋理坐標(biāo)稱為逆向映射,轉(zhuǎn)換式為[4]:
式中(x,y)與(u,v)為屏幕空間及紋理空間的坐標(biāo),(xw,yw,w)與(uw,vw,w)分別為它們的齊次坐標(biāo)。矩陣M3伊3為逆向映射的轉(zhuǎn)換矩陣。齊次坐標(biāo)再除以w得到透視校正笛卡爾坐標(biāo)地址(tu,tv)。
為獲得大的數(shù)據(jù)吞吐量,和滿足實時處理要求,這里采用流水線結(jié)構(gòu)的正交矩陣電路[5]。由于相乘矩陣的維數(shù)分別是3伊1和3伊3,結(jié)果為3伊3陣列,所以共需9個單精度浮點乘累加處理器單元PEij。矩陣M3伊3元素mij先導(dǎo)入到PEij寄存器中,(xi,yi,zi)的輸入方式,通過FIFO堆棧,每個周期依序輸入(x1,0,0)、(x2,y1,0)、(x3,y2,z1)…。
圖3中3伊3陣列完成齊次坐標(biāo)(uw,vw,w)計算,兩個單精度的浮點除法器(Div)完成笛卡爾坐標(biāo)轉(zhuǎn)換。
圖3 透視校正地址計算矩陣
3.3 雙線性地址及存儲器地址計算
雙線性地址及存儲器地址計算包括細(xì)節(jié)層次(Level_of_datail)、基地址(Base_address)、雙線性地址(Bilinear_Address)及存儲器地址(Memory_Address)四個單元組成,三個流水線階段,見圖4。
MIPmapping映射將屏幕像素看成單位正方形,將其四個頂點透視映射到原始紋理圖像上,在紋理圖像空間正方形映射成任意四邊形足跡(Footprint),四邊形在紋理空間橫向與縱向最大跨度的對數(shù),便是所要采樣的紋理圖像層次。四邊形足跡最大跨度:
Iwidth及Iheight分別為原始紋理圖像高寬。于是紋理采樣所在細(xì)節(jié)層次:
lod層2D紋理圖像數(shù)組距離該紋理存儲的起始地址偏移量基地址用base表示:
式中l(wèi)w=log2(每個像素RGB比特數(shù)),24位。
像素中心映射到lod細(xì)節(jié)層次紋理上整數(shù)橫坐標(biāo)u及縱坐標(biāo)v可由下式來計算:
對應(yīng)lod細(xì)節(jié)層次上紋理映射四邊形對應(yīng)的寬與高:
lod+1細(xì)節(jié)層次上紋理映射四邊形對應(yīng)的寬與高減半。
在lod細(xì)節(jié)層次上雙線性地址offset0和lod+1細(xì)節(jié)層次上雙線性地址offset1則可計算如下:
存儲器地址的計算是將前一流水線階段產(chǎn)生的base,offset,entry_address相加,就可產(chǎn)生實際的紋理存儲地址。
圖4 紋理地址計算
3.4 紋理濾波電路
圖5給出了三線性濾波頂層綜合電路,由兩級流水線組成,由兩個雙線性插值和一個三線性插值單元組成。其中dintetp為三線性插值系數(shù),I01~I14是從存儲器中讀出的8個紋理顏色值,Pixelcolor則是濾波后的紋理像素顏色值。u0f、v0f、u1f、v1f為層次lod和lod+1上的雙線性插值系數(shù)。雙線性插值系數(shù)實際上是屏幕像素映射到對應(yīng)紋理層次上坐標(biāo)的小數(shù)部分:
式中對應(yīng)的是lod層次上插值系數(shù),lod+1插值系數(shù)只要將lod加1即可。
圖5 紋理濾波電路
雙線性濾波的公式為:
式中I同一層次上的四個紋理,uf、vf為雙線性插值系數(shù)。
三線性濾波是將兩個雙線性濾波的結(jié)果再進(jìn)行一次插值,以得到最后的像素顏色值:
I0、I1分別為兩個雙線性濾波輸出的結(jié)果。
電路綜合結(jié)果在表1中列出,包括所耗資源,各單元的頻率。乘累加模塊的頻率最低,為41.145 MHz,共有9個PE單元,脈動陣列每一行數(shù)據(jù)從輸入到輸出共需12個周期。紋理存儲地址采用3級流水線結(jié)構(gòu),所以從信號輸入到輸出共需3個時鐘周期,最大綜合頻率為141.683 MHz。后置濾波電路由兩個雙線性濾波及一個三線性濾波電路組成,分為2級流水線,用于對所讀取的紋理進(jìn)行濾波,綜合后最大頻率為106.940 MHz。
表1 電路資源耗費及性能列表
電路綜合結(jié)果表明,紋理映射單元可達(dá)到41.145MPixels/s及最大329.16MTexels/s的處理能力,大于一個640伊460尺寸屏幕個人移動電子產(chǎn)品所需的18MPixels/s處理能力。
本文設(shè)計了紋理映射單元紋理地址發(fā)生電路及后置濾波電路。各電路采用流水線來實現(xiàn),綜合結(jié)果達(dá)到41.145MPixels/s及329.16MTexels/s。
紋理映射單元由于計算量巨大以及存儲器讀取,能量消耗很大,進(jìn)一步工作是要減小這部分電路的面積及能量損耗,以適應(yīng)移動設(shè)備的要求。初步的方案是將浮點數(shù)透視校正地址計算矩陣轉(zhuǎn)換成定點數(shù)運算,以減小電路面積,同時采用緩存的方法減少紋理存儲器訪問次數(shù),對后置濾波部分,利用紋理像素在空間上的連續(xù)性來減少乘累加的次數(shù)。
[1]Ramchan Woo,Sungdae Choi,Ju-Ho Sohn,Seong-Jun Song, and Hoi-Jun Yoo,A 210-mW Graphics LSI Implementing Full 3-D Pipeline With 264 Mtexels/s Texturing for Mobile Multimedia Applications[J],IEEE JOURNAL OF SOLID-STATE CIRCUITS, VOL.39,NO.2,FEBRUARY 2004,p358-p367.
[2]Xilinx Incorporated.http://www.xilinx.com.
[3]Kurt Aleley,Pat Hanrahan,Real-Time Graphics Architectures [M],http://www.graphics.stanford.edu/courses/cs448a-01-fall/.
[4]P.S.Heckbert,Fundamental of texture mapping and image warping [D],M.S.thesis,Comput.Sci.Div.,Univ.California,Berkeley,CA,1989.
[5]Pavel.Zemcik.Hardware Acceleration of Graphics and Imaging Algorithms and about ingltering and texture memory.ng circuit Using FPGAs[D].http://www.fit.vutbr.cz/zemcik/publics/sccg2002.pdf.注:本課題為安徽高校省級自然科學(xué)研究項目(編號:KJ2012Z415),銅陵學(xué)院自然科學(xué)研究項目(編號:2006tlxykj004)
Design of Texture M apping Unit for 3D Graphics Hardware Acceleration
XIANG Qian,ZHOU Zhenyin
(The Electrical Engineering College of Tongling University,Tongling,Anhui 244000,China)
Development of the third-generation(3G)hand electronic products has great原ly broadened the application space of real-time graphics,while texture mapping is the most effective way to improve the sense of reality of graphics.Development of electronic technology has provided much more choice for the design of hardware acceleration chips.A texture mapping circuit was designed based on FPGA and using MIPmapping texture mapping algo原rithm.The circuit consisted of texture mapping address calculation,trilinear filtering and tex原ture memory.Comprehensive results showed its mapping speed can reach 41.145Mpixels/s and 329.16Mtexels/s for 24bits pixels.
design of electronic product;real-time graphics;texture mapping;electric cir原cuit;algorithm
TP332
B
1006-6764(2014)04-0068-04
2014-01-07