延遲著色
此條目沒有列出任何參考或來源。 (2011年4月19日) |
在電腦圖形領域,延遲著色(deferred shading)是一種在三維空間中著色的技術。這種著色的演算法把目標分成很多的小塊寫入中間緩衝儲存區,而後再合併。這種方法區別於直接把著色結果寫進顏色的訊框數緩衝里。在目前的硬體中,傾向於使用多重的彩現目標去避免重複轉換向量點。一旦所有需要的緩衝建好,就直接被讀進一種著色演算法中,合併在一起從而得出最後的結果。 這樣,著色一個場景所需的計算和主記憶體的頻寬被減少到了這些可見的部分中,從而降低了著色深度的複雜性。
優勢
延遲著色的主要優勢因為Z-buffer出現而有所減少,但是其他的一些優點還是毋庸質疑。比如提供了一種簡單的管理複雜光源的方法,去除了其他複雜的著色源的管理,讓彩現流程更加簡單。這些在開發軟體的過程中由開發者去決定的相對來說比較小的優勢,導致了無止境的爭論。
延遲著色的一個特別的用途在於推遲光照。彩現目標為了光照的著色,會呼叫一個G-buffer去儲存各種參數。通常儲存的資料是顏色,表面的法向和觀察的位置。無論在加光照的步驟里是不是需要這些資料,他們理論上是可以存起來的。
缺陷
因為使用了多重的彩現目標,常占用一個浮點,導致使用主記憶體的頻寬會比直接彩現的技術多。現代圖形硬體的數學計算比主記憶體的存取快。再加上在未來的硬體中,可能數學計算和主記憶體的表現會有更大的偏重, 這就導致了延遲著色技術可能不是一個長久的解決方案。
延遲著色的另一個重要的缺陷在於它不能計算透明。雖然這個問題在Z-buffer場景中是普遍存在的,一般會用延遲和排序的方法彩現場景中透明的部分。
延遲光照
延遲光照(也稱為Light Pre-Pass)是對延遲著色的修改。此技術需要三步,而不是延遲著色的兩個。在第一次繪製場景幾何體時只逐像素輸出照明所需的屬性至G緩衝,螢幕空間「延遲」光照後僅輸出漫反射和高光反射的光照資料,因此必須進行第二次繪製以讀回光照資料並輸出最終的每像素著色結果。延遲照明的明顯優勢是G-Buffer的尺寸急劇減小,顯而易見的成本是需要繪製場景兩次,此外延遲照明中的延遲傳遞必須分別輸出漫反射和高光反射,而延遲著色僅需要輸出單個組合的輻射度。
由於G緩衝區尺寸的減小,這種技術可以部分克服延遲著色的一個嚴重缺點 - 多材料。另一個可以解決的問題是MSAA,因為可以不依賴MRT延遲光照可以在DirectX 9硬體上使用MSAA。