unity基礎開發 shader基礎知識

2021-06-11 19:43:55 字數 1384 閱讀 6678

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開發shader中要用到的內建狀態變數

著色器程式中內建的狀態變數 通常在著色器程式,你需要訪問一些公用的狀態,例如,當前的模型檢視 投影矩陣,當前環境的顏色,等等。宣告這些變數沒有 必要內建的狀態,可以在著色器程式中直接使用他們。內建矩陣 支援的矩陣 float4x4 unity matrix mvp 當前模型檢視投影矩陣 unity ...

unity螢幕空間座標shader

螢幕座標效果不受物體在空間位置的影響,只受到物體本身和視口的影響,有時候可以做一些特殊效果 比如2d遊戲平鋪紋理,除錯螢幕位置,螢幕特效等等 下面是根據官方例子修改的 shader unlit show uvs subshader sampler2d maintex struct ccc v2f v...

Unity噴墨效果Shader實現

筆者介紹 姜雪偉,it公司技術合夥人,it高階講師,csdn社群專家,特邀編輯,暢銷書作者,已出版書籍 手把手教你架構3d遊戲引擎 電子工業出版社和 unity3d實戰核心技術詳解 電子工業出版社等。對於遊戲中使用的類似噴墨效果,在射擊類遊戲中經常使用比如玩家射擊的子彈會在牆上出現類似噴墨效果,效果...