本發(fā)明涉及計算機圖形處理、計算機游戲技術(shù)領(lǐng)域,尤其涉及一種基于圖形處理器加速的地形渲染方法,尤其適用在2D圖形渲染加速方面。
背景技術(shù):
游戲引擎出現(xiàn)之后,也在另一方面促進著游戲開發(fā)。隨著顯卡性能越來越強,游戲的畫質(zhì)越來越高,游戲開發(fā)周期也越來越長,通常都會達到3到5年,自行開發(fā)游戲引擎的話時間還會更長,所以大多數(shù)游戲公司還是選擇購買現(xiàn)成的游戲引擎,簡化游戲的開發(fā)過程。
那么,實際的游戲開發(fā)過程中,游戲引擎是如何把游戲與顯卡連接在一起的,游戲中的各種特效是如何調(diào)用顯卡來實現(xiàn)的?這個問題如果要回答的很專業(yè),恐怕不在筆者知識范圍之內(nèi)了,不過我們可以用很簡單的方法來說解釋一下。顯卡是游戲的物理基礎(chǔ),所有游戲效果都需要一款性能足夠的顯卡才能實現(xiàn),在顯卡之上是各種圖形API,目前主流的是DirectX和OpenGL,我們所說的DX10、DX9就是這種規(guī)范,而游戲引擎則是建立在這種API基礎(chǔ)之上,控制著游戲中的各個組件以實現(xiàn)不同的效果。
在引擎之上,則是引擎開發(fā)商提供給游戲開發(fā)商的SDK開發(fā)套件,這樣游戲廠商的程序員和美工就可以利用現(xiàn)成的SDK為自家的游戲加如自家建立的模型、動畫以及畫面效果,而最終的成品則是各種游戲。
時至今日,游戲引擎已從早期游戲開發(fā)的附屬變成了今日的當家角色,對于一款游戲來說,能實現(xiàn)什么樣的效果,很大程度上取決于使用的引擎由多么強力。如果對什么才是優(yōu)秀的游戲引擎做個判斷,那么優(yōu)秀的游戲引擎一定具有如下優(yōu)點:
①、完整的游戲功能。隨著游戲要求的提高,現(xiàn)在的游戲引擎不再是一個簡單的2D、3D圖形引擎,而是涵蓋圖形、音效處理、AI運算、物理碰撞等游戲中的各個組件,組件設計也應該是模塊化的,可以按需購買。以這兩年最成功的虛幻3引擎為例,雖然全部授權(quán)金(不包括售后技術(shù)服務)高達幾十萬甚至上百萬美元,但是可以分別購買相關(guān)組件,降低授權(quán)費用。
②、強大的編輯器和第三方插件。優(yōu)秀的游戲引擎還要具備強大的編輯器,包括場景編輯、模型編輯、動畫編輯等,編輯器的功能越強大,美工人員可發(fā)揮的余地就越大,做出的效果也越多。而插件的存在,使得第三方軟件如Flash、3DS Max、Maya可以與引擎對接,無縫實現(xiàn)模型的導入導出。
③、簡潔有效的SDK接口。優(yōu)秀的引擎會把復雜的圖像算法封裝在模塊內(nèi)部,對外提供的則是簡潔有效的SDK接口,有助于游戲開發(fā)人員迅速上手,這一點就如各種編程語言一樣,越高級的語言越容易使用。
④、其他輔助支持。優(yōu)秀的游戲引擎還提供網(wǎng)絡、數(shù)據(jù)庫、腳本等功能,這一點對于面向網(wǎng)游的引擎來說更為重要,網(wǎng)游還要考慮服務器端的狀況,要在保證優(yōu)異畫質(zhì)的同時降低服務器端的極高壓力。
大規(guī)模地形渲染是虛擬自然場景中的重要組成部分,目前國內(nèi)外游戲地形渲染中通常使用了基于中央處理器(CPU)的運算方法計算細節(jié)層次,雖然能夠大幅降低三角形渲染數(shù)量,但缺陷是每一幀都需要更新從CPU到GPU傳送的三角形數(shù)據(jù),占用寶貴的CPU資源和總線帶寬。
有較多的對每個分塊的四條邊,在現(xiàn)有的頂點的基礎(chǔ)上再延伸出一圈,他們和單個分塊的邊界共享頂點,只是高度值不同,這種延伸出來的一圈叫做“裙子”(Skirts)。投影之后只要保證頂點的高度值足夠大,兩個分塊的裙子可以把裂縫遮擋住。
綜上所述,現(xiàn)有技術(shù)中對于游戲地形渲染的效率較低,該問題亟待解決。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于克服上述現(xiàn)有技術(shù)之不足而提供一種基于圖形處理器加速的地形渲染方法,本發(fā)明使用圖形處理器(GPU)實現(xiàn)的幾何體層次細分(LOD)算法,能夠有效消除T型裂縫。該算法簡單高效,節(jié)約資源,有效消除了地形LOD渲染過程中出現(xiàn)的T型裂縫問題。另外基于圖形處理器(GPU)進行計算,節(jié)省了CPU的運算資源,提升了CPU的處理性能。本技術(shù)能夠高質(zhì)量高性能的渲染大規(guī)模地形。
為實現(xiàn)上述目的,本發(fā)明提供一種基于圖形處理器加速的地形渲染方法,包括如下步驟:
S101,將原始地形圖像劃分為多個面積相等的地形塊;
S102,使用LOD地形繪制算法,創(chuàng)建不同LOD級別的頂點緩沖和索引緩沖;
S103,用四叉樹組織整個原始地形,每個葉子節(jié)點對應一個地形塊;
S104,渲染地形;
S105,用GPU進行VertexShader編程,使用頂點紋理采樣功能從高度圖獲取地形塊頂點的高度值;
S106,修改頂點的高度值。
優(yōu)選的,包括如下步驟:
S201,將整個原始地形劃分為2NX2N個面積相等的地形塊;每個地形塊的的長和寬均相等,地形塊被分為2M x2M個面積相等的單元格;其中,M≥0,N≥0,且M和N均為整數(shù);
S202,使用LOD地形繪制算法,創(chuàng)建不同LOD級別的頂點緩沖和索引緩沖;LOD級別分為0級,1級……M級,共有M+1級,在不同LOD級別下創(chuàng)建相應的頂點緩沖和索引緩沖,所有地形塊共享一組頂點緩沖和索引緩沖;
S203,用四叉樹組織整個原始地形,每個葉子節(jié)點對應一個地形塊;
S204,渲染地形;
S205,利用GPU進行VertexShader編程,使用頂點紋理采樣功能從高度圖獲取地形塊頂點的高度值;
S206,根據(jù)步驟S205中獲得的高度值修改頂點緩沖中各頂點的高度值,當相鄰地形塊之間的LOD級別不一樣時,對LOD級別較低的地形塊邊緣頂點坐標進行位移。
本發(fā)明的有益效果是:本技術(shù)能夠在僅支持DirectX的計算機上高質(zhì)量高性能的渲染大規(guī)模地形,可以廣泛應用于虛擬現(xiàn)實應用程序中。與現(xiàn)有技術(shù)相比,本技術(shù)提供的地形渲染方法算法簡單高效,節(jié)約資源,有效消除了地形LOD渲染過程中出現(xiàn)的T型裂縫問題;并且基于圖形處理器(GPU)進行計算,節(jié)省了CPU的運算資源,提升了CPU的處理性能。游戲動畫資源文件體積的顯著降低。實現(xiàn)游戲特效實時加載渲染,提高游戲整體視覺品質(zhì)。實現(xiàn)游戲美術(shù)資源的視窗編輯,顯著提高游戲策劃師工作效率??煽焖偌嫒軦S3、cocos2d、U3D等動畫、游戲開發(fā)引擎,實現(xiàn)跨平臺商業(yè)化價值。頁游戲的開發(fā)周期縮短至三分之一。
附圖說明
圖1是本發(fā)明一實施例的原理圖;
圖2是本發(fā)明另一實施例的原理圖;
本發(fā)明目的的實現(xiàn)、功能特點及優(yōu)點將結(jié)合實施例,參照附圖做進一步說明。
具體實施方式
參照圖1,本發(fā)明提供一種基于圖形處理器加速的地形渲染方法,包括如下步驟:S101,將原始地形圖像劃分為多個面積相等的地形塊;S102,使用LOD地形繪制算法,創(chuàng)建不同LOD級別的頂點緩沖和索引緩沖;S103,用四叉樹組織整個原始地形,每個葉子節(jié)點對應一個地形塊;S104,渲染地形;S105,用GPU進行VertexShader編程,使用頂點紋理采樣功能從高度圖獲取地形塊頂點的高度值;S106,修改頂點的高度值。
更為具體的,請參閱圖2,本發(fā)明包括如下步驟:S201,將整個原始地形劃分為2NX2N個面積相等的地形塊;每個地形塊的的長和寬均相等,地形塊被分為2M x2M個面積相等的單元格;其中,M≥0,N≥0,且M和N均為整數(shù);S202,使用LOD地形繪制算法,創(chuàng)建不同LOD級別的頂點緩沖和索引緩沖;LOD級別分為0級,1級……M級,共有M+1級,在不同LOD級別下創(chuàng)建相應的頂點緩沖和索引緩沖,所有地形塊共享一組頂點緩沖和索引緩沖;S203,用四叉樹組織整個原始地形,每個葉子節(jié)點對應一個地形塊;S204,渲染地形;S205,利用GPU進行VertexShader編程,使用頂點紋理采樣功能從高度圖獲取地形塊頂點的高度值;S206,根據(jù)步驟S205中獲得的高度值修改頂點緩沖中各頂點的高度值,當相鄰地形塊之間的LOD級別不一樣時,對LOD級別較低的地形塊邊緣頂點坐標進行位移。
本發(fā)明的有益效果是:本技術(shù)能夠在僅支持DirectX的計算機上高質(zhì)量高性能的渲染大規(guī)模地形,可以廣泛應用于虛擬現(xiàn)實應用程序中。與現(xiàn)有技術(shù)相比,本技術(shù)提供的地形渲染方法算法簡單高效,節(jié)約資源,有效消除了地形LOD渲染過程中出現(xiàn)的T型裂縫問題;并且基于圖形處理器(GPU)進行計算,節(jié)省了CPU的運算資源,提升了CPU的處理性能。游戲動畫資源文件體積的顯著降低。實現(xiàn)游戲特效實時加載渲染,提高游戲整體視覺品質(zhì)。實現(xiàn)游戲美術(shù)資源的視窗編輯,顯著提高游戲策劃師工作效率??煽焖偌嫒軦S3、cocos2d、U3D等動畫、游戲開發(fā)引擎,實現(xiàn)跨平臺商業(yè)化價值。頁游戲的開發(fā)周期縮短至三分之一。
盡管上面已經(jīng)示出和描述了本發(fā)明的實施例,可以理解的是,上述實施例是示例性的,不能理解為對本發(fā)明的限制,本領(lǐng)域的普通技術(shù)人員在不脫離本發(fā)明的原理和宗旨的情況下在本發(fā)明的范圍內(nèi)可以對上述實施例進行變化、修改、替換和變型。