GPU Gems2 - 2 使用基于GPU几何体裁剪图的地形渲染(Terrain Rendering Using GPU-Based Geometry Clipmaps)
【章節概覽】
本章描述了一種通過頂點紋理實現的,基于GPU的幾何體裁剪圖(Geometry Clipmaps)技術。通過把地形幾何體當做一組圖像來處理,可以在GPU上執行幾乎所有的計算,因此可以減少CPU的負載。且該技術較為容易實現。
關于clipmap技術,有幾篇很好的文章可以幫助理解
https://blog.csdn.net/yinfourever/article/details/89888501(強烈建議看這篇文章,看后對ClipMap原理會有醍醐灌頂的趕腳)
https://lengbingteng.iteye.com/blog/1845460
https://blog.csdn.net/pizi0475/article/details/48240499
?
【核心要點】
幾何裁剪圖(Geometry Clipmap)是Losasso 和 Hoppe在2004年提出的,一種新的用于渲染地形層次細節的數據結構。其將地形幾何體緩存在一組嵌套規則柵格中,而柵格隨著視點的移動而遞增。
Geometry Clipmap:
把地形當做2D的高度圖,并把它預過濾進一個L層的mipmap中。對于大場景來說,完整的地形mipmap太大,無法全部加載。所以?Clipmap會在每層緩存一個nxn頂點樣本的頁面,頁面以視點為中心。這里需要注意的是:每一層的頂點都是nxn,也就算是每一層的三角形數量是一樣的,只不過大小不一樣,所以每一層表現出的面積也不一樣,目的是讓三角形在屏幕空間中的大小一樣。隨著視點的移動,裁剪圖窗口也會進行移動,并用新的數據更新。為了保證高效的遞增更新,每層的裁剪圖窗口都以環形方式被訪問,即通過2D環繞尋址(2D Wraparound Addressing)。除了第一層以外,其他的層都是一個空心環,”回“ 字,這里看起來,每個外環的三角形是內環的4倍大小。
圖 幾何體裁剪圖的原理。給定一個L層的過濾地形棱錐,幾何體剪切圖在每個分辨率層緩存一個方形的窗口,從這些窗口提取了一組以視點為中心,具有L個嵌套的“環(ring)”,且最精細的層環是實心的。裂縫問題的解決:
每一層網格的大小一定是奇數,最好是(n = 2冪k - 1) 因此一般取n = 255。為啥要是奇數呢?主要是為了上一層有一部分覆蓋到下一層上。這里采用細的層次多出一個邊的方式,對粗的層次進行覆蓋,這里只增加一行一列是因為重心位置做了偏移,應該是用0.5格來覆蓋邊緣部分。這個圖很重要,它告訴你每一個環由那些塊組成的,把環算出來了,所有的環都可以進行類推。這個橙色的部分,是兩塊的接壤部分,采樣的是退化三角形,本身是不怎么站面積的。對于每一層執行了14次draw 其中12次灰色區塊,1次內部調整,1次剩余的三角形。每幀總體需要:6L+5 ?L為層數。
?
圖 使用粗粒度幾何體裁剪圖的地形渲染。(n=31,L=10)。每層環由不同的剪切圖層構成。?
?
【關鍵詞】
地形渲染(Terrain Rendering)
裁剪圖(Clipmap)
幾何裁剪圖(Geometry Clipmap)
環繞尋址(Wraparound Addressing)
總結
以上是生活随笔為你收集整理的GPU Gems2 - 2 使用基于GPU几何体裁剪图的地形渲染(Terrain Rendering Using GPU-Based Geometry Clipmaps)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Guideline 2.3.1
- 下一篇: SSH私钥取消密码(passphrase