【实现100个unity特效之19】使用ShaderGraph实现Unity 2D水

embedded/2024/9/24 6:09:50/

最终效果

在这里插入图片描述

文章目录

  • 最终效果
  • 前言
  • 开始
  • 新增无光照影响的shaderGraph
  • 半透明效果,并且有一些颜色的变化
  • 其他办法
  • 更加复杂的2d水
  • 曲线河流
  • 不新建相机的方法实现2d水和物理交互效果(Camera Sorting Layer Texture的使用)
  • 参考
  • 完结

前言

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

开始

我们新建一个渲染器纹理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/

完结

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!

好了,我是向宇,https://xiangyu.blog.csdn.net

一位在小公司默默奋斗的开发者,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!如果你遇到任何问题,也欢迎你评论私信找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~
在这里插入图片描述


http://www.ppmy.cn/embedded/93655.html

相关文章

可视化基础的设计四大原则

一个好的数据可视化设计可以帮助观众迅速理解数据背后的意义。然而,如何确保我们的可视化设计既美观又简单易懂呢?本文将介绍四大设计原则——亲密原则、对比原则、对齐原则和重复原则。 1、 亲密原则(Proximity) 定义与应用&am…

Litestar GET function blocks OpenAI

题意:Litestar GET 函数阻塞 OpenAI 问题背景: When I transfer function to litestar, it suddenly stops OpenAI from returning a completion. I can print to console every declared variable except answer: 当我将函数传递给 litestar 时&#…

LabView多界面子VI同时运行

有朋友问我LabView如何调用多个界面VI同时工作,其实说穿了很简单,我们我们平时调用驱动、算法、控件等等时都相当于在同时调用多个子VI工作,只不过多了个界面而已。 只有几点需要注意: 1、每个子VI处于不同的线程; 2、…

【Docker】Docker Container(容器)

一、什么是容器 通俗地讲,容器是镜像的运行实体。镜像是静态的只读文件,而容器带有运行时需要的可写文件层,并且容器中的进程属于运行状态。即容器运行着真正的应用进程。容器有初建、运行、停止、暂停和删除五种状态。 虽然容器的本质是主…

[windows10]win10永久禁用系统自动更新操作方法

WinR打开运行 输入regedit打开注册表 点击确定打开注册表 按照如下路径找到UX 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings 在空白处点击鼠标右键,新建选择DWORD,然后重命名为FlightSettingsMaxPauseDays 双击FlightSet…

c++的类和对象(中):默认成员函数与运算符重载(重难点!!)

前言 Hello, 小伙伴们,我们今天继续c的学习,我们上期有介绍到c的部分特性,以及一些区别于c语言的地方,今天我们将继续深入了解c的类和对象,探索c的奥秘。 好,废话不多说,开始我们今天的学习。…

【深度学习】创建和训练Transformer神经网络模型,将葡萄牙语翻译成英语

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言1. 安装2. 数据处理2.1 下载数据集2.2 设置标记器2.3 使用tf.data设置数据管道 3. 测试数据集4. 定义组件4.1 嵌入和位置编码层4.2 添加并规范化4.3 基础注意力…

cocospods 安装与迁移到离线打包机上

背景: 一个没有网络的window电脑上,window电脑上有mac的虚拟机,需要进行离线打包。 自己的mac上安装cocoapods 然后直接拷贝到没有网的mac虚拟机上 自己mac上正常安装 自己的mac电脑上安装cocoapod 下面是官网 https://cocoapods.org/ 官网…