什麼是deferred material shading?是否會在未來流行開來?

時間 2021-05-31 17:45:45

1樓:Mr Digger

又一次,把問題複雜化了。延遲渲染在當時要解決的主要問題是光源太多。

傳統的前向渲染,是這樣的

foreach Mesh:

foreach Light:

Render Mesh

延遲渲染是這樣的

foreach Mesh:

Render Geometries to GBufferforeach Light:

Render Light using GBuffer大約的,時間複雜度從O(MxN)減少到O(M)+O(N)

2樓:大薩比

這個技術的出現主要是由於新一代圖形API(DirectX12,Vulkan)為了減少CPU端overhead提供的新功能bindless texture,能夠從shader中幾乎無限制的取樣各種紋理(比如把大量貼圖指標存到乙個陣列裡傳給shader)。

目前主流的deferred rendering都是把光照階段所必要的資訊都儲存在g-buffer中,albedo,normal,roughness之類。有了bindless texture之後寫入g-buffer中的只需要uv和id就夠了。光照階段只需通過id檢索到所需紋理就足夠。

有點如下:

1.免去了以前每次draw都要繫結貼圖的cpu消耗。

2.保證了純粹的1個畫素點只取樣一次的極限deferred shading

3.對於次表面材質可以輕鬆取樣

4.與GPU剔除和drawindirect同時使用幾乎可以Zero Driver Overhead。

5.AA的時候可以直接從id判斷三角形邊緣(無論MSAA還是PostAA都有用)

實際上在這個技術發布之前就有人嘗試過,比如AC大革命裡用mega texture代替bindless texture實現了同樣的效果。

但同樣也會有各種問題在其中。這裡列舉兩個:

1.多材質如何做deferred shading?總不能每個畫素做動態分支,乙個乙個判斷吧。

有人提出了做tile把畫素區塊合併,然後一次性dispatch,效能會高很多。至於vgpr,sgpr,lds佔用率之類需要通盤考慮,偏向一邊都會影響效能。

2.結果SSAO,SSR之類的post effect還是需要用到normal,roughness之類的g-bufffer資訊。應用上還是需要權衡利弊。

3樓:Steven Liu

初衷是進一步地做到「不浪費 GPU 時間給不被渲染的畫素」。

從 FORWARD SHADING 走到 DEFERRED SHADING,保證了只在螢幕上出現的畫素中計算 SHADING。隨著材質 SHADING 計算越來越複雜,DEFERRED SHADING 帶來的增益也是越來越大。(*)

從 DEFERRED SHADING 走到 DEFERRED MATERIAL SHADING,保證了只在螢幕上出現的畫素中取樣材質,並計算 SHADING。

基本思路是在 GBUFFER 中不再取樣材質,而是僅儲存很少的畫素資訊(比如畫素所用材質 ID 和用於後面 SHADING PASS 中手動差分頂點資訊的 barycentric UV)。然後在 SHADING PASS 中將材質取樣和SHADING一步完成。

隨著場景物件越來越多,材質所用貼圖越來越大,這種方式帶來的增益也是越來越多。

你引用的文章中利用了 AMD GCN 上的乙個 HACK,可以將 barycentric UV 計算出來。

(*):當然 FORWARD SHADING 可以通過 DEPTH PREPASS 來保證被遮擋的畫素被提前剔除,同樣保證不浪費 GPU 時間給這些被遮擋的畫素。但是如果所有的 SHADING 都放 FORWARD SHADING 的話,PS 就會遇到 VGPR 效率問題。

什麼是寂寞,什麼是孤獨什麼是喜歡,什麼是愛情?

誰怕 寂寞是心理狀態,跟身邊有沒有人無關 孤獨是現實狀態,自己乙個人的時候叫孤獨 但可能內心並不孤獨 喜歡是單方面心理狀態,是由人的主觀能動性決定的 愛情是雙方的關係狀態,兩個人互相喜歡才會產生愛情 傾心 寂寞是,你孤獨的時候無事可做 孤獨是,你寂寞的時候無人陪伴 喜歡是,你孤獨的時候心中所想 愛情...

什麼是自信 什麼是驕傲 什麼是謙虛 什麼是自卑?

隱塵 自信,有虛有實。實即真正的自信,虛即虛假的自信,也就是驕傲自大。但如果不勤奮努力,真正的自信也會由虛化實,變成驕傲自大 如果勤奮努力,虛假的自信 驕傲自大 也會由虛化實,變成真正的自信。虛虛實實,自信和驕傲自大之間很難區分。自卑,即缺乏自信,認為自己做不到。謙虛,從某種程度上講它和自卑很像,但...

什麼是宇宙?什麼是空間?什麼是維度?什麼是物質?

唐瑞欽 宇宙大部分空間在你看來什麼都沒有實際上在看不見的空間裡布滿了宇宙塵埃氣體等等,或者一些宇宙物質,總之在星球意外的空間不會是什麼都沒有的更不是虛無。其次我們所處的是三圍空間,即便是星球以外的宇宙空間也是三維空間,但是同樣存在四維甚至五維空間,只不過那是另乙個平行宇宙中的空間不是我們知道的宇宙的...