溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Real-Rime Rendering (7) -加速算法(Acceleration Algorithm)

發(fā)布時間:2020-07-17 22:07:12 來源:網(wǎng)絡(luò) 閱讀:615 作者:拳四郎 欄目:開發(fā)技術(shù)

提要

         計算機的性能一直是大家關(guān)心的,即使在一個相對簡單應(yīng)用中,比如一個打字應(yīng)用,如果有剩余的性能可以榨取,我們都可以用它來增加新的特性,比如聯(lián)想拼寫,語法檢查,抗日鋸齒文字顯示,語音識別輸入等等。

       在實時渲染中沒我們至少有四個表現(xiàn)上可以去追求的目標(biāo):提高幀率,提高渲染的分辨率,實現(xiàn)更加真實的光照和材質(zhì),實現(xiàn)更多的細(xì)節(jié)。60-85的FPS算是夠快了。

        一些 imge processing 如抗鋸齒和motion blur 會明顯消耗大量的cpu性能,降低FPS,這種情況下,添加一些加速渲染算法是非常必須的。


空間數(shù)據(jù)結(jié)構(gòu)   Spatial Data Structures

        空間數(shù)據(jù)結(jié)構(gòu)指的是將圖形數(shù)據(jù)存放在n維數(shù)組中,其中 n >= 2. 組織空間數(shù)據(jù)結(jié)構(gòu)通常是層級的(hierarchy),這意味著它是層級包含的,這樣,空間的物體都集合在一起了,并且是遞歸的,用層級的原因是這對訪問速度的提升很有幫助,可以從o(n)提升到0(logn).但這種結(jié)構(gòu)通常是precomputed的,初始化和修改都會很費勁。

        下面是幾種常見的空間數(shù)據(jù)結(jié)構(gòu),包括:

  BVH(bounding volume hierarchies),BSP(binary space partitioning tree),octrees.


BVH

      一個BV是包含一系列物體的volume,而這個volume是一個相對簡單的物體,比如sphere,box等,這樣在進行一些檢測的時候用BV就會快很多。、

      一個BV對渲染上的幫助并不是直接的,它像一個它所包含的物體的代理,用于物體拾取,碰撞檢測中。

      對于3D real time rendering,BVH通常用于的階段是視井剔除(Frustum culling)。場景用一樹狀結(jié)構(gòu)組織,有根,葉子等等。葉子節(jié)點就是場景中的物體,沒有有子孫。中間節(jié)點包含物體,樹中除葉子節(jié)點外的結(jié)點都對應(yīng)于一個bounding volume,所以叫BVH。root節(jié)點包含整個場景。

      BVHs字啊查詢中也很好使,例如在Ray tracing算法中,光線和場景中物體求交,假如沒有BVH,則光線每次都要判斷是否與場景中的每個物體相交,使用BVH的話,只有在光線和BV相交的情況下才會進一步對子物體(包含BV)進行求交,而光線與正方體、球體求交的方法會很簡單,這也是BV使用Sphere和Box的原因。

      BVHs也能用于動態(tài)場景中,當(dāng)場景中的一個物體移動了,檢測它是否還在BV中,若還在,則不作任何改變,若物體不完全包含在原BV中 了,則要對父級BV進行哦那個重新計算,這種做法可能會進行遞歸運算,耗費時間,或者把樹變得不平衡,一種方法就是將BV完全包含物體的運動軌跡,比如一個單擺就很好處理,這種方法稱為 temporal bounding volume.

Real-Rime Rendering (7) -加速算法(Acceleration Algorithm)

BSP Trees

  BSP (Binary Space Partition)表示二叉空間分割。使用這種方法可以使我們在運行時使用一個預(yù)先計算好的樹來得到多邊形從后向前的列表。

    一個BSP Trees如同它的名字一樣是一個層次樹的結(jié)構(gòu),這個樹的葉節(jié)點保存了分割室內(nèi)空間所得到的圖元集合?,F(xiàn)在隨著硬件加速Z緩沖的出現(xiàn),我們只需要用很小的代價就可以對空間中的圖元進行排序,但是在90年代初由于硬件的限制,使用BSP的主要原因是因為它可以對空間中的圖元進行排序來保證渲染圖元的順序是按照由后至前進行的,換句話說,Z值最小的物體總是最后被渲染。當(dāng)然還有其他的算法可以完成這個功能,例如著名的畫家算法,但是它與BSP比較起來速度太慢了,這是因為BSP通常對圖元排序是預(yù)先計算好的而不是在運行時進行計算。從某種意義上說BSP技術(shù)實際上是畫家算法的擴展,正如同BSP技術(shù)的原始設(shè)計一樣,畫家算法也是使用由后至前的順序?qū)鼍爸械奈矬w進行渲染。但是畫家算法有以下的缺點:
l 如果一個物體從另一個物體中穿過時它不能被正確的渲染;
l 在每一幀對被渲染的物體進行排序是非常困難的,同時運算的代價非常大;
l 它無法管理循環(huán)覆蓋的情況,如圖所示


        根據(jù)切分方法的不同,BSP樹會分為對齊軸 (Axis

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI