大場景渲染加速算法

0. 實時渲染四大目標

  ? 更高的每秒幀數(shù)
  ? 更高的分辨率
  ? 渲染更多的物體與更具真實感的場景
  ? 實現(xiàn)更高的復雜度

1. 空間數(shù)據(jù)結構 | Spatial Data Structures

空間數(shù)據(jù)結構(Spatial Data Structures)是將幾何體組織在 N 維空間中的一系列數(shù)據(jù)結構戏锹,而
且我們可以很容易地將二維和三維的一些概念擴展到高維之中包警。這些空間數(shù)據(jù)結構可以用于
很多實時渲染相關操作的加速查詢中亭螟,如場景管理分预,裁減算法捎废、相交測試舒萎、光線追蹤、以及
碰撞檢測等鳍置。
空間數(shù)據(jù)結構的組織通常是層次結構的辽剧。寬泛地說,即最頂層包含它之下的層次税产,后者又包
含更下層的層次怕轿,以此類推。因此辟拷,這種結構具有嵌套和遞歸的特點撞羽。用層次結構的實現(xiàn)方
式對訪問速度的提升很有幫助,復雜度可以從 O(n)提升到 O(log n)衫冻。但同時放吩,使用了層次結構
的大多數(shù)空間數(shù)據(jù)結構的構造開銷都比較大,雖然也可以在實時過程中進行漸進更新羽杰,但是
通常需要作為一個預處理的過程來完成渡紫。
一些常見的空間數(shù)據(jù)結構包括:
? 層次包圍盒(Bounding Volume Hierachy,BVH)
? 二元空間分割樹(Binary Space Partitioning考赛,BSP)惕澎,
? 四叉樹 (QuadTree)
? kd 樹(k-dimensional tree)
? 八叉樹(Octree)
? 場景圖 (Scene Graphs)
其中,BSP 樹和八叉樹都是基于空間細分(Space Subdivision)的數(shù)據(jù)結構颜骤,這說明它們是對
整個場景空間進行細分并編碼到數(shù)據(jù)結構中的唧喉。例如,所有葉子節(jié)點的空間集合等同于整個
場景空間忍抽,而且葉子節(jié)點不相互重疊八孝。

1.1 層次包圍盒 | Bounding Volume Hierarchies , BVH

層次包圍盒(Bounding Volume Hierarchies, BVH)方法的核心思想是用體積略大而幾何特征簡
單的包圍盒來近似地描述復雜的幾何對象,從而只需對包圍盒重疊的對象進行進一步的相交
測試鸠项。此外干跛,通過構造樹狀層次結構,可以越來越逼近對象的幾何模型祟绊,直到幾乎完全獲得
對象的幾何特征楼入。
對于三維場景的實時渲染來說,層次包圍體(Bounding Volume Hierarchy牧抽,BVH)是最常使用
的一種空間數(shù)據(jù)結構嘉熊。例如,層次包圍體經(jīng)常用于層次視錐裁減扬舒。場景以層次樹結構進行組
織阐肤,包含一個根節(jié)點(root)、一些內部節(jié)點(internal nodes)讲坎,以及一些葉子節(jié)點
(leaves)孕惜。頂部的節(jié)點是根愧薛,其無父節(jié)點。葉子節(jié)點(leaf node)包含需渲染的實際幾何
體诊赊,且其沒有子節(jié)點。
相比之下府瞄,內部節(jié)點包含指向它子節(jié)點的指針碧磅。因此,只要根節(jié)點不是這顆樹唯一的一個節(jié)
點遵馆,那么它就是一個內部節(jié)點鲸郊。樹中的每一個節(jié)點,包括葉子節(jié)點货邓,都有一個包圍體可以將
其子樹中的所有幾何體包圍起來秆撮,這就是包圍體層次的命名來源,同時换况,也說明了根節(jié)點有
一個包含整個場景的包圍體职辨。


image.png

1.2 BSP 樹 | BSP Trees

BSP 樹(二叉空間分割樹,全稱 Binary Space Partitioning Tree)是一種常用于判別對象可見性的
空間數(shù)據(jù)結構戈二。類似于畫家算法舒裤,BSP 樹可以方便地將表面由后往前地在屏幕上渲染出來,
特別適用于場景中對象固定不變觉吭,僅視點移動的情況腾供。
其中,BSP 是 Binary SpacePartitioning(二叉空間劃分法)的縮寫鲜滩。這種方法遞歸地將空間使
用超平面劃分為凸面體集合伴鳖。而這種子劃分引出了借助于稱之為 BSP 樹的樹形數(shù)據(jù)結構的場
景表示。


