Unity3D中的shader基礎知識


1.Unity中配備了強大的陰影和材料的語言工具稱為ShaderLab,以程式語言來看,它類似於CgFX和Direct3D的效果框架語法,它描述了材質所必須要的一切咨詢,而不僅僅局限於平面頂點/像素着色。

2.在Unity3D中創建一個Shader:Assets -> Create -> Shader

3.創建了Shader就可以應用到各個材質Material中,創建材質:Assets -> Create -> Material。然后就可以在材質的Inspector面板中,shader下拉框中可以找到新增加的shader

4.Rendering Paths是Unity3D中一個重要的概念,中文翻譯就是“渲染通道”。它可以很大程度上影響光線和陰影的渲染效果,但具體要依賴於具體的游戲內容和硬件設備,以及平台。Unity3D中有三種渲染通道類型,從高到低分別為:Deferred Lighting,Forward Rendering,Vertex Lit。如果平台或設備顯卡不能支持高級別的通道類型,Unity3D會自動選擇稍微低一些的類型。

三種類型的細節比較,詳情看參考手冊。

5.如何設置渲染通道:在Edit -> Project Setting -> Player中Inspector面板下面,三種發布類型里都有一個渲染通道的設置。

另外,每個攝像機的Inspector面板中,也都有一個渲染通道Rendering Path的設置。

6.渲染通道與shader的關系。

Deferred Lighting通道類型不關心有多少個光源會影響它,每個物體一般都會繪制兩次;類似地,Vertex Lit 只繪制一次。所以對於這兩種類型來說,shader對表現效果的改變大多在於多重紋理方面。

Forward 通道類型的表現效果要取決於shader和場景中的光源。它有兩種基本的計算方式Vertex-Lit 和 Pixel-Lit。可以翻譯為逐頂點渲染法和逐像素渲染法吧應該,對應着D3D中的頂點着色和像素着色過程。

Vertex-Lit 用於對網格模型表面頂點進行光照計算,一次性將所有光源的影響都計算在內,所以無論場景中有多少個光源,這種方式繪制的物體只繪制一次。

Pixel-Lit 會計算每個像素上面最終的光照,因此一個物體必須先唄繪制一次來獲得環境光和主方向光的光照信息,再繪制一次來獲得其他每個額外的光源信息。應用Pixel-Lit的物體的大小也會影響繪制的效率,越大的物體,繪制越慢。

Vertex-Lit 的開銷大於Pixel-Lit,但是Pixel-Lit可以提供很多非常好的效果。

7.Unity3D中的shader是通過改變那些直接影響游戲對象的材質來使用的。

8.一個shader可以被應用於多個材質中,但一個材質只能應用一個shader。

9.一些shader被寫入了Unity3D底層里,一部分作為內建shader被放置於standard assets里,可供用戶使用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM