3DMAX延遲著色技術(shù)性問(wèn)題探討

時(shí)間:2014-10-13 13:52:53 來(lái)源:北京中視英躍文化傳播有限公司 作者: 點(diǎn)擊: 0
現(xiàn)在很多動(dòng)漫和好萊塢大片都必不可少的一種技術(shù)的有關(guān)3DMAX的后期技術(shù):延遲著色。今天我在精英工程的CG動(dòng)漫博客上面跟大家分享下有關(guān)的內(nèi)容。延遲著色是一種對(duì)3d場(chǎng)景進(jìn)行后期照明的技術(shù),這種技術(shù)突破了以往渲染系統(tǒng)支持多重動(dòng)態(tài)光源時(shí),效率以及各種性能急劇下降的的限制。從而使得一個(gè)3d場(chǎng)景可以支持成百上千個(gè)動(dòng)態(tài)光源的效果。
 
  它的技術(shù)思路主要將3d場(chǎng)景的幾何光照信息(位置、法線、材質(zhì)信息)渲染到render target上,把它們從世界的三維空間轉(zhuǎn)變成屏幕的顏色空間,作為光照計(jì)算時(shí)的輸入,接著,對(duì)每一個(gè)光源,使用這些信息輸入來(lái)進(jìn)行計(jì)算生成一幀,然后把這樣的一幀(render target)合成到結(jié)果的幀緩存上,這樣當(dāng)遍歷完所有的光源,計(jì)算就完畢了,幀緩存上的圖像就是最后的渲染結(jié)果。下面是延遲著色的一些具體內(nèi)容:
 
1.它能讓你在繪制幾何圖形的時(shí)候不需要為任何光照方面的問(wèn)題所擔(dān)憂。
 
2.使用多個(gè)渲染流程將像素的多種格式,比如空間坐標(biāo),法線渲染到各自得目標(biāo)緩沖中去。
 
3.利用第2點(diǎn)中提到的渲染數(shù)據(jù)對(duì)像素進(jìn)行著色計(jì)算,仿佛在2D圖形空間中進(jìn)行繪制一樣。
 
傳統(tǒng)單通路光照(影響物體的所有光照在一個(gè)shader pass中完成)有哪些特點(diǎn)?
 
1.光源數(shù)量極少的場(chǎng)景中傳統(tǒng)渲染方式能工作得很好,比如只有太陽(yáng)光的野外場(chǎng)景。
 
2.在光源很多的時(shí)候,非常難于對(duì)光照進(jìn)行管理。
 
3.由于所有光照都在一個(gè)shader里完成,所以shader指令數(shù)目一個(gè)不小心就超過(guò)了GPU限制。
 
傳統(tǒng)多通路光照(指每個(gè)光源對(duì)物體的影響是分開(kāi)pass中完成的)有哪些特點(diǎn)?
 
1.復(fù)雜度太高,計(jì)算完所有光照需要物體數(shù)目 × 光源數(shù)目 個(gè)pass。
 
2.不論是按物體,還是按光源進(jìn)行分批都是相當(dāng)麻煩的。
 
3.理論上講,光源應(yīng)該按它們的作用范圍對(duì)場(chǎ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)化幀緩沖尺寸
視頻點(diǎn)
視頻點(diǎn)