image.png

1.3 八叉樹 | Octrees

八叉樹(octree)徙硅,或稱八元樹榜聂,是一種用于描述三維空間的樹狀數(shù)據(jù)結構。八叉樹的每個節(jié)
點表示一個正方體的體積元素嗓蘑,每個節(jié)點有八個子節(jié)點峻汉,這八個子節(jié)點所表示的體積元素加
在一起就等于父節(jié)點的體積。一般中心點作為節(jié)點的分叉中心脐往。
簡單來說休吠,八叉樹的空間劃分方式很簡單,即遞歸地進行規(guī)整地 1 分為 8 的操作业簿。如下圖瘤礁,
把一個立方體分割為八個同樣大小的小立方體,然后遞歸地分割出更的小立方體梅尤。這個就是
八叉樹的命名來源柜思。這種分割方式可以得到比較規(guī)則的結構岩调,從而使得查詢變得高效。


image.png

相似地赡盘,四叉樹是把一個二維的正方形空間分割成四個小正方形号枕。而八叉樹是四叉樹的三維
空間推廣。

1.4 場景圖 | Scene Graphs

BVH陨享、BSP 樹和八叉樹都是使用某種形式的樹來作為基本的數(shù)據(jù)結構葱淳,它們的具體區(qū)別在于
各自是如何進行空間分割和幾何體的存儲,且他們均是以層次的形式來保存幾何物體抛姑。然而
三維場景的繪制不僅僅是幾何體赞厕。
然而,渲染三維場景不僅僅只是渲染出幾何圖形定硝,對動畫皿桑,可見性,以及其他元素的控制蔬啡,
往往需要通過場景圖(Scene Graphs)來完成诲侮。
場景圖被譽為“當今最優(yōu)秀且最為可重用的數(shù)據(jù)結構之一∠潴。”Wiki 中的對場景圖的定義是
“場景圖(Scene Graph)是組織和管理三維虛擬場景的一種數(shù)據(jù)結構浆西,是一個有向無環(huán)圖
(Directed Acyclic Graph, DAG)顽腾。
場景圖是一個面向用戶的樹結構近零,可以通過紋理、變換抄肖、細節(jié)層次久信、渲染狀態(tài)(例如材質屬
性)、光源以及其他任何合適的內容進行擴充漓摩。它由一棵以深度優(yōu)先遍歷來渲染整個場景的
樹來表示裙士。


image.png

另外提一句,開源的場景圖有 Open Scene Graph 和 OpenSG 等管毙,有興趣的朋友們可以進行進一
步了解腿椎。

裁剪技術 | Culling Techniques

參考文章Culling Techniques

層次細節(jié) | LOD, Level of Detail

https://github.com/sp4cerat/Fast-Quadric-Mesh-Simplification 減面算法

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市夭咬,隨后出現(xiàn)的幾起案子啃炸,更是在濱河造成了極大的恐慌,老刑警劉巖卓舵,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件南用,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機裹虫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門肿嘲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人筑公,你說我怎么就攤上這事雳窟。” “怎么了匣屡?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵封救,是天一觀的道長。 經(jīng)常有香客問我耸采,道長兴泥,這世上最難降的妖魔是什么工育? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任虾宇,我火速辦了婚禮,結果婚禮上如绸,老公的妹妹穿的比我還像新娘嘱朽。我一直安慰自己,他們只是感情好怔接,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布搪泳。 她就那樣靜靜地躺著,像睡著了一般扼脐。 火紅的嫁衣襯著肌膚如雪岸军。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天瓦侮,我揣著相機與錄音艰赞,去河邊找鬼。 笑死肚吏,一個胖子當著我的面吹牛方妖,可吹牛的內容都是我干的。 我是一名探鬼主播罚攀,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼党觅,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了斋泄?” 一聲冷哼從身側響起杯瞻,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎炫掐,沒想到半個月后又兵,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年沛厨,在試婚紗的時候發(fā)現(xiàn)自己被綠了宙地。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡逆皮,死狀恐怖宅粥,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情电谣,我是刑警寧澤秽梅,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站剿牺,受9級特大地震影響企垦,放射性物質發(fā)生泄漏。R本人自食惡果不足惜晒来,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一钞诡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧湃崩,春花似錦荧降、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至薄扁,卻和暖如春剪返,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背邓梅。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工脱盲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人震放。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓宾毒,卻偏偏與公主長得像,于是被迫代替她去往敵國和親殿遂。 傳聞我的和親對象是個殘疾皇子诈铛,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345