unity的渲染路徑

2021-08-28 06:39:50 字數 3105 閱讀 9397

forward rendering path(前向渲染路徑)

deffered rendering path(延遲渲染路徑)

vertexlit rendering path(頂點照明渲染路徑)(拋棄)

標籤名描述

always

不管使用哪種渲染路徑,該pass總會被渲染,但不會計算任何光照

*forwardbase

用於向前渲染。該pass會計算環境光,最重要的平行光,逐頂點/sh光源和lightmaps

*forwardadd

用於向前渲染。該pass會計算額外的逐畫素光源,每個pass對應乙個光源

*deferred

用於延遲渲染。該pass會渲染g緩衝(g-buffer)

*shadowcaster

把物體的深度資訊渲染到陰影對映紋理(shadowmap)或一張深度紋理中

prepassbase

用於遺留的延遲渲染。該pass 會渲染法線和高光反射的指數部分

prepassfinal

用於遺留的延遲渲染。該pass通過合併紋理,光照和自發光來渲染得到最後的顏色

vertex等

用於遺留的頂點照明

pass

巴拉巴拉。。。

}

vertexlit渲染路徑下: 有vertex   執行 ,沒有不執行任何pass。always型別:只執行v的,**靠前先執行效果混合

forward渲染路徑下:有forward 執行,無f 有vertex 執行 ,無f無v有deferred 不執行。always型別:按照**位置

deferred渲染路徑下:有deferred 執行,無d 有forward 執行, 無d無f有vertex 執行。always型別:不執行

兩個緩衝區:

顏色緩衝

深度緩衝(決定光源是否可見)

向前渲染的三種處理光照的方式

逐頂點處理(vertex):not impotant,

逐畫素處理(pixel):important,最亮的平行光,

球諧函式(spherical harmonics,sh):not impotant,

決定乙個光源使用哪種處理模式取決於它的型別和渲染模式

projectsetting-> quality中的vsync count 引數會影響你的fps,

向前渲染的兩種pass:


//乙個逐畫素的平行光以及所有逐頂點和sh光源

/*可實現的光照效果

光照紋理

環境光自發光

陰影(平行光的陰影)*/


blend one one

#pragma multi_compile_fwdadd

//其他影響該物體的逐畫素光源,每個光源執行一次pass

/*預設情況下不支援陰影,通過替換編譯指令開啟陰影

//#pragma multi_compile_fwdadd_fullshadows

但這需要unity在內部使用更多的shader變種*/

#pragma multi_compile_fwdbase/fwdadd

保證unity可以為相應的型別的pass生成所需要的shader變種,這些變種會處理不同條件下的渲染邏輯

例如:是否使用光照貼圖,是否開啟陰影,當前處理哪種光源型別

名稱型別

描述_lightcolor0

float4

該pass處理逐畫素光源的顏色

_worldspacelightpos0

float4

_worldspacelightpos0.xyz是該pass處理逐畫素光源的位置。

如果該光源是平行光,那麼.w是0,其他光源型別w為1

_lightmatrix0

float4x4

從世界空間到光源空間的變換矩陣,可以用於採用cookie和光強衰減(attenuation)紋理

unity_4lightposx0,

unity_4lightposy0,

unity_4lightposz0

float4

僅用於basepass。前4個非常重要的點光源在世界空間中的位置

unity_4lightatten0

float4

僅用於basepass。儲存了前4個非常重要的點光源的衰減因子

unity_lightcolor

float4[4]

僅用於basepass。儲存了前4個非常重要的點光源顏色

延遲渲染主要包含兩個pass:

用於渲染g快取。不計算光照,只看是否可見,僅把光照計算的相關資訊(漫反射顏色,高光反射顏色,平滑度,法線,自發光,深度等)儲存到g緩衝區中。這個pass只執行一次。

用於計算真正的光照模型。利用g緩衝(geometry-buffer)中的資訊進行真正的光照計算,將最終的光照顏色儲存到幀快取中。

不支援真正的抗鋸齒(anit-aliasing)功能

不能處理半透明物體

對顯示卡有一定要求

預設的g快取區包含的渲染紋理(render texture,rt):

當在第二個pass中計算光照時,預設情況下僅可以使用unity內建的standard光照模式

延遲渲染路徑中可以使用的內建變數 名稱

型別描述

_lightcolor

float4

光源顏色

_lightmatrix0

float4x4

從世界空間到光源空間的變換矩陣,可以用於取樣cookie和光強衰減紋理

參考:《unityshader入門精要》第九章

《unity shaderlab 開發實戰詳解》第五六七八章

Unity渲染路徑

unity支援不同的渲染路徑。您應具體取決於你的遊戲內容和目標平台 硬體來選擇使用哪乙個。不同的渲染路徑有不同的特點和效能特點,主要影響燈光和陰影 如果圖形卡不能處理選定的渲染路徑,unity將自動使用乙個較低保真度的設定。因此,在gpu上不能處理延遲照明 deferred lighting 將使用...

unity渲染路徑

1 deferred shading 有最佳的光照和陰影效果,在場景中存在許多的實時光照時,使用deferred shading也是最佳的方案,之所以叫做deferred 延遲 是因為shading的時機不是發生在第乙個pass的頂點 片元函式內,而是存在延遲,直到第二pass的時候才執行,每個光源...

Unity渲染基礎 Untiy渲染路徑

unity內建管線的渲染路徑主要包含了延遲渲染管線和前向渲染管線。不討論舊版延遲渲染和舊版頂點光照 unity內建管線的切換可以在graphics setting中更改 也可以在攝像機的設定上更改 渲染路徑的作用 告訴unity,光照是如何應用到unity shader的。作用在每個物體上一定數量最...