问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Unity ShaderGraph实现2D水效果详解

创作时间:
作者:
@小白创作中心

Unity ShaderGraph实现2D水效果详解

引用
CSDN
1.
https://m.blog.csdn.net/qq_36303853/article/details/141016674

本文将详细介绍在Unity中使用ShaderGraph实现2D水效果的多种方法,包括使用渲染纹理、摄像机设置、ShaderGraph编程等技术细节。通过本文的学习,你将能够掌握在Unity中实现逼真的2D水效果的技巧。

最终效果

前言

先粗略记录一下,后面再补充

开始

我们新建一个渲染器纹理render texture
设置尺寸,这边我会填入我屏幕的分辨率,你也可以用其他值,只不过我推荐填入2的幂,否则的话一旦Unity循环这个材质可能会有些间题
修改抗锯齿和贴图拼接方式,防止拉伸变形
然后我要创建另外一个摄像机,将他的画面投到这上面来
我们要保证它跟我的main cameral里面的设置是相同的,比如正交,尺寸,
记得修改相机z为-10
它会自动伴随有一个audio listener,我们同一个场景当中只能有一个audio listener,将它移除
绑定输出到前面的render texture

如果你想后期再次更改这个TEXTRA的尺寸,你会注意可能这里相机的尺寸并不会跟着更改,这是unity一个bug,我们要将相机的这个texture移除,再重新配置,或者修改相机尺寸,即可刷新相机的尺寸
拉高水面渲染相机,因为我只希望看到水面下面从这儿开始的位置
创建白色图片

我们可以按键盘的F定位它一下,按键盘上的T键修改尺寸
拖拽的时候按住alt键或者Mac系统的option键,可以以中心点来放大调整一下它的尺寸
注意排序层自己调整

新增无光照影响的shaderGraph

那么首先我们要获得我们场景中倒影的这个图片
显示
翻转画面
可以根据翻转的情况调整摄像机y轴的位置
其实这时候就已经有镜面效果了,效果
添加噪点,和水波纹
效果

半透明效果,并且有一些颜色的变化

添加颜色节点,修改透明度的实现半透明效果
效果

其他办法

如果你直接有类似于water的这样的图片的画,可以直接和主图
然后将两个不同的节点直接multiply加在一起
然后我们也可以用这个气泡的效果让它动起来
可以看到我们只要改变这个的值就行
或者如果我只希望不想它显示里面的黑色部分,只想要显示这个白色波纹的部分的话,我们也可以添加反转

更加复杂的2d水

渲染环境和控制颠倒镜像
添加水波,和让水动起来
配置
效果
控制水面和水波的颜色
效果
添加海岸线的效果,并控制颜色变化
效果
控制河流向右流动,重点是把x值改为-0.1即可
效果

曲线河流

不新建相机的方法实现2d水和物理交互效果(Camera Sorting Layer Texture的使用)

主要就是使用Camera Sorting Layer Texture,它是专门抓取2D屏幕结果的texture
注意这10.0之后的版本
如何使用?我们这儿选这个default,也就是default以及default之前的所有层级都会在渲染的时候被抓取

效果

源码参考
https://gitee.com/luoxiaoc/tutorial-source-code/raw/master/Real%20Fluid.unitypackage

参考

https://www.bilibili.com/video/BV1Ei4y1t7H4/
https://www.youtube.com/watch?v=-jA72OSTfwk
https://www.bilibili.com/video/BV11D4y1q75r/

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号