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