新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 輕松實(shí)現(xiàn)3D圖形處理的設(shè)計(jì)技巧

輕松實(shí)現(xiàn)3D圖形處理的設(shè)計(jì)技巧

作者: 時(shí)間:2017-06-04 來(lái)源:網(wǎng)絡(luò) 收藏

本文引用地址:http://m.butianyuan.cn/article/201706/348717.htm

1. 科學(xué)性

如今,越來(lái)越多的桌面PC采用3D圖形繪制技術(shù)來(lái)獲得高真實(shí)感的顯示效果。諸如工業(yè)與藝術(shù)行業(yè)的設(shè)計(jì)和制造、科學(xué)研究中的建模、交通和旅游業(yè)中的虛擬漫游以及3D游戲等。

3D圖形繪制技術(shù)的本質(zhì),是通過(guò)一系列算法來(lái)模擬自然界中物體在人眼中成像的過(guò)程,算法從幾何建模、空間變換到計(jì)算空間中每個(gè)點(diǎn)的光照、陰影以及紋理等等。算法越趨近真實(shí),物體的繪制效果也越逼真。顯然,以有限性能的數(shù)字系統(tǒng)去還原真實(shí)的自然界是極其困難的,考慮的因素越多越細(xì),系統(tǒng)的復(fù)雜度越高,實(shí)時(shí)性越低。因此,任何一款圖形繪制系統(tǒng)都必須根據(jù)自身硬件的規(guī)模、以及場(chǎng)景中物體的特點(diǎn),在真實(shí)性與實(shí)時(shí)性之間尋求平衡。

圖2.1 移動(dòng)設(shè)備圖形領(lǐng)域的發(fā)展

過(guò)去幾十年中,桌面PC及工作站一直是3D圖形繪制的主流平臺(tái),圖形處理系統(tǒng)的架構(gòu)與算法也主要基于這種大面積、高存儲(chǔ)帶寬、高功耗的特性。然而,移動(dòng)設(shè)備在外部存儲(chǔ)帶寬、功耗、面積等制約因素上有著數(shù)量級(jí)的劣勢(shì)。但是,移動(dòng)設(shè)備往往又僅需在較小的分辨率上繪制圖形。較小的分辨率意味著能接受以恰當(dāng)?shù)姆绞胶雎砸恍┘?xì)節(jié),并且通常不會(huì)在一個(gè)屏幕中包含太多物體。正是和桌面平臺(tái)相比之下的這些劣勢(shì)與優(yōu)勢(shì),使面向移動(dòng)設(shè)備的系統(tǒng)自成一體,絕不能靠簡(jiǎn)單地移植桌面圖形處理系統(tǒng)來(lái)實(shí)現(xiàn)。

因此,研究與設(shè)計(jì)全新的體系架構(gòu)、執(zhí)行流程、算法、開(kāi)發(fā)調(diào)試環(huán)境及方法等,都成為面向移動(dòng)設(shè)備的圖形處理系統(tǒng)的關(guān)鍵技術(shù)與創(chuàng)新難點(diǎn)。概括起來(lái),本項(xiàng)目的科學(xué)性有如下幾點(diǎn):

1)基于移動(dòng)平臺(tái)上的圖形處理器的硬件架構(gòu)、算法和接口,業(yè)內(nèi)都有各自的側(cè)重和妥協(xié),尚無(wú)較統(tǒng)一方案。研究分析圖形系統(tǒng)各階段的關(guān)鍵技術(shù),評(píng)估多種實(shí)現(xiàn)方案間的優(yōu)劣,將具有重大的科研及市場(chǎng)價(jià)值。

2)由于本項(xiàng)目涉及到了圖形處理的各個(gè)方面,而國(guó)內(nèi)尚無(wú)GPU生產(chǎn)廠家,因此對(duì)于國(guó)內(nèi)涉及到3D圖形顯示的各個(gè)相關(guān)產(chǎn)業(yè)都具有重要的意義。本項(xiàng)目將會(huì)幫助廠家能夠更好地提高方面的技術(shù),致力于給消費(fèi)者更好的體驗(yàn),以使國(guó)產(chǎn)電子產(chǎn)品取得更大的市場(chǎng)份額。

