Unity Shader入門精要總結 渲染路徑

2021-08-04 13:07:45 字數 1324 閱讀 2228

pass   

else

} }

}

前向渲染有兩種pass:base pass 和 addition pass。這兩種pass 進行的標籤和渲染設定以及常規光照計算如下圖所示。

內建光照變數和函式

​ 頂點照明渲染路徑是對硬體配置要求最少、運算效能最高、但同時也是得到的效果最差的一種型別,它不支援那些逐畫素才能得到的效果,例如陰影、法線對映、高精度的高光反射等。它只是使用了逐頂點的方式來計算光照。實際上,我們在上面的前向渲染路徑中也可以計算一些逐頂點的光源。但如果選擇使用頂點照明渲染路徑,那麼unity會只填充那些逐頂點相關的光源變數,意味著我們不可以使用一些逐畫素光照變數。

​ 前向渲染的問題是:當場景中包含大量實時光源時,前向渲染的效能會急速下降。例如,如果我們在場景的某一塊區域放置了多個光源,這些光源影像的區域互相重疊,那麼為了得到最終的光照效果,我們就需要為該區域內的每個物體執行多個pass來計算不同光源對物體的光照結果,然後再顏色快取中把這些結果混合起來得到最終的光照。然而,每執行乙個pass我們都需要重新渲染一遍物體,但很多計算實際上是重複的。

​ 延遲渲染是一張更古老的渲染辦法。除了前向渲染中使用的顏色緩衝和深度緩衝外,延遲渲染還會利用額外的緩衝區,這些緩衝區也被稱為g緩衝。g緩衝區儲存了我們所關心的表面的其他資訊,例如該表面的法線、位置、用於光照計算的材質屬性等。

延遲渲染的過程大致可以用下面的偽**來描述:

pass1  

else

} }

} pass2

} }

​ 可以看出,延遲渲染使用的pass數目通常就是兩個,這跟場景中包含的光源數目是沒有關係的。換句話說,延遲渲染的效率不依賴於場景的複雜的,而是和我們使用的螢幕空間的大小有關。這是因為,我們需要的資訊都儲存在緩衝區中,而這些緩衝區可以理解成是一張張2d影象,我們的計算實際上就是在這些影象中進行的。

可訪問的變數和函式

Unity Shader入門精要

學習資料 unity shader入門精要 時長 乙個月 計畫 1 2天完成一章,預計乙個月內完成 幾何階段 gpu實現,輸出螢幕空間的二位點座標,深度,著色資訊,傳送給光柵化階段 光柵化階段 gpu實現,決定每個渲染圖元哪些畫素應該被繪製在螢幕上,將幾何階段傳來的頂點資料進行插值 頂點v法線的獲取...

筆記 《Unity Shader入門精要》

應用階段 輸出渲染圖元 rendering primitives 包括 準備場景資料 相機 場景模型 光源 粗粒度剔除 culling 把不可見的物體剔除 渲染狀態 材質 紋理,使用的shader等。光柵化階段 每個渲染圖元的哪些畫素應該被繪製在螢幕上,包括 三角形設定 三角形遍歷 片元著色器 逐片...

《UnityShader入門精要》Unity陰影

lightmode為shadowcaster的pass是用來渲染陰影對映紋理。該shader如果沒有定義lightmode為shadowcaster的pass,則會去fallback指定的shader繼續尋找。如果沒有找到,該物體無法向其他物體投射陰影,但能接收來自其他物體投射的陰影 螢幕空間的對映...