Unity | AmplifyShaderEditor插件基础(第八集:噪声波动shader)
目录
一、👋🏻前言
二、😈噪声波动的基本原理
三、😈噪波制造器
1.噪波节点
2.TextureCoordinates 纹理坐标
3.制作噪声
四、🍃飘动的旗子
五、噪音介绍
六、结语
一、👋🏻前言
大家好,我是菌菌巧乐兹~本节内容主要讲一下,如何用shader来做一个噪声波动~
效果预览:
准备阶段(略):
1.新建一个plane2.写shader放上去,模版还是用之前的lit
3.shader如图所示
4.图片资源(自己复制自己用,放进去有拉伸就自己扯一下plane的大小)
二、😈噪声波动的基本原理
在上一集当中我们讲过,波动的本质是根据x的值动态的改变y的值
但sinx,只能收一个值,并且只要这个值一样,则输出的y值一样
如果我们希望有示例那样的动态波动,我们就需要采纳两个值,一个x和一个y,A点的x和y和B点的x和y值不一样时,我们就能得到两个不一样的偏移y
三、😈噪波制造器
1.噪波节点
备注:如果你没有灰色的方块,点击右上角的小三角就行
噪波的节点就是给一个x和y,通常我们会接入uv值
2.TextureCoordinates 纹理坐标
textureCoordinates 纹理 = uv坐标,他俩是一个东西
如上图所示,可以连图片,连到tex上,如果连上了就直接用图片的uv坐标还有tiling和offset
如果tex没有连,就用默认的uv坐标,并且可以调tilling和offset,如下图所示
结论:我们提供一个默认的uv坐标就可以了,默认就是一个简单的(0,0)→(1,1)的uv坐标
3.制作噪声
用默认的uv坐标,给到噪声制造器,来制作噪声
红框部分,就是不同的uv值自作出来的噪声值,0或小于0是纯黑色,1或大于1是纯白色
这时你可以选择,是希望范围是-1到1,还是0-1,他们输出的噪声是不一样的
备注:
up喜欢用0-1之间,因为图像比较直观,0就是黑的地方,1就是白的地方,其他就是过渡
可以想象一下,旗子按照这个偏移,那么黑色部分就会是凹陷的地方,我们可以连接一下试试
凹陷的位置和上面的噪波差不多吧
如果用-1到1的图,会更明显
吐槽一下:全网应该没有讲的这么细的了吧,求点赞,求评论,求关注啊,一个字一个字打的~
四、🍃飘动的旗子
我们上次做sinx移动的时候,和这个很类似,用到了时间time节点
这次也需要用,在TextureCoordinates里有offset,是偏移uv的意思,之前的章节讲过,也就是只要这里输入连续的变动的vector2,uv就会滚动起来
time是一个值,不是二维的,所以我们让它乘以二维的数,就会变成二维。
例:2*(1,1)=(2,2)
所以我们新建一个vector2,起名叫speed,给一个你喜欢的数值,这个数值越大,vu滚动的越快
把它和time乘起来,如下图所示
最后再把他们都连起来
就可以得到飘动的旗子,如下图
五、噪音介绍
大家知道有sinx,还有cosx,还有tanx,输入相同的x值,会得到不同的结果
噪声也有不同的,如下图所示
simple噪声【低级】 | 最简单的噪声,可以理解为随便生成一下,可能疙疙瘩瘩的,不自然,也不平滑,但它性能需求低 |
Gradient噪声【中级】 | 比simple平滑自然的噪声 |
simplex2D噪声【高级】 | 比gradient平滑自然的噪声,平滑到可以用来建地形之类的,所以性能消耗大 |
simplex3D噪声 | 上面是2d的,这个是3d的,一般用来建粒子云什么的,性能消耗巨大 |
六、结语
非常感谢你的观看,如果你觉得我帮到你了,可以给我点一个赞吗~
我会为此创作更多的文章。