OpenGL延迟着色之一
OpenGL延遲著色
- OpenGL延遲著色簡(jiǎn)介
- 源代碼剖析
- 主要源代碼
OpenGL延遲著色簡(jiǎn)介
我們一直使用的方法稱為“正向渲染”或“著色”。… 這是一種簡(jiǎn)單的方法,其中我們對(duì)VS中所有對(duì)象的頂點(diǎn)執(zhí)行一系列轉(zhuǎn)換(法線和坐標(biāo)到剪輯空間的大部分平移),然后對(duì)FS中的每個(gè)像素進(jìn)行光照計(jì)算。由于每個(gè)像素在FS中僅使用一次,因此在計(jì)算每個(gè)像素的光效時(shí),我們需要向FS提供有關(guān)所有光源的信息。這是一種簡(jiǎn)單的方法,但是有其缺點(diǎn)。在具有許多對(duì)象的復(fù)雜場(chǎng)景(如大多數(shù)游戲)中,并且同一像素被多個(gè)對(duì)象覆蓋的情況下,我們將浪費(fèi)資源。例如,如果深度的復(fù)雜度為4,則光計(jì)算的3倍是徒勞的,因?yàn)橹恍枰敳肯袼亍.?dāng)然,我們可以按照與相機(jī)的距離對(duì)物體進(jìn)行排序,
高級(jí)渲染的另一個(gè)問(wèn)題是大量光源出現(xiàn)的。通常,在這種情況下,光線的傳播半徑不大(否則它將淹沒(méi)整個(gè)場(chǎng)景)。但是我們的FS會(huì)計(jì)算每個(gè)光源的效果,即使它離像素很遠(yuǎn)也是如此。我們可以嘗試計(jì)算它們之間的距離,但這是FS中的額外開銷和分支。正向渲染根本不適合具有大量光源的場(chǎng)景。試想一下,使用100個(gè)來(lái)源將進(jìn)行多少次計(jì)算…
延遲陰影是許多游戲中使用的一種流行技術(shù),可以解決上述問(wèn)題。關(guān)鍵是幾何計(jì)算(位置變換和法線變換)與照明計(jì)算之間存在分隔。我們沒(méi)有將所有對(duì)象從有效緩沖區(qū)一直移到幀緩沖區(qū)中的最終位置,而是將過(guò)程分為兩個(gè)大部分。在第一遍中,我們啟動(dòng)常規(guī)VS,但不是將處理后的
總結(jié)
以上是生活随笔為你收集整理的OpenGL延迟着色之一的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: OpenGL GLFX开放GL效果库
- 下一篇: OpenGL延迟着色之二