Unity 高清渲染管線 ShaderGraph 實現簡單的表面水流效果
在玩 HDRP 的內建 Lit 著色器的時候,對它的 Mask Map 貼圖很感興趣,感覺似乎能夠為材質新增很多細節
不使用 Mask Map
使用 Mask Map
查了下文件,發現 Mask Map 是分 RGBA 通道作為灰度蒙版,為材質新增金屬度、環境光遮蔽、細節貼圖蒙版與粗糙度效果的:
讓我最感興趣的是 A 通道的粗糙度蒙版,就像上圖那樣,能營造出非常類似物體表面的水霧的感覺。
恩..如果我用 Shader 讓這個 A 通道做一個平移,再加點噪聲,說不定就能做出來類似下雨時物體表面潺潺流水的效果?
實現思路
使用 ShaderGraph 的 Time 與 Tilling and Offset 節點將 UV 做一個平移,加上線性噪聲節點做一些扭曲,新增一點隨機性。最後直接複用原材質的 Mask Map 的 A 通道並應用擾動。用一個布林來控制是否應用效果。新增各種屬性值就不說了。應該還不錯。
在實現過程中,由於 HDRP 的內建 Lit 著色器沒有 ShaderGraph 版本,就從論壇上找了一個官方的 Lit 著色器的 ShaderGraph 版本,基於它進行修改。
整體(糊也沒事..大部分是官方給的,用於實現 Lit 的特性,核心就那上面的一小點)
核心效果實現(就這幾個節點..真的挺簡陋的..)
效果
磚牆材質
石碑(?) 材質
模型效果
一些個人感受:
這是個很粗糙的效果,用到的節點也很少,之後要實際應用的話肯定要補充很多細節,比如單獨做水流的 Mask 應該會好很多
個人認為的效果優缺點:
優點:
- 和網上其他的雨水效果比起來,對效能影響應該蠻低的。加上天氣效果以及一些點綴應該也能實現不錯的效果
- 簡單啊(連我都能做出來..),直接複用材質自己的 Mask Map 也懶省事了
- 因為不同材質的 Mask Map 不同,所以這個效果也會帶有各自材質的特點,不會說效果千篇一律看著疲勞
缺點:
- 對於較為光滑的平面類物體感覺效果比較一般
- 因為複用了原材質的 Mask Map,應用效果時材質自身的粗糙度會丟失,不太好
- 可遠觀而不可褻玩(bushi),在遠處看起來還不錯,如果離得太近的話就能比較明顯的看出來違和的平移與噪聲
總之還是個很粗糙的效果,不過這種思路應該還是有點意思的,必能活用於下一次..
參考連結
https://forum.unity.com/threads/trying-to-replicate-the-hdrp-lit-shader-i-need-help-with-the-detail-input-part.660538/
Unity Forum-ShaderGraph 版 Lit 原貼
https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@7.1/manual/Mask-Map-and-Detail-Map.html
Mask Map 文件
https://github.com/OnyxAmber/UnityHDRP_ShaderGraphTest
把著色器圖與材質傳到 Github 上了,專案太大就不傳了,直接拖入 Unity 視窗即可。使用貼圖也是 HDRP 自帶的示例。
來源:indienova
原文:https://indienova.com/indie-game-development/unity-hdrp-shader-graph-surface-water/
相關文章
- Unity實現“籠中窺夢”的渲染效果Unity
- 如何設定Unity高清渲染管線製作高階視覺化內容Unity視覺化
- 圖形學之Unity渲染管線流程Unity
- Unity實現簡單的物件池Unity物件
- Flutter實現簡單爆炸效果Flutter
- GPU 渲染管線簡單總結(網上資料總結)GPU
- 如何用3D流體實現逼真水流效果?3D
- 【CSS】實現10種簡單的loading效果CSS
- androidTextView實現簡單的跑馬燈效果AndroidTextView
- 用Unity實現彈反效果Unity
- Unity嘗試實現簡單的行為樹-01Unity
- 前端動畫效果實現的簡單比較前端動畫
- Unity Shader 實現雨天的水面漣漪效果Unity
- html實現簡單ListViews效果的例項程式碼HTMLView
- 前端資料渲染及mustache模板引擎的簡單實現前端
- Unity——ShaderLab實現玻璃和鏡子效果Unity
- 使用JS實現一個簡單的選項卡效果JS
- [譯]Metal 渲染管線教程
- 簡單實現一個全面屏切換效果
- 在Unity中實現一個簡單的訊息管理器Unity
- unity 實現輪盤方式的按鈕滾動效果Unity
- Unity使用DOTween實現金幣飛入效果Unity
- 利用回撥函式實現簡單的輪播圖效果函式
- 簡單實現幾種常見的前端效果,附程式碼!前端
- 用 Rust 實現簡單的光線追蹤Rust
- Pytorch 實現簡單線性迴歸PyTorch
- Unity如何連線伺服器: 一個簡單的例子Unity伺服器
- VUE+Element UI實現簡單的表格行內編輯效果VueUI
- unity2022.3.9+Pico更換渲染管線後打包,人物材質不可顯示問題Unity
- 如何用Unity實現超多面渲染?其實只需這三招Unity
- 用python實現簡單的線上翻譯程式Python
- Unity的Flutter元件渲染UnityFlutter元件
- Unity5 PBR如何實現天氣系統的雪景效果Unity
- 剖析虛幻渲染體系(04)- 延遲渲染管線
- 使用Unity著色器實現精靈(Sprite)塗鴉效果Unity
- 短視訊軟體開發,實現簡單的輪播圖效果
- 配置式表單渲染器的實現
- AOP的簡單實現