3)最近幾年,隨著移動(dòng)設(shè)備在工業(yè)、生活中的普及與發(fā)展,3D圖形繪制系統(tǒng)也逐漸成了移動(dòng)設(shè)備中的核心部件。研究發(fā)展移動(dòng)設(shè)備上的技術(shù)具有重大意義。

2. 創(chuàng)新性

從算法和硬件架構(gòu)兩個(gè)層次進(jìn)行優(yōu)化,并從運(yùn)算速度、芯片功耗和靈活性三方面考慮,以實(shí)現(xiàn)用一個(gè)較低復(fù)雜度和較低功耗的3D圖形處理器對(duì)真實(shí)感圖形實(shí)現(xiàn)硬件加速。本課題組的創(chuàng)新性主要體現(xiàn)在如下幾個(gè)方面:

1)所有算法采用定點(diǎn)實(shí)現(xiàn),并在精度允許的情況下盡量減小數(shù)據(jù)位寬,以降低電路復(fù)雜度和功耗。

2)硬件結(jié)構(gòu)上含有基于Tile的光柵單元。基于Tile的繪制方法大大減小了訪問(wèn)外部存儲(chǔ)器的帶寬,從而降低了功耗。

3)采用進(jìn)行仿真驗(yàn)證工作,通過(guò)的并行性和流水線,可以在一個(gè)較低的時(shí)鐘頻率(50MHZ)下達(dá)到比較理想的數(shù)據(jù)處理能力。而這正是圖形處理器所必需的。

3. 技術(shù)方案

3D圖形繪制系統(tǒng)的基本組成,是3D圖形算法程序以及圖形處理器硬件。確定算法程序及硬件結(jié)構(gòu)后,便可進(jìn)行各種測(cè)試分析。

3.1 3D圖形算法

要能實(shí)時(shí)繪制3D場(chǎng)景,就需要在計(jì)算機(jī)中為場(chǎng)景內(nèi)每一個(gè)物體進(jìn)行建模,為了方便在計(jì)算機(jī)中對(duì)不同形狀不同屬性的物體建模,最常用的方法是用許多三角形面片構(gòu)成一個(gè)多面體來(lái)擬合實(shí)際物體。對(duì)這個(gè)物體的3D圖形繪制流程,大部分內(nèi)容就是對(duì)這些三角形的繪制。

因此基礎(chǔ)3D圖形繪制可以分為兩部分,第一部分是處理物體的頂點(diǎn),第二部分是處理每一個(gè)像素,就三角形而言,即三角形的三個(gè)頂點(diǎn),以及三角形中的每一個(gè)像素。

3.1.1 坐標(biāo)轉(zhuǎn)換

物體建模時(shí),采用這個(gè)物體的幾何坐標(biāo)來(lái)表示其形狀,這時(shí)所使用的坐標(biāo)系稱(chēng)為模型坐標(biāo)系,模型坐標(biāo)系的原點(diǎn)往往取自幾何物體的某個(gè)點(diǎn)或者附近的某點(diǎn)。當(dāng)這個(gè)物體和其他物體一起被設(shè)定到3D場(chǎng)景中時(shí),多個(gè)物體必須公用場(chǎng)景的原點(diǎn),此時(shí),大場(chǎng)景構(gòu)成一個(gè)世界坐標(biāo)系。而人眼從顯示器去看這個(gè)大場(chǎng)景時(shí),只會(huì)以特定的角度及深度看到場(chǎng)景的一部分的投影,即存在一個(gè)視椎體,這個(gè)投影最終出現(xiàn)在屏幕上時(shí),變成平面的圖像,即屏幕坐標(biāo)系。

