專利名稱:嵌入式gpu實現3d-gis的快速渲染系統的制作方法
技術領域:
本發明屬于嵌入式技術領域,具體涉及到采用嵌入式GPU終端實現3D-GIS地圖的快速渲染系統。
背景技術:
目前,嵌入式圖形都是二維圖形的應用,最常見的應用實例有俄羅斯方塊、貪吃蛇等小游戲。此外,有些嵌入式設備上還支持攝像保存、發送以及接收操作,這些都是基于圖片的編解碼及圖形顯示的原理,雖然這些應用比起貪吃蛇這類應用要求更加復雜,但是只要仔細分析就會發現,所有的這些圖形應用還是局限于二維平面上。隨著集成電路工藝的發展,一些單芯片設計已經開始具備了類似處理3D圖形計算的能力。3D圖形的硬件加速已經不再局限于個人電腦和工作站,同樣能在嵌入式系統上實現。在3D圖形領域中,對于個人電腦而言,3D圖形硬件加速這一技術已經趨于成熟。但是對于消費類電子行業,如何構建一個低成本,低功耗,高質量顯示的嵌入式3D圖形處理芯片還是一個新的挑戰。嵌入式硬件平臺一般都是因為一些特殊的需要而產生的具有比較單一目的而開發的,它有成本低、性能穩定、硬件資源少、功耗低等特點。也正是由于這樣一些原因,在這樣的平臺上進行三維開發必然帶來成本上升,而且三維計算量大也會導致系統資源捉襟見肘。導致嵌入式平臺上三維圖形學應用和計算機上的應用相差甚遠的原因,并不是嵌入式平臺上沒有進行三維應用的必要,而是嵌入式系統平臺硬件資源有限,在一個不具備圖形硬件的平臺上幾乎不可能完成比較復雜的三維模型的建模及顯示。以最為普遍使用的移動設備手機為例,傳統的游戲和視頻都是通過CPU來進行算術運算,這大大消耗了 CPU的資源,導致嵌入式多媒體的發展遭遇瓶頸;而且,嵌入式技術注重低功耗技術,電池壽命往往嚴重影響到嵌入式設備的性能,大量的三維模型運算和帶寬消耗必將導致電池壽命的縮短。隨著SOC技術的不斷發展,使得芯片的集成度越來越高,可編程圖形硬件技術也在不斷的發展進步,體積和價格都有了大幅下降。由于消費類嵌入式電子設備有向集成度更高,多媒體功能更加豐富、數據處理能力更強的方向發展的趨勢。目前,一些嵌入式多媒體芯片推向市場,不僅在聲音處理、圖片保存及顯示等功能上有了很大的突破和發展,目前已經向3D加速的功能上迅速發展。可編程圖形硬件技術不斷進步,使得利用硬件實時繪制三維圖形成為可能。這極大地推動了嵌入式三維圖像處理的開發。
發明內容
本發明提出一種針對嵌入式終端開發的3D-GIS電子地圖系統,該系統可以實現用戶終端和服務器的實時交互,并在用戶終端上利用嵌入式GPU進行實時3D渲染。整個系統包括服務器、客戶端和GIS數據庫三個部分。
服務器用于制作模型、控制數據流、數據獲取、數據傳送。GIS數據庫可進一步細分為兩類2D-GIS數據庫和3D-GIS數據庫。服務器的數據傳送主要是指根據客戶終端的請求從GIS數據庫中獲取數據并通過網絡傳送給客戶終端,客戶終端是使用嵌入式GPU的嵌入式設備,嵌入式GPU主要負責將服務器傳送過來的GIS數據進行渲染并顯示在屏幕上。客戶終端的系統框架由硬件層、驅動層、系統平臺和應用層組成。所述客戶端的系統框架硬件層,由嵌入式終端和3D-GIS功能關聯的硬件組成,主要包括主處理器CPU、嵌入式GPU、輸入設備(鍵盤以及鼠標)、顯示屏、內存等等。所述客戶端的系統框架驅動層,表示該層是直接和硬件交互的軟件驅動層,由串口驅動、SDUEGLJPOpenGL ES組成。其中,串口驅動直接提供GPS數據的解析和接收。SDL 函數提供對鍵盤、鼠標和觸摸屏的支持,能夠為嵌入式GIS的導航提供人機交互,對3D地圖進行旋轉和縮放。EGL提供的是對本地視窗系統的支持,有了 EGL的支持,可以在嵌入式設備上實現無窗口管理系統,節省了很大部分的嵌入式資源。OpenGL ES為3D地圖繪制和大規模的場景渲染提供了 API,結合PowerVR SGX的API函數接口,進行3D-GIS地圖的快速渲染。所述客戶端的系統平臺,一般采用嵌入式Linux,嵌入式Linux是以Linux為基礎的嵌入式作業系統,它被廣泛應用在移動電話、個人數字助理(PDA)、媒體播放器等消費類電子廣品。所述客戶端的應用層,是客戶端系統的最上面的一層,通過調用系統API、視窗管理API (EGL)、PowerVR Shell API、OpenGL ES API實現3D場景的繪制和大規模地圖的渲染。本發明提出了一種針對嵌入式GPU實現3D的大規模場景繪制和渲染的系統,其主要流程包括模型制作、數據操作、CPU和嵌入式GPU初始化、場景渲染、3D場景顯示和資源回收等環節。(I)模型制作在服務器上運行三維建模軟件,例如3DMax Maya等軟件,完成三維地圖建模和場景設置,得到帶渲染的數據文件,并將這些3D數據存放于3D-GIS數據庫中。(2)數據操作服務器根據客戶終端發來的請求,確定所需要的2D和3D地圖數據,并從GIS數據庫中獲取這些數據,最后將這些數據傳送給客戶終端。所述的2D和3D地圖數據,是根據客戶終端發送過來的請求確定的。用戶在進行地圖選擇時,通過鼠標或者觸摸屏選擇所需要的地圖部分,該部分為用戶期望顯示于顯示屏中央的部分,如果該部分的3D數據在客戶端不存在,那么客戶終端想服務器發送請求獲取數據。服務器根據用戶所需要的位置,從3D-GIS數據庫獲取該部分的3D數據,并從2D-GIS 數據庫獲取所需地圖位置周邊區域的2D數據,并將這些2D、3D數據一起發送給客戶終端進行顯示。(3)客戶終端CPU和GPU初始化CPU開辟內存空間,加載地圖數據到內存中,SDL 初始化,提供觸摸屏、鼠標、鍵盤響應的支持;串口驅動程序接收和解析GPS協議數據;嵌入式GPU初始化,開辟足夠的顯存存放多邊形數據。(4)場景渲染CPU將需要渲染的靜態幀渲染任務分解成若干渲染子任務(以塊為單位),通過總線發送到嵌入式GPU,嵌入式GPU并行渲染節點,對渲染子任務并行處理,完成渲染工作,得到渲染后的靜態幀。(5) 3D場景顯示嵌入式GPU計算得到的數據傳送到屏幕顯示映射內存空間并在觸摸顯示屏上進行顯示。(6)資源回收程序結束后,CPU釋放開辟的內存空間,GPU釋放開辟的顯存空間, 進行資源回收。
四
圖I.系統組成結構圖2.設備終端實現框架3. PowerVR SGX的硬件架構圖4. OpenGL ES 2. O可編程管線處理流程圖5.典型的EGL系統布局6.客戶端的程序流程圖
五具體實施例方式以下結合附圖和具體的實施用例來對本發明進一步額詳細說明。需要指出的是, 本發明可以以許多不同的實施方式實現,而并不局限于本文所述的實施方式。本發明提出一種針對嵌入式終端開發的3D-GIS電子地圖系統,該系統可以實現用戶終端和服務器的實時交互,并在用戶終端上利用嵌入式GPU進行實時3D渲染。如圖I 所示,整個系統包括服務端和客戶端兩個部分。服務端由服務器和GIS數據庫組成。服務器用于制作模型、控制數據流、數據獲取、數據傳送。GIS數據庫由兩部分組成2D-GIS數據庫和3D-GIS數據庫。其中3D-GIS數據庫是由服務器通過使用3D模型軟件經過模型制作生成的。服務器的數據傳送主要是指服務器根據客戶終端的請求從GIS數據庫中獲取數據并通過網絡傳送給客戶終端,服務器所獲取和傳送的數據既有2D數據也有3D數據。客戶終端的平臺處理器包括嵌入式CPU和嵌入式GPU等主要組成部分,其中,CPU 主要負責硬件的管理、數據流的控制和網絡交互,嵌入式GPU主要負責將服務器傳送過來的GIS數據進行渲染并顯示在屏幕上。下面基于AM3517平臺為例作詳細介紹,該平臺的微處理器(MPU)采用了 ARMCortex-AS,另外還使用了嵌入式GPU進行圖形計算及顯示。該平臺具有很強的處理核心和三維圖形加速功能。它的嵌入式GPU圖形引擎為PowerVR SGX,該圖形引擎處理速度達每秒IOMpolygon,并支持OpenGL ES 2. O,可加速實現3D圖形用戶界面。3D-GIS快速渲染系統的客戶終端可以從結構上分為硬件結構和軟件設計。硬件結構主要有ARM主處理器芯片、PowerVR嵌入式GPU、輸入設備(如鍵盤和鼠標等)、輸出設備(IXD顯示屏)和存儲器。軟件方面涉及到嵌入式Linux操作系統、SDUOpenGL ES, EGL 等等。圖2是客戶終端設備整個系統的實現框架圖。客戶終端3D-GIS電子地圖框架由硬件層、驅動層、系統平臺和應用層組成(I)硬件層主要包括嵌入式終端和3D-GIS功能關聯的硬件。a)主處理器 ARM Cortex_A8 ;
b)鍵盤鼠標;c)嵌入式圖形顯不卡PowerVR SGX ;d) LCD觸摸顯示屏;e)內存。(2)驅動層該層是直接和硬件交互的軟件驅動層,串口驅動直接提供GPS數據的解析和接收,GPS數據用于用戶終端開機或者重置時進行當前地理位置的確定,并從服務端獲取當前位置地圖數據進行默認顯示。SDL函數提供了對鍵盤、鼠標和觸摸屏的支持,以讓用戶選擇所需要的地理位置,為嵌入式GIS的導航提供人機交互,對3D地圖進行旋轉和縮放。EGL提供了對本地視窗系統的支持,有了 EGL的支持,可以在嵌入式設備上實現無窗口管理系統,節省了很大部分的嵌入式資源。OpenGL ES為3D地圖繪制和大規模的場景渲染提供了 API,結合PowerVR SGX的API函數接口,進行3D-GIS地圖的渲染。(3)系統平臺系統平臺采用了嵌入式Linux,嵌入式Linux是以Linux為基礎的嵌入式作業系統,它被廣泛應用在移動電話、個人數字助理(PDA)、媒體播放器、消費類電子
女口
廣叩ο(4)應用層這是最上面的一層,通過系統API、視窗管理API (EGL)、PowerVR Shell API、OpenGL ES API提供了 3D場景的繪制和大規模地圖的渲染。其中PowerVR SGX 有三個顯著的優點,首先是 TBDR(Tile_Based Deferred Rendering)省電架構,可在片上內存中處理隱藏面消除(Hidden Surface Removal)和混合(Blending),通過減少內存數據帶寬而達成省電效果;其次是可編程的通用可伸縮說色引擎(Universal Scalable Shader Engine, USSE),此模塊為芯片的運算中心。USSE可將各個著色器的工作(包括頂點處理和像素處理)自動配置給USSE中多個執行單元,讓硬件使用率達到最佳狀態;最后是省電技術,除了 TBDR外,同時也使用頻率閘控方式來確保最少的待機耗電量。PowerVR SGX的硬件架構如圖3所示,主要包括主處理器接口、系統存儲器接口、幾何圖形管理器、圖像合成處理器(ISP)、粗粒度調度器(CGS)、通用可伸縮著色引擎 (USSE)、塊協處理器以及多級緩存等。3D圖形處理芯片是一個比較復雜的系統,往往由很多特殊和復雜功能的子系統組成。下面是三角形在PowerVR SGX管線渲染的工作流程步驟I :基本圖元數據通過粗粒度調度器CGS模塊處理后遞交給通用可伸縮著色引擎(USSE),處理過程是通過頂點著色器程序來產生輸出。步驟2 :輸出的數據被傳送到塊著色單元。它負責場景的裁剪、表面剔除和分塊渲染。之后,塊著色單元將其產生的壓縮數據流傳入到內存中,圖像綜合處理器(ISP)對分立的塊中的相關三角形進行渲染。步驟3 :經過這一系列設置操作,三角形數據真正進行了深度/模板測試的加工。步驟4 :之后這些分塊的數據會被傳送到ISP然后進入到USSE進行片段著色。步驟5 =UUSE的數據處理結果將被像素協處理器處理運算后寫入片上的緩沖區中。步驟6:輸出顯示。上面描述了三角形在PowerVR SGX中的渲染過程,下面就其進行3D圖像顯示及大規模數據處理流程進行詳細描述。(I)構建場景數據。第一步主要由CPU執行操作,CPU運行由OpenGL編寫的程序,程序的輸出都是基于基本的三角形操作,輸出被存放到緩沖區內,對于PVRSG (PowerVR Second Generation technology),這個緩沖區必須大到容納所有的三角形數據。(2)分塊操作。這是PVRSG執行的第一個操作,不同于在傳統的立即渲染技術中計算場景緩沖區中每一個多邊形,而不管可見與否。PVRSG只是渲染那些最終在屏幕上可見的像素。PowerVR的TBR (TiIe-Based Rendering)在幾何運算后,將屏幕的像素分成了很多矩形小塊,先經過每個小塊的深度測試,測試小塊是否可見決定小塊中的像素是否應當被渲染,之后將需要被渲染的部分再交給渲染管線去處理,最后輸出。這樣一來,不可見的像素已經提前被剔去不用被渲染,很大程于上節省了帶寬,減少了渲染管線的壓力。(3)隱藏表面算法。隱藏表面算法是PVRSG很有趣的一部分,隱藏表面算法作用于每一個小塊,每塊大約32x16像素。工作流程如下(a)從塊緩沖區獲得指向特定具體塊的第一個指針;(b) 使用獲得的三角形數據為這個塊中的每個像素計算得到深度值(Z-value) ; (c)計算得到的擁有深度值的塊被存儲在片上芯片中,然后計算下一個塊,如此循環直到結束。(4)渲染。渲染需要使用前面獲得信息一個包含所有的像素將要被渲染的塊的緩沖區,指向存放在場景緩沖區中的三角型數據的指針,這些數據決定了頂點的顏色和其他一些屬性。(5)傳送到幀緩沖。最后一步很顯然就是將所有要輸出顯示的塊轉移到緩沖區中的顯示內存中,完畢就可以完整的顯示場景了。這里可以加入反鋸齒的一些操作。系統的軟件部分包括OpenGL ES、SDL、EGL三大部分,下面針對OpenGL ES進行詳細的描述。圖4顯示的是OpenGL ES 2. O可編程管線處理流程。相對于OpenGL ES I. X固定管線,OpenGL ES 2. O中的Vertex Shader和Fragment Shader是兩個可編程功能模塊,因此,可以通過該功能來實現現實3D的快速顯示。OpenGL ES本質上是一個圖形渲染管線的狀態機,主要對圖元進行頂點和片段著色處理,外加其他一些附加渲染,最后將處理結果交給FrameBufTer (幀緩存)。而EGL則是用于監控這些狀態以及維護Framebuffer和其他渲染Surface的外部層。圖5是一個典型的EGL系統布局圖。OpenGL ES圖形管線的狀態被存儲于EGL管理的一個Context中。Frame Buffers 和其他繪制Surfaces通過EGLAPI創建、管理和銷毀。EGL同時也控制和提供了對設備顯示和可能的設備渲染配置的訪問。OpenGL本身并不支持一些交互性操作,所以我們引入了 SDL來實現人機交互,通過引入鍵盤、鼠標事件以及觸摸屏來實現對3D場景的控制、變換視角、旋轉、縮放、漫游和其他娛樂功能(如點擊標志來觀看視頻等等)。以上描述了客戶端的硬件架構和軟件平臺,本發明所提出的基于服務端和客戶端的系統,其主要流程包括服務端模型制作、數據操作、客戶端CPU和嵌入式GPU初始化、 場景渲染、3D場景顯示和資源回收等部分。在這里所述的CPU和嵌入式GPU分別指的是 ARMCortex-A8 和 PowerVR SGX。
(I)模型制作在服務器端運行三維建模軟件,例如3DMax Maya等軟件,完成三維地圖建模和場景設置,得到帶渲染的數據文件,并將這些3D數據存放于3D-GIS數據庫中。(2)數據操作服務器根據客戶終端發來的請求,確定所需要的2D和3D地圖數據,并從GIS數據庫中獲取這些數據,最后將這些數據傳送給客戶終端。所需的2D和3D地圖數據,是根據客戶終端發送過來的請求確定的。用戶在進行地圖選擇時,通過鼠標或者觸摸屏選擇所需要的地圖部分,該部分為用戶期望顯示于顯示屏中央的部分,如果該部分的3D數據在客戶端不存在,那么客戶終端想服務器發送請求獲取數據。服務器根據用戶所需要的位置,從3D-GIS數據庫獲取該部分的3D數據,并從2D-GIS 數據庫獲取所需地圖位置周邊區域的2D數據,并將這些2D、3D數據一起發送給客戶終端。 客戶端接受這些數據并進行顯示。(3)客戶終端CPU和GPU初始化CPU開辟內存空間,加載地圖數據到內存中,SDL 初始化,提供觸摸屏、鼠標、鍵盤響應的支持;串口驅動程序接收和解析GPS協議數據;嵌入式GPU初始化,開辟足夠的顯存存放三角形數據。(4)場景渲染CPU將需要渲染的靜態幀渲染任務分解成若干渲染子任務(以塊為單位),通過總線發送到嵌入式GPU,嵌入式GPU并行渲染節點,對渲染子任務并行處理,完成渲染工作,得到渲染后的靜態幀。其中涉及到透明和半透明圖形處理。(5) 3D場景顯示嵌入式GPU計算得到的數據傳送到屏幕顯示映射內存空間并在觸摸顯示屏上進行顯示。(6)資源回收程序結束后,CPU釋放開辟的內存空間,GPU釋放開辟的顯存空間, 進行資源回收。為了能夠充分利用嵌入式GPU PowerVR的強大功能,需要結合其硬件特性進行程序設計。并按順序執行以下五個步驟(I) InitApplication :這函數是在任何API函數初始化之前被調用,用于加載應用程序所需數據,例如物體位置,頂點數據數組等,而不需要調用其他任何API函數。在這里我們實現開辟內存空間,以用來加載地圖數據;(2) InitView :這個函數在InitApplication函數被初始化后調用,用來做剩余的初始化工作,由函數來調用完成。在這里主要是初始化串口,以用于傳輸GPS定位信息,以及SDL和EGL的初始化等操作。(3) RenderScene :這個函數循環被調用來繪制所有幾何物體。返回false值進入退出序列。在這里加載的地圖數據和大規模場景數據被送到嵌入式GPU中進行運算,采用了 TBDR技術,通過頂點和片段著色單元計算最后的輸出數據,并將最終數據保存在內存區域中。(4) ReleaseView :這個函數在API函數被釋放前調用,用于釋放API函數調用的系統資源,例如頂點和片段緩沖區的釋放。(5) QuitApplication :這個函數最后被調用,當所有的API函數被釋放后,它用來釋放剩余的用戶分配的內存。整個客戶端的程序設計圖如圖6所示,其中包括了終端對用戶的響應以及與服務端的交互。在本發明中,我們引入了嵌入式GPU =PowerVR.,它為我們解決了嵌入式設備中的功耗過大、帶寬不足、運算緩慢等技術瓶頸,引領了移動設備和手持設備多核化的新潮流。 能夠實現高清晰的多細節的3D大規模場景的快速實現。最后應說明的是,以上實例只是針對所提方案的一個實現例程,只是為了說明本發明而不是限制本發明描述的技術方案;因此盡管本說明書參考上述的實施實例對本發明進行詳細的說明,但本領域的普通技術人員應當理解,仍然可以對本發明進行修改或者等同替換;而一切不脫離本發明的精神和范圍的技術方案及其改進,其均應涵蓋在本發明的權利要求范圍當中。
權利要求
1.嵌入式GPU實現3D-GIS的快速渲染系統,其特征在于系統包括服務器,GIS數據庫,客戶終端,服務器和客戶終端通過網絡進行數據交互,地圖數據保存在GIS數據庫中, 客戶終端獲得地圖數據后進行3D地圖的顯示。
2.根據權利要求I所述的嵌入式GPU實現3D-GIS的快速渲染系統,其特征在于所述服務器的功能,主要包括制作模型、控制數據流、數據獲取、數據傳送四個部分,其中制作模型表示服務器具有對三維地圖進行建模和場景設置以生成3D數據的功能;控制數據流表示服務器具有控制數據接收和發送以及控制從GIS數據庫獲取的數據量和向用戶發送的數據量的功能;數據獲取表示服務器需要從GIS數據庫進行數據訪問并將獲得數據傳送給用戶;數據傳送表示服務器需要將數據傳送給用戶。
3.根據權利要求I所述的嵌入式GPU實現3D-GIS的快速渲染系統,其特征在于所述 GIS數據庫包括由兩個部分組成,2D-GIS數據庫和3D-GIS數據庫,分別存放2D和3D地圖數據。
4.根據權利要求I所述的嵌入式GPU實現3D-GIS的快速渲染系統,其特征在于所述客戶終端為嵌入式終端,包括兩類處理單元組成嵌入式CPU和嵌入式GPU,嵌入式CPU負責一般的控制和計算,嵌入式GPU負責3D場景的快速渲染以實現畫面的快速顯示。
5.根據權利要求I所述的嵌入式GPU實現3D-GIS的快速渲染系統,其特征在于所述客戶終端可以為移動終端,也可以為固定終端,客戶終端與服務器交互的網絡可以是有線網絡和無線網絡。
6.根據權利要求I所述服務器和客戶終端的交互,其特征在于客戶終端向服務器進行數據請求,請求包含需要顯示3D地圖對應的地理位置信息,服務器根據該位置信息向 GIS數據庫獲取數據,獲取的數據為客戶端所請求地理位置的3D地圖數據及該地理位置周邊區域的2D地圖數據,并將這些數據一并傳送給客戶終端。
7.根據權利要求I所述服務器和客戶終端的交互,其特征在于客戶終端將獲得地圖數據進行顯示,其中包括2D和3D數據,顯示在客戶終端顯示屏上的是3D地圖,在這些地圖周圍的2D地圖數據存放于客戶終端本地,當用戶對顯示地圖進行移動時,這些2D地圖則會被顯示,不需要再與服務器進行交互,但是如果用戶所選擇地理位置部分沒有3D數據,并且本地存在2D數據,則進行2D地圖顯示,并向服務器進行數據請求,否則如果客戶終端本地不存在2D數據,則直接向服務器進行數據請求。
全文摘要
本發明針對在一般嵌入式平臺上進行大量三維運算中存在的計算資源短缺的問題提出了一種基于嵌入式GPU實現3D-GIS的快速渲染系統。使用嵌入式GPU滿足了嵌入式平臺低功耗、大運算、低帶寬的計算資源要求,實現了嵌入式平臺上3D-GIS的快速渲染及顯示。本發明公開的系統由服務器、GIS數據庫和客戶終端三大部分組成,通過網絡可以實現用戶終端和服務器的實時交互,借助嵌入式GPU強大的并行計算能力和3D渲染算法,最終實現在嵌入式終端上進行實時顯示3D地圖的功能。
文檔編號G06F17/30GK102609971SQ20121000693
公開日2012年7月25日 申請日期2012年1月11日 優先權日2012年1月11日
發明者嚴正飛, 劉燁, 季曉勇, 張李曄, 王健, 韋峰 申請人:南京大學