新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 輕松實現3D圖形處理的設計技巧

        輕松實現3D圖形處理的設計技巧

        作者: 時間:2017-06-04 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/201706/348717.htm

        1. 科學性

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

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

        圖2.1 移動設備圖形領域的發展

        過去幾十年中,桌面PC及工作站一直是3D圖形繪制的主流平臺,圖形處理系統的架構與算法也主要基于這種大面積、高存儲帶寬、高功耗的特性。然而,移動設備在外部存儲帶寬、功耗、面積等制約因素上有著數量級的劣勢。但是,移動設備往往又僅需在較小的分辨率上繪制圖形。較小的分辨率意味著能接受以恰當的方式忽略一些細節,并且通常不會在一個屏幕中包含太多物體。正是和桌面平臺相比之下的這些劣勢與優勢,使面向移動設備的系統自成一體,絕不能靠簡單地移植桌面圖形處理系統來實現。

        因此,研究與設計全新的體系架構、執行流程、算法、開發調試環境及方法等,都成為面向移動設備的圖形處理系統的關鍵技術與創新難點。概括起來,本項目的科學性有如下幾點:

        1)基于移動平臺上的圖形處理器的硬件架構、算法和接口,業內都有各自的側重和妥協,尚無較統一方案。研究分析圖形系統各階段的關鍵技術,評估多種實現方案間的優劣,將具有重大的科研及市場價值。

        2)由于本項目涉及到了圖形處理的各個方面,而國內尚無GPU生產廠家,因此對于國內涉及到3D圖形顯示的各個相關產業都具有重要的意義。本項目將會幫助廠家能夠更好地提高方面的技術,致力于給消費者更好的體驗,以使國產電子產品取得更大的市場份額。

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

        2. 創新性

        從算法和硬件架構兩個層次進行優化,并從運算速度、芯片功耗和靈活性三方面考慮,以實現用一個較低復雜度和較低功耗的3D圖形處理器對真實感圖形實現硬件加速。本課題組的創新性主要體現在如下幾個方面:

        1)所有算法采用定點實現,并在精度允許的情況下盡量減小數據位寬,以降低電路復雜度和功耗。

        2)硬件結構上含有基于Tile的光柵單元。基于Tile的繪制方法大大減小了訪問外部存儲器的帶寬,從而降低了功耗。

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

        3. 技術方案

        3D圖形繪制系統的基本組成,是3D圖形算法程序以及圖形處理器硬件。確定算法程序及硬件結構后,便可進行各種測試分析。

        3.1 3D圖形算法

        要能實時繪制3D場景,就需要在計算機中為場景內每一個物體進行建模,為了方便在計算機中對不同形狀不同屬性的物體建模,最常用的方法是用許多三角形面片構成一個多面體來擬合實際物體。對這個物體的3D圖形繪制流程,大部分內容就是對這些三角形的繪制。

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

        3.1.1 坐標轉換

        物體建模時,采用這個物體的幾何坐標來表示其形狀,這時所使用的坐標系稱為模型坐標系,模型坐標系的原點往往取自幾何物體的某個點或者附近的某點。當這個物體和其他物體一起被設定到3D場景中時,多個物體必須公用場景的原點,此時,大場景構成一個世界坐標系。而人眼從顯示器去看這個大場景時,只會以特定的角度及深度看到場景的一部分的投影,即存在一個視椎體,這個投影最終出現在屏幕上時,變成平面的圖像,即屏幕坐標系。

        物體在這幾個坐標系間轉換,需要對每個幾何頂點做矩陣運算。矩陣的值由坐標轉換時的相關參數確定,例如,在世界坐標系中的偏移,旋轉,縮放值,視椎體的深度角度,屏幕的分辨率等。

        3.1.2 光照計算

        正確的光照,改變物體本來的顏色明暗,并立刻產生顯著的真實感。光照處理的對象是計算物體上每個點所反射出的光強大小。這個過程需要根據光源的類型、屬性,物體表面的材質,物體表面法線與光源的角度,物體與光源的距離,人眼與物體的角度、距離等因素來計算最終的光照強度。

        光源主要包括平行光、點光、聚光。物體對光的反應特性主要包括反射、吸收、透射。其中最主要的反射,包括環境泛光、漫反射、鏡面反射。泛光主要用來體現環境中物體散射到物體并反射的光。漫反射是物體向空間各角度均勻反射的光,其強度與入射角的余弦成正比,但與視點無關。鏡面反射是朝特定方向反射的光。當鏡面反射光恰好進入視點時,將能看到通常所說的高光面。

        3.1.3 可見性判斷

        3D場景繪制,是對真實情況的建模和顯示,物體之間嚴格按照自然的遮擋關系,物體每個點在視野中的前后都需要經過判斷,以確保近處的能恰當得遮擋遠處的。因此需要設定專門的深度緩存,屏幕上的每個像素在繪制前都需要根據深度來判斷,如果前面有不透明物體遮擋的話,該點將不會被繪制。

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

        3.1.4

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

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

        3.1.5 紋理貼圖

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

        3.2 圖形繪制系統硬件結構

        3D圖形處理領域早期采用全硬件的電路來依次實現圖形繪制流水線中的各個階段。盡管全硬件的結構使得性能和效率都非常高,但靈活性則大大損失。即使在同一個硬件平臺上,不同的應用程序,不同的3D場景,都有各自不同的特點。繪制這些不同的場景,通常在不同的階段有不同的負荷,有時需要采用不同側重的算法。這些都是固定結構硬件無法實現的。

        隨著半導體工藝的進步,同樣的面積和功耗下,能夠實現更多更復雜的系統。因此,基于可編程處理器的3D圖形繪制系統被廣泛采用,通過編寫程序來實現3D繪制中的許多功能,這雖然犧牲了一些性能,但在靈活性上換回得效果使這種方案更具性價比。但特定的算法,例如紋理濾波、顏色混合等計算任務的硬件性能高出軟件許多倍,因此仍保留使用硬件實現。

        本課題組采用這種可編程處理器,配合固定功能硬件的架構來實現3D圖形系統。

        3.2.1 頂層結構

        圖3.2.1 圖形處理器系統頂層

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

        3.2.2 結構

        圖3.2.2 可編程頂點處理器結構

        面向移動設備的3D圖形處理器對效率的苛求遠遠大于桌面系統,目前許多商用嵌入式圖形處理器IP都直接采用片上指令存儲器,對于指令的效率相當敏感。本設計沒有采用高位寬的指令集,而是將指令格式控制在32位。并通過設置特殊狀態寄存器來輔助指令實現更靈活更豐富的操作,包括操作數的預處理和后處理、矢量運算的控制、同步控制等。

        頂點處理器支持定點、單精度浮點、特殊函數運算、矢量運算。包含8級流水線及數據相關旁路器。支持1D-4D靈活的SIMD。其中,特殊函數運算,由多項式分段查表擬合的方式實現,支持倒數、平方根、對數、指數等。

        頂點處理器指令集中可尋址的包含1個標量寄存器入口、1個矢量寄存器入口、1個參數寄存器入口及1個特殊狀態寄存器入口。

        3.2.3 光柵器結構

        光柵單元的輸入為三角形的頂點屬性,包含坐標、光照強度、顏色、紋理坐標等。輸出為需要顯示到屏幕上的像素。

        由于3D圖形中,三角形內的像素個數遠遠多余三個頂點,且光柵單元在計算像素時,需要多次訪問存儲器,包括單個或多個紋理存儲區、深度存儲區、顏色存儲區。對外部存儲器帶寬要求極大,而面向移動設備的3D圖形處理器僅允許很小的外部帶寬。為解決這種矛盾。本課題組采用基于Tile繪制方式的光柵單元。

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

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



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 富源县| 西乌| 商河县| 邵阳市| 南通市| 沙田区| 平利县| 公主岭市| 新兴县| 富蕴县| 龙川县| 黑水县| 图片| 南宫市| 武宁县| 常山县| 灵宝市| 山东省| 德兴市| 罗田县| 启东市| 肥乡县| 凤冈县| 灌南县| 深州市| 拉孜县| 武穴市| 霍州市| 桃园市| 寻乌县| 库尔勒市| 兰考县| 台北县| 宜阳县| 西乡县| 凉城县| 磐安县| 应城市| 饶平县| 潮州市| 九寨沟县|