http://www.cnblogs.com/wuhanhoutao/archive/2007/11/10/955293.html
html
早期的三維場景繪製,顯卡只是爲屏幕上顯示像素提供一個緩存,全部的圖形處理都是由CPU單獨完成,而渲染一個複雜的三維場景,須要在短期內處理幾百萬個三角形頂點和光柵化上百萬個像素,擅長於執行串行工做的CPU實際上難以勝任這項任務,速度上達不到要求。因此,若要求在PC上實時生成三維圖像,則將犧牲質量,致使畫面很粗糙。現階段,GPU的發展極大地提升了計算機圖形處理的速度和圖形質量,並促使圖形處理功能不斷從CPU向GPU轉移,如頂點座標轉換計算等,並且GPU自己亦不斷加強了圖形處理的各類高級功能,如遮擋剔除、紋理映射、透明與半透明處理、景深效果等。算法
本章將從GPU特色與其支持下的渲染流程角度出發,提出採用GPU具有的繪製到紋理功能,獲取上幀信息,進行可見性判斷,從而剔除沒必要要渲染的場景模型,實現場景加速繪製的方法;針對過大或不符尺寸的紋理致使GPU因顯存不足而頻繁交換的問題,介紹Mipmap技術與Clipmap技術;最後,引入面向GPU頂點緩存的通用渲染順序與多級緩存的格網布局方法,並配合上一章介紹的視點相關的實時有選擇性細化方法,指望進一步提高大數據量場景繪製的速度。編程
咱們正處在信息技術高速發展的年代,而計算機圖形處理技術的發展速度則是計算機應用行業中最快的。不管是從用於圖形設計的硬件、可視化應用的畫面品質、各類三維遊戲和仿真場景的畫面處理、使用圖形技術的交互式應用程序仍是從計算機動畫等方面來看都是如此。十多年前用於計算機圖形設計的硬件仍是那種價值昂貴的圖形工做站,而現在基本上都已經發展爲單芯片的圖形處理器。小程序
1995年,PC機領域第一款帶有GPU的顯卡3dfx Voodoo出來,使得遊戲的速度、畫質取得了一個飛躍。3dfx Voodoo有兩個主要的特徵:深度緩衝區(z-buffer)和紋理映射(texture mapping)。z-buffer執行「隱藏面消除」這一工做,能夠避免渲染不可視的無效像素。利用紋理映射功能則能十分逼真地表達物體表面細節。1999年,第二代GPU (NVIDIA GeForce256,GeForce 2和ATI Radeon 7500)包括了圖形的幾何變換與光照計算功能(Transformation and Lighting, T&L)。而在此以前T&L都是由CPU完成的,這對CPU來講是很複雜的計算。第二代GPU解決了系統的這個瓶頸,減輕了CPU的負荷,速度明顯提升了。可是因爲是固定的渲染流水線,缺少靈活性,束縛了開發人員的創造性。2001年,NIVIDA公司的GeForce 3首先引入了可編程的頂點着色器(Vertex Shader)單元。緊接着在2002年,可編程的像素着色器(Pixel Shader)單元也加入進來。在繪製時,GPU首先接收CPU以三角形頂點形式發送的幾何數據。而後由可編程的頂點着色器單元進行處理,完成幾何變換與頂點屬性計算等功能。接着,這些三維空間的三角形由光柵生成器轉換爲二維屏幕上的像素。每一個像素的最終顏色值都經過運行在像素着色器上的小程序運算獲得。目前三維遊戲和仿真場景藉助於GPU,在數據量不是很大而且光照陰影處理不是太複雜的狀況下,已經可以實時生成細膩、逼真的畫面。數組
採用流水線方法,比簡單的串行方式能提早完成圖形渲染任務。爲了提升流水線的速度,能夠將任務劃分紅更小的單元,這樣流水線的級數就會增長。CPU的設計中就使用了流水線原理,奔騰IV就有20級的流水線。可是流水線級數並非越多越好,級數太多,一條指令從開始進入流水線到最後被執行完畢之間的延遲間隔會至關大。換句話說,當流水線級數過多時,控制檯發出一條指令後,要通過較長時間纔會真正生效,這不適合快速反應要求很高的場合。CPU的設計目標要求有很小的延遲,因此這是CPU並不採用過多流水線級數的緣由之一。另外流水線只有在滿載時,才能發揮出最佳效率來。因爲CPU執行的代碼中有不少分支語句,所以長流水線須要儘可能保持其在滿負荷狀態。而一旦預測分支失敗,就會清除流水線中滯留的大量無用指令,同時將新指令流從新注入流水線。若是流水線階段過多的話,充滿整個流水線就須要很長的時間,這樣使流水線保持滿載的機會很少,速度反而降低了。因此權衡利弊,CPU不會使用深度流水線。緩存
可是GPU卻採用了幾百級的流水線,這是由於GPU應用能夠忍受大的延遲。時鐘週期與流水線級數的乘積遠小於顯示每幀畫面的時間,因此對GPU來講延遲不成問題,並且GPU中執行的象元片斷程序中,分支語句用的不多(在早期的GPU中,甚至不提供動態的分支語句)。所以,GPU的流水線深度變大後,利大於弊,大大提高了總體性能。數據結構
GPU的執行速度很快,可是當運行從內存中獲取紋理數據這樣的指令時(因爲內存訪問是瓶頸,此操做比較緩慢),整個流水線便出現長時間停頓。在CPU內部,使用多級Cache來提升訪問內存的速度。GPU中也使用Cache,假若Cache命中率不高,則僅使用Cache就不能很好的解決這個問題。因此,爲了保持流水線忙碌,GPU工做時又使用了多線程機制(Multi-threading)。當像素着色器針對某個像素的線程A遇到存取紋理的指令時,GPU會立刻切換到另一個線程B,對另外一個像素進行處理。等到紋理從內存中取回時,可再切換到線程A。使用這種方法有一個前提,線程A與線程B沒有數據依賴性,也就是說兩線程之間無需通信。若是線程B須要線程A提供某些數據,那麼即便切換到線程B,線程B還是沒法運行,流水線仍是處於空閒狀態。須要說明的是,圖形渲染本質上是一個並行任務。不管是CPU送給GPU的頂點數據,仍是GPU光柵生成器產生的像素數據都是互不相關的,能夠並行地獨立處理。並且頂點數據(XYZW),像素數據(RGBA)通常都用四元數表示,適合於並行計算。此外,紋理片要麼只能讀取,要麼只能寫入,不容許可讀可寫,從而解決了存貯器訪問的讀寫衝突。GPU這種對內存使用的約束也進一步保證了並行處理的順利完成。多線程
爲了進一步提升並行度,能夠增長流水線的條數。多條流水線能夠在單一控制部件的集中控制下運行,也能夠獨立運行。在單指令多數據流(SIMD)的結構中,單一控制部件向每條流水線分派指令,一樣的指令被全部處理部件同時執行。另一種控制結構是多指令多數據流(MIMD),每條流水線都可以獨立於其餘流水線執行不一樣的程序。GeForce 6800 Ultra的頂點着色器流水線使用MIMD方式控制,像素着色器流水線使用SIMD結構。MIMD能比較有效率地執行分支程序,而SIMD適合於大數據量的像元處理。架構
總的看來,相對於並行機而言,圖形卡提供的並行性雖然很弱,但它在十分廉價的基礎上爲不少應用提供了一個很好的並行方案,尤爲是對於圖形自己的應用來講。新的圖形硬件在圖形渲染上的優點還包括:app
1) 在頂點級和像素級提供了靈活的可編程特性;
2) 減小了GPU與CPU的數據通訊。尤爲是當整個應用針對圖形生成的時候,再也不須要在CPU與GPU之間進行屢次數據交換,從而可讓CPU解放出來完成其它的任務;
3) GPU相對於CPU來講,更適應傳輸大塊的數據,雖然CPU上有Cache以加速整個計算過程,但CPU上的Cache相對於圖形卡顯存來講過小,通常只有64KB,而如今的顯存大多都在64M以上,因而可知一斑;
4) 支持繪製到紋理的功能(Render-to-Texture/pbuffer),從而避免將計算結果拷貝到紋理這一比較費時的過程;
5) 支持依賴紋理功能,以方便數據的索引訪問,能夠將紋理做爲內存來使用。
首先根據圖5.2粗略說明一下當前廣泛流行的AGP(Accelerated Graphics Port,圖形加速端口)顯卡的渲染流程。
每次渲染過程都包括頂點處理(Vertex Processing)和像素處理(Pixel Processing)兩個主要功能模塊的執行。首先,顯卡從AGP總線接收頂點數據。這些數據包括位置、法線、貼圖座標(若是是麪包可能更須要貼圖,也就是說貼圖座標不是必需的)等等,這些都是未通過任何變換,也就是在物體本地空間(Object Space)下的原始座標。每一個頂點依次被送入頂點處理單元,在這裏進行座標變換、光照計算(若是是每頂點光照)等工做,變換的結果是把每一個三角形變換置屏幕空間下直接可用。這裏用到的變換矩陣、燈光等信息都是處理每一批頂點時一次性傳給顯卡的,做爲顯卡的資源。頂點處理圈定了三角形的範圍,接下來就要逐像素地填充這個三角形了。填充哪些像素是靠對頂點屏幕座標的線性插值來決定的。像素的其餘一些必要參數,如顏色,貼圖座標等也是經過對上一步計算出來的頂點的這些屬性進行插值獲得的。另外每一個像素還要經過深度檢測和模板檢測決定最終是否繪製。須要繪製的像素被送進像素處理模塊,進行貼圖像素取值,貼圖混合等工做,必要的話每像素光照也在這裏完成。這裏貼圖等信息也是做爲顯卡的資源。像素最終的處理結果被放進幀緩衝。可編程圖形顯卡的出現增長了知足人們對三維仿真場景更加逼真、更加流暢顯示等方面需求的機會。這些商用顯卡已經被普遍的應用,所以相關關鍵技術的研究變得愈來愈迫切。如何從上一幀圖像提取顏色、深度等信息來指導輸入到圖形流水線的場景中模型結點的選擇、更新,如何在硬件支持下優化渲染流程等是有意義的研究內容。
針對大數據量三維仿真場景,從三維模型成像機理等方面對大數據量仿真場景中目標的載入、選取和消隱進行了深刻的分析以後,利用視覺成像理論、次緩衝區(pBuffer)技術和簡化方法等,對大數據量仿真場景開展加速選擇和更新等方面的研究工做。爲提取上幀信息,採用GPU的繪製到紋理功能,進行可見性判斷,剔除沒必要要繪製的場景模型,實現場景加速繪製的優化處理,採起的具體方法以下:
若場景範圍大或三維模型的尺度大,其在繪製選擇、繪製和渲染等流程後,顯示在屏幕上時每每有延遲現象。現考慮,將原始模型和對應的最簡化版或外框架做爲兩個結點進行顯示,但分配原始模型在主緩衝區上,分配其對應的框架模型在新建的次緩衝區(pBuffer)上。因爲兩個緩衝區大小是同比例的,並共享同一個相機,那麼兩種模型從投影轉換到最後的輸出顯示,便是反應同步的,在結果上也是近似的。因爲顯示的大小是同比例的,但在流程中柵格化等操做會影響像素的顯示,因此說結果是近似的。在每一幀(或者每5幀,要求人眼分辨不出來)結束後,讀取pBuffer上的像素(通常RGB格式)到數組中,循環判斷每一個數組元素的顏色,記錄下各類顏色的數量。因爲在建立框架模型時分配了每一個模型對象相異的顏色,從而此時經過顏色能判斷出pBuffer和主緩衝區上顯示出來的究竟是哪些模型。用獲得的結果指導下一個週期的原始模型中選擇哪些子集。這樣作的好處是,不用將整個大數據量的原始模型進行一遍局部到世界座標系,再到視點座標系,最後透視變換、裁減等操做。只是將剔除視見體外和被遮擋的物體後剩餘的模型交給渲染流程,於是能節約計算、存儲等資源,加快顯示速度。
初步實驗結果見圖5.3與圖5.4,其中由7個立方體模型組成的場景文件大小爲130M, 三角型個數70多萬個。在沒有遮擋關係的狀況下,普通與改進方法下幀速均爲5.4幀每秒;在有遮擋關係狀況下,普通方法下幀速保持不變,還爲5.4幀每秒,而改進方法下幀速增長到12.5幀每秒左右。紋理映射(Texture Mapping)是繪製複雜場景真實感圖形最爲經常使用的技術,它能夠經過紋理來表達表面豐富的幾何細節和光照細節,甚至能夠經過映射後紋理的變形來表達物體的幾何形狀:在未增長物體多邊形數狀況下,加強了物體的真實感效果。
但過大或是不符尺寸的貼圖,將佔用太多的紋理帶寬,致使GPU因顯存不足而頻繁交換,採起的措施是:儘可能縮小貼圖或使用Mipmap技術。Mipmap技術的核心就是紋理的LOD。高分辨率的Mipmap圖像用於接近觀察者的物體,當物體逐漸遠離觀察者時,使用低分辨率的圖像。Mipmap能夠提升場景渲染的質量。
Mipmap映射技術是快速的查找技術,快就快在它在交互前預先生成了紋理圖像的一系列的基本採樣數據,造成紋理LOD模型,在交互過程當中系統能快速應用紋理LOD生成逼真視景。這一優勢對實時交互系統中的紋理映射相當重要,可是根據紋理映射的應用技術,對於大紋理數據是不能將整個紋理Mipmap駐留在有限的硬件紋理內存和系統內存中的,同時,因爲帶寬的限制,也存在着交互前載入整個紋理須要漫長的時間。
之前解決有效物理紋理內存大的紋理映射問題,好比地形紋理,經常採用根據地形模型把原始紋理圖像分割成大量的小片紋理,使這些小紋理能適應物理的紋理內存。
現廣泛採用Clipmap方法是,採用首先創建原始圖像的Mipmap,而不是裝載時才建立,這對比較大的紋理來講是重要的;其次,把建立的Mipmap各層存儲在硬盤上,只把裁減下來的Mipmap部分即Clipmap調入紋理內存用於實時繪製。從理論上分析,一旦CPU使用率達到100%,再考慮優化問題,則可以提高的空間將是很是有限的,由於CPU的頻率決定了每幀調用繪製幾何元素集合的次數,因此應該儘可能減小調用次數,增長批處理中的三角形個數。 太多的調用次數,只會讓CPU忙於通信,而GPU卻一直在空閒;另外一方面來看,太少的三角形數量也知足不了GPU的處理容量。
5.4.2.1面向GPU頂點緩存的通用渲染順序
計算機圖形學應用的趨勢是大量使用多邊形來加強圖像的真實性,這種趨勢隨着近來圖形硬件的發展,特別是GPU在低端顯示設備上的出現而特別明顯。GPU意味着圖形適配器能完成掃描轉換,也能完成3D幾何投影和陰影計算。所以,場景幾何處理再也不如同過去那樣是最大的瓶頸。
爲了加快處理幾何頂點元素,GPU保留了固定尺寸的先進先出(First Input First Output,FIFO)頂點緩存,經過此種方式進行頂點遍歷。而渲染以三角形爲基礎的通用三維格網,每一個頂點參與處理的次數可能大於一次,根據對大多數格網的統計,平均每一個頂點參與六個三角形的繪製。咱們知道,處理緩存頂點將比處理非緩存頂點快得多。所以,爲了最大限度的使用緩存,必須以保留局部相關性的順序渲染格網三角形。這個三角形依次渲染的順序被稱做格網渲染順序。一個好的渲染順序能最小化三角形的緩存錯失數,稱做平均緩存錯失率(Average Cache Missing Ratio,ACMR),由於典型格網的三角形數量接近頂點數量的兩倍,假若在圖形渲染時頂點數據須要第一次從外部調入緩存,這算做一次錯失,而其它繪製的時候,頂點數據不錯失,那麼下限數值爲0.5;假若繪製每一個三角形的三個頂點時候數據都錯失,上限範圍達到3.0。因此理論上ACMR取值在0.5與3.0之間。注意,此順序沒必要要是連續的,在渲染順序上相鏈接的三角形不必定在格網空間上是相鏈接的。
3D格網一般以任意的三角形序列排列,其每一個三角形又以指向頂點列表的三個頂點索引標明。普通渲染器就按照文件中順序將三角形送入圖形流水線,獲得通常的性能。更復雜的渲染器使用三角形條帶技術,能以FIFO頂點緩存尺寸爲2來渲染三角形,這其實是3D硬件的標準部件。Akeley等(1990)描述了產生三角形條帶的算法。然而因爲緩存的有限尺寸,能證實在這種緩存尺寸下不能將ACMR下降到1.0如下。Hoppe(1999)提出一種算法來產生面向透明FIFO緩存的渲染順序,從實驗上展示其算法對任意的頂點緩存產生渲染順序,其ACMR不會明顯差於Chow的算法。然而全部算法的一個主要問題,是必須事先知道緩存尺寸,對某個緩存尺寸產生的渲染順序,當使用到一個更小尺寸的緩存時渲染格網產生的結果也許遠離優化目標。
另一個現有算法的缺陷是不能推廣到累進格網。累進格網不一樣於固定分辨率格網,格網連通性是動態的,因此不可能預先計算三角形條帶。格網是不斷變化,渲染順序也必須隨之變化。這方面工做有El-Sana(1999)提出保持累進格網的三角形條帶方法。另外,Hoppe(1997)採用在每一幀的時候,使用一種貪婪算法來產生三角形條帶。此算法遍歷活動三角面 ,並在任何沒有被渲染的面之處,開始一個新的三角形條帶。而後,檢查是否有鄰接面尚未被渲染,就這樣,鏈接條帶。爲了下降圖形狀態的變動,僅僅只有相同材質的鄰接區域被考慮。爲下降流水線負擔,傾向於連續螺旋型三角形條帶。但條帶達到結束末端時候,對鏈表 遍歷從新開始。面數據結構中有一個標誌來記錄已經渲染的面,下次渲染時這些標誌會被清空。
空間填充曲線其實是在某種程度上保留局部相關性的多維格網單元遍歷。廣泛目標是產生一種渲染順序,當每一個三角形渲染時候,但願儘量多的三角形頂點已經存在於緩存中。若是不是這樣,緩存錯失開始計數。
下面介紹的遞歸切割方法是受傳統空間填充曲線啓發,而最小線性安排(Minimum Linear Arrangement, 簡稱MLA)方法是經過求解優化問題獲得答案(Bogomjakov, A., Gotsman, 2001)。
遞歸切割方法。在四邊形格網(其尺寸爲2的冪)上傳統的空間填充曲線有良好的局部相關性。對於規則三角網(取代四邊形格網)容易使用Hilbert曲線來產生渲染順序。Hilbert創建過程是:將格網分爲四塊(每塊相同);遞歸的渲染第一塊中全部三角形,而後遞歸的渲染第二塊中的全部三角形,依此類推。當格網僅包含幾個三角形時遞歸終止。注意,第一塊中最後一個三角形鄰近第二塊中第一個三角形,對於第三和第四塊是同樣的處理。因爲格網結構是規則的,將有可能達到目標,並保證曲線連續。Hilbert曲線的創建提示了下面相似的不規則三角網的遞歸程序:分區格網到兩個近似相同的子網。首先渲染第一個格網,接着是第二個。同時保證,第一個子網的結束頂點是鄰近的第二個子網的入口頂點。爲了更加精確,須要找到一種平衡切分,產生兩個尺寸大體相同的頂點集合,若是邊界處的切割邊數量少就更好。程序首先渲染左邊子網,而後是跨越切割邊的三角形,接着是右邊子網。這意味着全部參與一條超邊的頂點應該被映射到鄰近區域中。
格網渲染問題也能被當作MLA的一個實例。超圖的頂點對應着格網的三角形,超邊集合對應着格網頂點集合。一條超圖的邊聯繫着入射到相同格網頂點的全部三角形。超邊的長度意味着格網頂點上第一個和最後一個三角形的渲染順序距離。
本文研究大數據量場景的實時渲染,並在上一章介紹了應用累進格網技術來提升渲染性能。應用中,場景的多邊形數量實時改變。對於給定的更新記錄序列,必須不只生成最高分辨率的渲染順序,也有對應的更新記錄的順序。這樣,在低分辨率時也能連續較好的運行。
採用頂點緩存個數爲16的模擬程序對球與頭部三維模型進行迭代切割法與MLA算法處理後與原始渲染順序的對於實驗。在渲染順序路徑圖中,相鄰三角形用白色線段表示,而紅色線段表示繪製三角形時產生了跳躍現象,即沒有繪製相鄰三角形。迭代切割法中基本是白色線段,說明按照相鄰三角形路徑繪製。在示意圖中,每一種顏色標誌對應頂點的不一樣緩存錯失數量。假設頂點 參與三角形 繪製。若是 的角是灰色的,意味着 繪製時候沒有錯失 。綠色表示第一次錯失 ;藍色表示第二次錯失 ;紅色表明三次或更屢次數錯失。對每一個頂點來講,都會有一個綠色角,由於第一次總要將頂點加載到緩存中。好的渲染順序目標就是使得灰色儘可能多,而藍與紅色儘可能少。從圖5.6與圖5.7中明顯看出,原始模型的紅色角多,而處理過的模型,不管採用的是迭代切割算法或MLA算法,綠色與藍色角多而紅色角少,這意味着通過處理的模型緩存錯失數量減低。經過表5.1的統計數據獲得處理後的模型渲染速度有提升的結論。
5.4.2.2面向多級緩存的格網布局
處理大數據量格網的算法利用了CPU和GPU的計算能力,用於交互顯示和幾何應用。在近十年,處理器與主存儲器之間的差距已經在擴大。結果是,系統架構不斷的使用緩存和存儲層級來避免內存等待時間。存儲層級的不一樣層次的訪問時間也有很大不一樣。在某些狀況下,一個程序的運行時間可當作是緩存訪問模式的函數,並與其操做次數有很大相關性。
爲了設計有效的緩存算法來處理大數據量格網,兩個通用的減低緩存錯失的技術是:1)計算重排序:提升程序的局部性,這能經過編譯器優化或人工調整達到;2)數據佈局優化:依據訪問模式計算緩存連貫的數據佈局(Yoon, S.-E., Salomom, B., Gayle, R., Mannocha, D , 2004)。
緩存有效算法能被分類爲緩存介意的與緩存非介意的。緩存介意算法使用緩存參數,如分塊大小。與此相反,緩存非介意算法不用事先知道任何緩存參數。緩存有效算法方面有大量研究工做,服務於一些應用,好比數值程序、排序、幾何計算、矩陣乘法、FFT和圖形算法。面向這些應用,大多數算法重組織數據佈局,如計算一種新的排列順序。
大多數現代計算機使用存儲層級,其每一層級做爲下一層的緩存。存儲層級有兩個主要特徵。首先,較高層級尺寸也會大,接收處理器指令較慢,擁有較慢的訪問時間。第二,不一樣存儲級別之間,數據存在於大的塊中。格網初始存在於最高級別中,典型的如硬盤。應用訪問時格網某一部分將被轉移到較低級別的大分塊中,如主存。當有緩存錯失發生的時候,兩個相鄰級別之間轉移就會執行。緩存錯失次數依賴於原始格網在存儲空間中的佈局與應用訪問模式。
格網布局是頂點與三角形的線性順序。構建一個圖,其中頂點表明格網中的數據單元。若是頂點表明的數據單元有可能在運行時被連續訪問,那麼兩個頂點之間存在一條邊。對於單分辨率格網布局,映射格網頂點與邊到圖的頂點與邊上。一個無向圖 的頂點佈局是頂點到位置的一一映射, ,目標是找到一種映射 ,使得格網訪問過程當中最小化緩存錯失數量。
格網布局有兩種佈局類型:頂點佈局與三角形佈局。而三角形佈局可被當作是頂點佈局的對偶圖,由於經過依賴三角形最大或最小頂點索引來排序三角形,將確保三角形佈局與頂點佈局兼容。
爲計算層次的佈局,可創建一個圖來獲取對層次的緩存連貫訪問模式。在圖中增長額外的邊來得到層次中的空間局部關係與父子聯繫(Yoon, S.-E., Manocha, 2005)。
父子結點之間的聯繫。一旦層次中某一結點被訪問,有很大的可能性緊接着訪問其父結點與子結點。好比,VH中結點的頂點劈分激活其子結點,兩個兄弟結點的邊摺疊操做激活它們的父結點。
同一層次頂點之間空間局部相關性。當一個結點被訪問時,其鄰近區域的其它結點有很大可能性被立刻訪問的。好比,兩個物體的碰撞和聯繫發生在小的格網局部區域中。所以,若是BVH中一個結點被激活,其它鄰近區域中的結點可能立刻被訪問。
GPU專門爲圖形渲染設計的,具備超長流水線與並行計算等主要特徵,運算速度愈來愈快,同時,在頂點級和像素級還提供了靈活的可編程特性以及支持繪製到紋理等功能。所以,本章首先介紹了GPU特色與其支持下的圖形渲染流程以後,提出採用GPU繪製到紋理功能,獲取上幀三維模型成像信息,進行可見性判斷,再把剔除視見體以外與被遮擋物體後剩餘的三維模型交給圖形流水線的方法,從而能節約計算時間,加快顯示速度。
針對過大或不符尺寸的紋理致使GPU因顯存不足而頻繁交換的問題,介紹Mipmap技術與Clipmap技術,既能保證比較快速的紋理查找速度,又能有效解決硬件的存儲限制和載入帶寬的瓶頸。
指出在幾何數據處理過程當中爲避免CPU使用率達到上限,首先應該保證GPU足夠的三角形吞吐量。其次,緩存在大多數GPU上是可用的,當使用FIFO頂點緩存在最大程度上重複使用頂點時,將有利於提升模型格網的渲染速度。所以,介紹了迭代切割與MLA兩種方法以產生模型格網的渲染順序,生成的幾何數據佈局結果儘量保留了格網局部性並保證了頂點重用,還配合了上一章介紹的視點相關的實時有選擇性細化方法,能進一步提高大數據量場景繪製的速度。
最後,還介紹了面向多級緩存的大數據量格網布局,指望能提升交互可視和幾何處理算法的性能。這種方案中採用了一種簡單、實用的非介意緩存參數檢測方法來評估緩存錯失,從而將計算一個連貫的格網布局轉換爲求解一個組合最優問題。