物體在這幾個(gè)坐標(biāo)系間轉(zhuǎn)換,需要對(duì)每個(gè)幾何頂點(diǎn)做矩陣運(yùn)算。矩陣的值由坐標(biāo)轉(zhuǎn)換時(shí)的相關(guān)參數(shù)確定,例如,在世界坐標(biāo)系中的偏移,旋轉(zhuǎn),縮放值,視椎體的深度角度,屏幕的分辨率等。

3.1.2 光照計(jì)算

正確的光照,改變物體本來(lái)的顏色明暗,并立刻產(chǎn)生顯著的真實(shí)感。光照處理的對(duì)象是計(jì)算物體上每個(gè)點(diǎn)所反射出的光強(qiáng)大小。這個(gè)過(guò)程需要根據(jù)光源的類(lèi)型、屬性,物體表面的材質(zhì),物體表面法線與光源的角度,物體與光源的距離,人眼與物體的角度、距離等因素來(lái)計(jì)算最終的光照強(qiáng)度。

光源主要包括平行光、點(diǎn)光、聚光。物體對(duì)光的反應(yīng)特性主要包括反射、吸收、透射。其中最主要的反射,包括環(huán)境泛光、漫反射、鏡面反射。泛光主要用來(lái)體現(xiàn)環(huán)境中物體散射到物體并反射的光。漫反射是物體向空間各角度均勻反射的光,其強(qiáng)度與入射角的余弦成正比,但與視點(diǎn)無(wú)關(guān)。鏡面反射是朝特定方向反射的光。當(dāng)鏡面反射光恰好進(jìn)入視點(diǎn)時(shí),將能看到通常所說(shuō)的高光面。

3.1.3 可見(jiàn)性判斷

3D場(chǎng)景繪制,是對(duì)真實(shí)情況的建模和顯示,物體之間嚴(yán)格按照自然的遮擋關(guān)系,物體每個(gè)點(diǎn)在視野中的前后都需要經(jīng)過(guò)判斷,以確保近處的能恰當(dāng)?shù)谜趽踹h(yuǎn)處的。因此需要設(shè)定專(zhuān)門(mén)的深度緩存,屏幕上的每個(gè)像素在繪制前都需要根據(jù)深度來(lái)判斷,如果前面有不透明物體遮擋的話(huà),該點(diǎn)將不會(huì)被繪制。

另一方面,對(duì)于不透明的封閉幾何體,背朝視點(diǎn)的面不需要顯示,將可以直接于早期剔除,出現(xiàn)在視椎體邊界的三角形需要進(jìn)行裁剪,形成新的三角形。

3.1.4

3D圖形繪制流程中,如果對(duì)物體的每個(gè)像素都做坐標(biāo)變換或是光照計(jì)算等操作,將會(huì)導(dǎo)致龐大的計(jì)算量,因此在采用三角形擬合物體的算法中,往往僅計(jì)算三角形頂點(diǎn)的這些屬性,三角形中的點(diǎn),就又頂點(diǎn)的屬性插值而成,由于這項(xiàng)工作將面向每個(gè)三角形中的每個(gè)像素,運(yùn)算過(guò)程中將需要訪問(wèn)顏色緩存與深度緩存還有紋理貼圖數(shù)據(jù)。這些導(dǎo)致該過(guò)程的計(jì)算量占圖形處理的大部分。如何高效地插值填充三角形內(nèi)的像素,將顯著影響3D圖形性能。

算法中,一系列像素是緊挨著的,因此為遞推算法和Cache命中提供了天然了方便,然而如何在特定的軟硬件平臺(tái)下充分利用這些特性來(lái)取得高性能,需要細(xì)致研究。

3.1.5 紋理貼圖

