Unity | AmplifyShaderEditor插件基础(第六集:平面波动shader)
目录
一、👋🏻前言
二、😈sinx波动的基本原理
三、😈波动起来
1.sinx节点介绍
2.vertexPosition
3.集成Vector3
a.节点Append
b.连起来
4.波动起来
a.波动的原理
b.时间节点
c.sinx的处理
四、🌊波动优化
五、🚀相关数据优化
1.希望波动密集一点
2.更改幅度
一、👋🏻前言
大家好,我是菌菌巧乐兹~本节内容主要讲一下,如何用shader来做一个sinx波动~
效果预览:
二、😈sinx波动的基本原理
原本这是一个平面,变成一个曲面,还是改变顶点坐标
我们改变的是y的顶点坐标
要变成sinx的波动,就是根据给的x的值改y的坐标
我们学过y=sinx
三、😈波动起来
1.sinx节点介绍
2.vertexPosition
之前学过,我们的顶点坐标是有x的,我们把顶点的x给进去,这样我们就输出为y了
3.集成Vector3
我们最后给到的偏移坐标,实际上是(0,偏移y,0),那么我们需要合起来一下
a.节点Append
节点append是专门把单个的数据合起来的节点
在左边的outputType,可以选择你想拼装哪个数据
根据你选择的不同的选项,右边的节点也会有不同的接口
例:Vector2,右边就只有x和y,以此类推
InternalData下面可以填写的数据,你可以选择自己填,也可以选择在节点连
b.连起来
偏移是xyz,所以我们选Vector3,x和z不偏移,所以我们填0,y就是刚才sin连的节点,如图所示
这时候外面的图形,如下图所示(是不会动的)
4.波动起来
a.波动的原理
波动就是让输入进去的x的值逐渐增大,因为sinx中的x,只需要不断变大,他的y一直都在-1和1之间变动。
b.时间节点
这个节点就是当你点击运行时,就会从0开始计时,和秒表一样,一直往上加,速度是和平时的秒速是一样的。
如果你觉得时间走的太快了,你可以改scale,就是改时间的倍数
总结:这是一个不断增加的值
c.sinx的处理
只要x不断增加,就可以获得不断波动的y值,我们先让顶点x的值和time相加,如下图所示,就有了一组不断升高的x
把这个x放进sinx节点当中
d.都连接起来
你就会获得一个不断波动的plane
四、🌊波动优化
首先你会发现一个问题,我们的波纹有棱有角的,不是一个圆滑的波动plane
因为我们是控制的顶点移动,顶点和顶点中间我们是不管的,打开网格就可以看见
备注:选择这个就可以看见网格(如下图所示)
然后你就可以看见,只控制顶点移动,顶点和顶点之间离得挺远的,所以只能是有棱有角的波动。
总结:unity自带的plane是不够用的,没办法做到丝滑的波动,所以我们要搞一个网格比较密集的模型
模型资源绑定在文章,QQ群里均可下载,或者你自己搞一个网格密度高的模型
换上密度高的模型后,把写的shader放上去,就会变成丝滑的模型波动
其实这里还是有点棱角的,如果你希望完全丝滑,就继续加网格密度
五、🚀相关数据优化
1.希望波动密集一点
可以看见我们sin2x比sinx的波动要密集,所以我们只需要给输入的x加上倍数,就可以调整密集程度
如下图所示,dencity是一个float【可外部更改】,把它和上面的框相乘
从外部调整dencity,看波动效果
2.更改幅度
如果你觉得幅度太小了,那就是偏移y的数值太小了,在最后y值在的地方做个相乘
再给个特写
最后的波动结果