Unity3D中的shader高階

2021-06-10 03:28:00 字數 1483 閱讀 4498

unity3d shader 

基礎知識:**:

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裡,可供使用者使用

unity 3D模型流光Shader

今天分享下unity中3d模型的一些shader。先來個最簡單的,就是上下滾動的純色流光。通過調整 centerrange來實現上下滾動。o.objz v.vertex.x 這裡使用模型的模型座標系模型被旋轉過所以這裡用的是x軸,同學如果想用得改下哈。flag saturate flag flag被...

Unity3D內建Shader翻譯一

unity3d內建了很多shader,文件很詳細,自己翻一下.便於加深印象.首先先解釋下unity3d的shader.unity裡面的shaders是使用一種叫shaderlab的語言編寫的,它同微軟 的.fx檔案或者nvidia的cgfx有些類似。傳統意義上的vertex shader和pixel...

Unity3D內建Shader翻譯三

上次講的是transparent shader family,他們是繪製半透明的物件使用的,但他們並不能滿足我們全部的要求。transparent cutout shader family是對半透明物件shader的一類補充,與transparent shader family有所區別的是 cuto...