1.HDRP LWRP是啥?:以往的unity所有的工作環境都是一樣的 假設你要做3A級遊戲 你的預設跟做手機遊戲都一樣 並且在渲染管線上面是無法去更改的 於是官方決定把渲染管線變成可以自己更改 並且釋出LWRP(輕量級續染管線) HDRP(高清渲染管線)
2.新的渲染管線跟舊版差在哪裡?:首先新版管線已經幫你分成LWRP->面向手遊等效能較差的設備 HDRP->面向PC 家機等效能高的設備 並且兩者都可以實現自定義渲染管線(SRP) 相對以往更加自由 但是難度也比以往更高 常常有人會問到 為何我升級之後全部變粉紅色? 為何XXX無法使用等等 這也是新版管線跟舊版管線最大的差異:shader的更改
3.shader的更改?那要怎麼辦?:首先如果使用standard等Unity自帶的材質 可以一鍵全部更改 但是自定義的shader基本上會全部出錯誤 要更改的話LWRP有方法可以更改 那就是將shader裡面的
LightMode = ForwardBase 改成 LightMode = LightweightForward 詳細作法看這邊:https://www.cgjoy.com/thread-213619-1-1.html 但如果用到燈光相關的效果基本上還是會出錯 於是乎官方給了一個shader神器 shadergraph
4.shadergraph是啥麼鬼鬼?:shadergraph基本上就是把shader圖形化編輯 網上非常多教學這邊不贅述 shadergraph(簡稱SG)可以在新版的管線下正常運行 同時多了很多很好用的節點 之後我會再進行一波分享 並且我們這次的效果就是要用SG來製作了
5.那該怎麼使用這些軟件呢?:這邊直接給結論 如果使用舊版管線請使用shaderforge或者ASE 如果使用新版管線請使用shadergraph或ASE (Amplify Shader Editor) ASE 兩邊都可以使用 唯一缺點就是要錢...... 前面講了一大堆東西 現在要開始實作了!
首先先匯入我們的模型(版本2018.3以上 HDRP版版本4.10)都設置好之後 預設會長這樣:
接著開始製作我們新的shader 使用SG創建一個PBR shader 並且製作成卡通風格的效果 這邊我只有做陰影+簡單的外發光 因為我之前有發過一個教學了 內容基本上就不做解釋了 直接附圖 想知道作法原理的人可以看這篇:https://forum.gamer.com.tw/Co.php?bsn=60602&sn=5381&subbsn=0&bPage=0
值得一提的是SG裡面並沒有提供燈光節點 至於要怎麼使用 可以自定義一個4維向量 然後將它做normalize動作再與Normal vecter做dot即可 不過有更高級的作法 後面會再告訴大家 另外這邊陰影細節很多 那是因為我面數作很高 把細節都作在模型上 當然如果低面數也是可以達到 必須另外使用一張貼圖來進行設置 接著來講重點外描邊吧~
因此我之前的作法是疊2個模型 但是總覺得很怪 之後我就想到我不如把這個pass加入SG的shader裡不就完事了嗎? 於是乎~我們首先先做一下外描邊 這邊使用shaderforge作 教學及原理再這邊:https://forum.gamer.com.tw/Co.php?bsn=60602&sn=5376&subbsn=0&bPage=0
PS:因為我之後打算用頂點色的R來控制我的外描邊 於是有作了乘於Vertex Color.R的小操作
我們只需要紅色框起來的部份就好了 因為之後還要複製貼上 於是我們先放著 接著我們打開剛剛做好的SG的shader 要打開他我們必須再主要的輸出地方右鍵選擇Show Generated Code
接著就會自動打開shader代碼:
接著把這一段貼到剛剛SG打開的shader 如圖的位置:
接著再把SF的shader的這一段複製起來:
然後把它貼到SG shader的這個位置(這2段的中間):
最後會長這樣:
之後我們就另外把它保存起來 之後這個shader他會出現在這邊:
然後把所有材質都換上這個shader 調整一下數值就可以瞜~ 最後效果如下:
最後再提一下 目前SG並沒有提供燈光方向的節點 如果真的很希望可以有的話可以參考這教學 利用代碼獲取燈光的方向 再把這個數值傳給我們的shader:https://www.bilibili.com/video/av46870548?from=search&seid=16230074783040347366
那麼做個總結吧~
第一步:創建你自己的SG shader
第二步:使用shaderforge創建自己的外描邊效果(也可以用其他軟件 或者上網找相關代碼 或者自己寫)
第三步:打開做好的SG shader的代碼
第四步:把屬性部分+pass的部分複製貼上
第五步:另存起來 並且匯入Unity帶有外描邊效果的shader即完成!