物體的紋理包括表現(xiàn)其表面光學(xué)屬性的顏色紋理,以及表現(xiàn)其表面圍觀幾何形狀的幾何紋理。紋理主要使用圖像、函數(shù)或其他數(shù)據(jù)來(lái)改變物體表面的外觀細(xì)節(jié)。很多時(shí)候,物體的細(xì)節(jié)并不需要通過(guò)幾何建模來(lái)精確實(shí)現(xiàn),采用紋理貼圖的方式能快速高且真實(shí)感地實(shí)現(xiàn)這一點(diǎn)。但紋理的使用包含多個(gè)關(guān)鍵技術(shù)。坐標(biāo)經(jīng)過(guò)透視變換后,物體各個(gè)像素的屬性與屏幕坐標(biāo)之間就不再是線性的關(guān)系,由于過(guò)程中,三角形中像素的紋理坐標(biāo)是通過(guò)插值得出的,在透視變換后,這種插值的結(jié)果將產(chǎn)生失真,需要特定算法進(jìn)行矯正。為了防止紋理采樣時(shí)的混疊現(xiàn)象發(fā)生,紋理采樣通常需要進(jìn)行多點(diǎn)采樣并濾波得出最終結(jié)果。為了提高效率,當(dāng)物體離觀察者越近越大時(shí),采用高分辨率的紋理圖像,而越遠(yuǎn)越小時(shí),則采用低分辨率的紋理圖像。

3.2 圖形繪制系統(tǒng)硬件結(jié)構(gòu)

3D圖形處理領(lǐng)域早期采用全硬件的電路來(lái)依次實(shí)現(xiàn)圖形繪制流水線中的各個(gè)階段。盡管全硬件的結(jié)構(gòu)使得性能和效率都非常高,但靈活性則大大損失。即使在同一個(gè)硬件平臺(tái)上,不同的應(yīng)用程序,不同的3D場(chǎng)景,都有各自不同的特點(diǎn)。繪制這些不同的場(chǎng)景,通常在不同的階段有不同的負(fù)荷,有時(shí)需要采用不同側(cè)重的算法。這些都是固定結(jié)構(gòu)硬件無(wú)法實(shí)現(xiàn)的。

隨著半導(dǎo)體工藝的進(jìn)步,同樣的面積和功耗下,能夠?qū)崿F(xiàn)更多更復(fù)雜的系統(tǒng)。因此,基于可編程處理器的3D圖形繪制系統(tǒng)被廣泛采用,通過(guò)編寫(xiě)程序來(lái)實(shí)現(xiàn)3D繪制中的許多功能,這雖然犧牲了一些性能,但在靈活性上換回得效果使這種方案更具性?xún)r(jià)比。但特定的算法,例如紋理濾波、顏色混合等計(jì)算任務(wù)的硬件性能高出軟件許多倍,因此仍保留使用硬件實(shí)現(xiàn)。

本課題組采用這種可編程處理器,配合固定功能硬件的架構(gòu)來(lái)實(shí)現(xiàn)3D圖形系統(tǒng)。

3.2.1 頂層結(jié)構(gòu)

圖3.2.1 圖形處理器系統(tǒng)頂層

3D圖形處理器包含一個(gè)可編程的及一個(gè)基于Tile繪制方法的光柵單元。為保留采用多個(gè)圖形處理器的方案,系統(tǒng)采用基于SOPC的Nios嵌入式軟核作為整個(gè)系統(tǒng)的控制中樞,與1到多個(gè)圖形處理器構(gòu)成異構(gòu)片上多核系統(tǒng),對(duì)以后可能將實(shí)現(xiàn)的指令發(fā)射,控制計(jì)算解耦合等技術(shù)留下空間。單個(gè)圖形處理器中除了及光柵器外還包含一個(gè)總線接口、一個(gè)DMA、一個(gè)DDR2控制器、一個(gè)指令Cache和一個(gè)紋理Cache。系統(tǒng)的外圍,包括VGA控制器,用戶(hù)輸入等人機(jī)交互接口和Flash控制器,風(fēng)扇控制器,測(cè)溫控制器等外設(shè)IO。

