從頭學ShaderGraph :溶解材質
![從頭學ShaderGraph :溶解材質](https://i.iter01.com/images/7e06fa0c84ea87b6f41f4562c5dd819b9edcf6e1239bc7cfc19cdc534f1a6d6c.jpg)
溶解材質
先說下新發現
上篇文章不是說HDRP的emission物理單位導致需要乘10w倍嗎,我在shadergraph中找到了一個節點叫Emission Node,應該是HDRP獨有的。
![從頭學ShaderGraph :溶解材質](https://i.iter01.com/images/3c02e544086e8af2598ef420eed0ea022671ab2aaba1db7cbb066711a9609810.jpg)
現在單位是Nits,熟悉顯示器的朋友應該清楚,常見顯示器的最大亮度不高於400Nits,強勁一點的HDR顯示器也不會超過1000Nits
![從頭學ShaderGraph :溶解材質](https://i.iter01.com/images/490d234ebc6eb4be5bc8d779b8808a4cc38e44d8a8dbe19c9c4218f03fbdae2a.jpg)
所以我把滑塊的最大最小值重新修正了一遍,如果是想用在URP(LWRP)中的同學,可以自行修改(換成乘法就好)。
下面開始正文
靈感來源於Brackeys的youtube教程,但內容更加豐富。
溶解材質是遊戲內能經常見到的:怪物死亡,消融模型,淡入淡出,都需要用到。
溶解在材質上分為兩步
1. 模型逐步消失
2. 消失邊緣發光
先來做模型消失
模型消失即為讓模型沿著alpha切割,就是standard的Cutout模式
![從頭學ShaderGraph :溶解材質](https://i.iter01.com/images/aca8886151f551b7642192a748ea0773c48d7d9cce33cf9c7cdd696e9fd694dd.jpg)
也就是圖中的AlphaClip
預設AlphaClip為0.5,也就是說alpha中,0到0.5的位置會被切掉
現在需要一張用於切割的黑白Noise圖。你可以自己做,放在Albedo的Alpha中,也可以用Noise節點來實時生成
![從頭學ShaderGraph :溶解材質](https://i.iter01.com/images/c48a8ba35f6200a4450ef8866f708e2fed3618539425dadc598a5caa4c7f0df0.jpg)
目前自帶的noise節點為這三個。我選擇最後一個作為例子
![從頭學ShaderGraph :溶解材質](https://i.iter01.com/images/0e0b561f17331477ece94eb60dbc177d86b502b58b0ea3d981fc3e29e7671815.jpg)
可見模型被切割了。
現在我需要一個滑塊,來控制這張Noise圖,有如下變化。
![從頭學ShaderGraph :溶解材質](https://i.iter01.com/images/1d428f1735de478d59e283fc48b7c1a569ecc850866c40a615690aeb1cc0aca2.jpg)
最簡單的做法是,加上一個範圍是-1到1的滑塊。
![從頭學ShaderGraph :溶解材質](https://i.iter01.com/images/d6fdf698e526eab46d7d72e6fd0070b5cfb130869abfa73fbd3650a4ec0c03b8.gif)
於是乎切割就做好了。
再加切割邊緣光
邊緣光更好理解,現在圖片0.5是切割的邊界。如果0-0.6為發光,0.5以下被切掉,那麼發光地方不就成了0.5-0.6。這就是邊緣光。
可以用Step這個節點給Alpha做遮罩,把邊緣發光加到自發光貼圖上,最終輸出出去。
![從頭學ShaderGraph :溶解材質](https://i.iter01.com/images/b9c998c7305979c16d086a7b1306ebe04651c017cf5aa06c31aeb801d391d216.jpg)
![從頭學ShaderGraph :溶解材質](https://i.iter01.com/images/55249fba566333ed45af4041abc6b7af70b5534ce50a34b548fd67209f4ad9c5.gif)
上面就是原視訊的所有內容
但!我們還要往前!!
在視訊裡,我看到了一段參考,從上到下的溶解,並且溶解的顏色會變化。
![從頭學ShaderGraph :溶解材質](https://i.iter01.com/images/5ac464d44c5cd51db402835c1504a5d9f5ba74e1f37e1b7df7a4f4200f172bb1.gif)
這篇文章的最終目的就是這個。
先分析下如何做
- 取到上下資訊
- noise上下消融
如何取上下資訊?
有兩種方法:1.取模型本地的位置資訊(Position節點)。2.UV。
這裡我選擇用UV來做。
因為第一套UV需要給貼圖。所以模型展2U,正面對映。
![從頭學ShaderGraph :溶解材質](https://i.iter01.com/images/cd87317b81d36efbf54c70c5f65820050b700ae51f28f4f1155906318a5d2111.png)
這樣,UV的V就能拿來做上下漸變圖。
如何上下消融?
![從頭學ShaderGraph :溶解材質](https://i.iter01.com/images/f0b487b42871488b998289ed72428027110137d6a843deb9414de0fb5ce16e8e.jpg)
Alpha為1,肯定顯示,Alpha為0,肯定隱藏。
Noise是一張不規則的黑白圖片,
- 最黑的地方為0,0的位置想要顯示,就得加1。
- 最白的地方是1,1的位置想要隱藏,就得減1。
所以我需要一張圖有1到-1的漸變,顯然右邊那張圖是我們想要的。
原圖是線性增加的,可以看成影像y=x
而右圖,設為y=ax+b,a是黑白漸變的強度。函式滿足x=0.5時,y=0。很容易得出,b=-0.5a,所以y=ax-0.5a
![從頭學ShaderGraph :溶解材質](https://i.iter01.com/images/6fd09ace1e40c2a6061016ab15f6d4d0a9de66750e693c1f69c587c692be3f6e.jpg)
照著函式連一下,即可得到我們想要的矇蔽圖。下面一步,便是讓最後那張圖能上下移動。
*最開始我想的是在最後一個節點上,加上一個滑塊。但真正實驗過後,你會發現行不通。因為最後一張圖有高於1的值,用加上-1沒法得到純黑。而用clamp或saturate限制0-1,會導致漸變有問題。
所以我找了個取巧的辦法。
![從頭學ShaderGraph :溶解材質](https://i.iter01.com/images/d3feb3fa580ae8583d221b7d659cab83d98e8553410b975b35c59753a1ff0e6a.jpg)
y=2x-1
把漸變滑塊加在x上。也就是y=a(x+m)-0.5a
當a等於2時候,m在0-1上滑動,正好會讓影像有整個 y在-1到1 的漸變。
而當a大於2時,滿足 y在-1到1 的m,也在0-1之間。
![從頭學ShaderGraph :溶解材質](https://i.iter01.com/images/81e402c4ef8546c2a1acbbef4ffb683ab3af43b6bcbaab1e2d42050b4a4fbf09.jpg)
AlphaClip的是一個滑塊,最小值為2
至此,上下溶解的蒙版製作完成。
至於顏色漸變,用UV的V,lerp兩種顏色就好。
![從頭學ShaderGraph :溶解材質](https://i.iter01.com/images/976f0319df8f06ffe9acc6340687d68077d52e7e7161c535855f4a1b00fa1af7.jpg)
至此,本章完結
![從頭學ShaderGraph :溶解材質](https://i.iter01.com/images/557ddcfa818931d64692a2f427fbb19580ead8a7cef710d6c6d277b649f7c184.jpg)
最後把noise悄悄換成了維諾圖
![從頭學ShaderGraph :溶解材質](https://i.iter01.com/images/954642cb1913b5c7484192f59d11b6d6af324f5ebba88bf66f62fd16d26c9b0a.gif)
下面是我的檔案
檔案分享share.weiyun.com
密碼:xjqym9
使用方法:找個HDRP或著URP(LWRP),拖進去。我的資料夾下有預製體。記得調自發光強度。
下面是我的artstation地址:
https://www.artstation.com/luteli
相關閱讀:從頭學ShaderGraph :UV與基礎材質
作者:Lute Li
專欄地址:https://zhuanlan.zhihu.com/p/99435201
相關文章
- 從頭學ShaderGraph:雪材質
- 從頭學ShaderGraph :護盾材質
- 從頭學ShaderGraph 6:深度冰材質
- 從頭學ShaderGraph :UV與基礎材質
- 材質
- 修改材質
- blender材質屬性:
- 材質最佳化:如何正確處理紋理和材質的關係
- OpenGL高階版本學習日誌2:光照模型&材質模型
- katana材質的製作2
- JMonkeyEngine——材質檔案備註
- ThreeJs-03材質進階JS
- 從頭開始學習VuexVue
- 韶關鋼材檢測 Q355B鑑定材質檢測
- 閃耀暖暖手遊布料材質解析
- three.js獲取物件的材質JS物件
- Linux從頭學07:中斷那麼重要,它的本質到底是什麼?Linux
- unity shader 溶解,上下左右,cutoffUnity
- Premiere溶解過渡效果怎麼做怎麼做? PR影片新增溶解效果的技巧REM
- ThreeJs-05紋理材質高階操作JS
- ThreeJs-04詳解材質與紋理JS
- 一組材質面料展示模組參考
- Premiere溶解過渡效果怎麼做怎麼做? PR視訊新增溶解效果的技巧REM
- 從頭開始學習vue-routerVue
- Unity Shader之雙面材質和多Pass渲染Unity
- CesiumJS PrimitiveAPI 高階著色入門 - 從引數化幾何與 Fabric 材質到著色器 - 上篇JSMITAPI
- CesiumJS PrimitiveAPI 高階著色入門 - 從引數化幾何與 Fabric 材質到著色器 - 下篇JSMITAPI
- 記錄從頭學習 JAVA+selenium+testNGJava
- visualstudio著色器設計器shadergraph使用
- 【MMD x EEVEE教程】材質篇 • 替換物體反射反射
- Inconel600是什麼材質的鎳基合金
- 前端3D引擎-Cesium自定義動態材質前端3D
- 工字電感磁芯材質型別深度詳解型別
- 【caffe2從頭學】:2.學習caffe2
- 從頭開始的Java學習Day05Java
- Threes.js入門篇之8 - 材質與紋理JS
- 【MMD x EEVEE教程】材質篇 • 移除天空球環境反射反射
- 【MMD x EEVEE教程】材質篇 • 修復模型異常光斑模型