現(xiàn)在很多動漫和好萊塢大片都必不可少的一種技術(shù)的有關(guān)3DMAX的后期技術(shù):延遲著色。今天我在精英工程的CG動漫博客上面跟大家分享下有關(guān)的內(nèi)容。延遲著色是一種對3d場景進(jìn)行后期照明的技術(shù),這種技術(shù)突破了以往渲染系統(tǒng)支持多重動態(tài)光源時,效率以及各種性能急劇下降的的限制。從而使得一個3d場景可以支持成百上千個動態(tài)光源的效果。
它的技術(shù)思路主要將3d場景的幾何光照信息(位置、法線、材質(zhì)信息)渲染到render target上,把它們從世界的三維空間轉(zhuǎn)變成屏幕的顏色空間,作為光照計算時的輸入,接著,對每一個光源,使用這些信息輸入來進(jìn)行計算生成一幀,然后把這樣的一幀(render target)合成到結(jié)果的幀緩存上,這樣當(dāng)遍歷完所有的光源,計算就完畢了,幀緩存上的圖像就是最后的渲染結(jié)果。下面是延遲著色的一些具體內(nèi)容:
1.它能讓你在繪制幾何圖形的時候不需要為任何光照方面的問題所擔(dān)憂。
2.使用多個渲染流程將像素的多種格式,比如空間坐標(biāo),法線渲染到各自得目標(biāo)緩沖中去。
3.利用第2點中提到的渲染數(shù)據(jù)對像素進(jìn)行著色計算,仿佛在2D圖形空間中進(jìn)行繪制一樣。
傳統(tǒng)單通路光照(影響物體的所有光照在一個shader pass中完成)有哪些特點?
1.光源數(shù)量極少的場景中傳統(tǒng)渲染方式能工作得很好,比如只有太陽光的野外場景。
2.在光源很多的時候,非常難于對光照進(jìn)行管理。
3.由于所有光照都在一個shader里完成,所以shader指令數(shù)目一個不小心就超過了GPU限制。
傳統(tǒng)多通路光照(指每個光源對物體的影響是分開pass中完成的)有哪些特點?
1.復(fù)雜度太高,計算完所有光照需要物體數(shù)目 × 光源數(shù)目 個pass。
2.不論是按物體,還是按光源進(jìn)行分批都是相當(dāng)麻煩的。
3.理論上講,光源應(yīng)該按它們的作用范圍對場景進(jìn)行分割管理,但如果按多通路計算光照,動態(tài)光源將相當(dāng)難處理。
延遲著色有哪些特點?For each object: Render to multiple targets For each light: Applylight as a 2D postprocess
1.復(fù)雜度適中,需要物體數(shù)目 + 光源數(shù)目 個pass。
2.易于分批計算。
3.多個小范圍光源和一個大范圍光源計算量差不多(因為每象素影響光源數(shù)一樣)。
我們需要哪些渲染目標(biāo)緩沖?
1.我們需要如下幾何渲染結(jié)果:
-空間坐標(biāo) -法線數(shù)據(jù)
-材質(zhì)參數(shù)(漫反射顏色,自發(fā)光顏色,高光顏色及高光衰減系數(shù)等)
2.延遲著色不是適用于需要特別多輸入?yún)?shù)的光照計算(比如球面調(diào)和函數(shù)的光照計算)。
“胖的”幀緩沖
各種幀緩沖的格式:
–空間坐標(biāo) A32B32G32R32F
–法線 A16B16G16R16F
–漫反射顏色 A8R8G8B8
–材質(zhì)參數(shù) A8R8G8B8
每個像素占用256字節(jié),在不使用抗鋸齒的情況下,1024×768要占用24M的空間。目前現(xiàn)在的硬件也不支持多個不同格式的幀緩沖。
優(yōu)化幀緩沖尺寸