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