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面板下面,三種發佈類型裏都有一個渲染通道的設置。it

另外,每一個攝像機的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裏,可供用戶使用

相關文章
相關標籤/搜索