3.2.2 結(jié)構(gòu)

圖3.2.2 可編程頂點(diǎn)處理器結(jié)構(gòu)

面向移動(dòng)設(shè)備的3D圖形處理器對(duì)效率的苛求遠(yuǎn)遠(yuǎn)大于桌面系統(tǒng),目前許多商用嵌入式圖形處理器IP都直接采用片上指令存儲(chǔ)器,對(duì)于指令的效率相當(dāng)敏感。本設(shè)計(jì)沒(méi)有采用高位寬的指令集,而是將指令格式控制在32位。并通過(guò)設(shè)置特殊狀態(tài)寄存器來(lái)輔助指令實(shí)現(xiàn)更靈活更豐富的操作,包括操作數(shù)的預(yù)處理和后處理、矢量運(yùn)算的控制、同步控制等。

頂點(diǎn)處理器支持定點(diǎn)、單精度浮點(diǎn)、特殊函數(shù)運(yùn)算、矢量運(yùn)算。包含8級(jí)流水線及數(shù)據(jù)相關(guān)旁路器。支持1D-4D靈活的SIMD。其中,特殊函數(shù)運(yùn)算,由多項(xiàng)式分段查表擬合的方式實(shí)現(xiàn),支持倒數(shù)、平方根、對(duì)數(shù)、指數(shù)等。

頂點(diǎn)處理器指令集中可尋址的包含1個(gè)標(biāo)量寄存器入口、1個(gè)矢量寄存器入口、1個(gè)參數(shù)寄存器入口及1個(gè)特殊狀態(tài)寄存器入口。

3.2.3 光柵器結(jié)構(gòu)

光柵單元的輸入為三角形的頂點(diǎn)屬性,包含坐標(biāo)、光照強(qiáng)度、顏色、紋理坐標(biāo)等。輸出為需要顯示到屏幕上的像素。

由于3D圖形中,三角形內(nèi)的像素個(gè)數(shù)遠(yuǎn)遠(yuǎn)多余三個(gè)頂點(diǎn),且光柵單元在計(jì)算像素時(shí),需要多次訪問(wèn)存儲(chǔ)器,包括單個(gè)或多個(gè)紋理存儲(chǔ)區(qū)、深度存儲(chǔ)區(qū)、顏色存儲(chǔ)區(qū)。對(duì)外部存儲(chǔ)器帶寬要求極大,而面向移動(dòng)設(shè)備的3D圖形處理器僅允許很小的外部帶寬。為解決這種矛盾。本課題組采用基于Tile繪制方式的光柵單元。

在基于Tile的繪制方式中,將屏幕分割成諸多稱(chēng)為T(mén)ile的小區(qū)域,逐個(gè)繪制這些小區(qū)域。具體的過(guò)程為:首先將所有三角形歸屬到各自的Tile中,依次遍歷每個(gè)Tile,每個(gè)Tile中依次遍歷所有三角形,將該Tile的深度緩存、顏色緩存都置于片內(nèi)存儲(chǔ)器中,以此獲得顯著提升的帶寬。繪制完每個(gè)Tile后,將該Tile的深度緩存及顏色緩存存入片外存儲(chǔ)器,再載入下一個(gè)Tile的深度及顏色緩存。

在每個(gè)Tile中又進(jìn)一步分割成多個(gè)Block,在光柵的第一個(gè)階段,判斷三角形覆蓋哪些Block,再判斷這些Block中的每個(gè)像素是否在三角形內(nèi),篩選出三角形內(nèi)的點(diǎn)后,根據(jù)該點(diǎn)在三角形中的位置,由三個(gè)頂點(diǎn)的屬性對(duì)其進(jìn)行加權(quán)插值,得出的深度、顏色、紋理等屬性經(jīng)深度測(cè)試、紋理貼圖、顏色混合后,最終進(jìn)入顏色緩存。



評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