Unity3D Shader 開發詳解 (1)

2021-07-06 05:21:38 字數 964 閱讀 7115

unity 做為一款跨平台的遊戲引擎,為了適應不同平台的gpu能力,自定義了 shaderlabel 語言來組織 shader 的內容。並針對不同平台進行編譯。

shaderlabel 是一種標籤語言,類似 html。乙個 shader 

檔案格式如下:

shader "name"

shader檔案必須由 shader 關鍵字開始,後面跟著該 shader 的引用名。可以像目錄一樣組織引用名, 並且引用名跟檔名不必一樣。

properties 標籤塊定義了 shader 中使用到的外部屬性變數,可以在編輯器的 inspector 視窗中對這些屬性變數進行設定,也可以在執行時通過 api 來修改。

subshader 標籤塊中包含了shader程式的邏輯實現部分。乙個shader檔案中必須包含乙個subshader標籤塊,也可以包含多個subshader標籤塊,這樣 unity 可以根據硬體平台的效能自動選擇相匹配的 subshader 來執行其中的邏輯。

fallback 是乙個可選的標籤塊,當對於乙個硬體平台,所有的 subshader 都不匹配的時候,會執行 fallback 中引用的 shader 檔案來進行處理。如果我們不需要做這些相容性的處理,可以不定義 fallback 標籤塊,或則用以下形式使其無效:

fallback off

customeditor 也是乙個可選的標籤塊,它指定了這個 shader 的自定義編輯器類名。這是乙個繼承自 shadergui 的類。

乙個完整的 shader 檔案例子如下:

shader "myshader/name"

// other properties like colors or vectors go here as well

}subshader

subshader

fallback "othershader"

customeditor "mycustomeditor" }

Unity3d Shader 運動模糊

攝影常用的一招就是延時攝影,以使運動的物體產生運動模糊。攝影技巧為 1,三角架固定相機 2,調長 時間 3,物件有運動物體和靜止物體參照 用了延時攝影,會產生藝術感,見下圖 2015年1月 拍攝於上海陸家嘴 遊戲方面可喜的是unity3d也可以實現類似效果,先看效果圖 第一張為無運動模糊 第二張為有...

Unity3D Shader 入門學習

unity3d 的所有渲染工作離不開著色器.shader 著色器其實是一小段程式,它負責將輸入的mesh網格.以指定的方式和輸入的貼圖或者顏色等組合作用.然後輸出.繪圖單元可以依據這個輸出來將影象繪製到螢幕上 輸入的貼圖或顏色等,加上對應的shader,以及對shader的特定引數設定,將這些內容 ...

unity3d shader之浮雕效果

浮雕就是對影象上的乙個畫素和它右下的那個畫素的色差的一種處理 非常容易,只需要乙個簡單的演算法 用fragment shader來實現 我們只看實現部分就好 在frag函式中 mc00mc tex2d maintex,i.uv maintex rgb 獲取當前點的顏色 mc11 tex2d main...