1、上下波动,但是是所有的点都跟着一起波动
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
Shader "Custom/wave" {
SubShader{
pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "unitycg.cginc"
struct v2f {
float4 pos:POSITION;
fixed4 color : COLOR;
};
v2f vert(appdata_base v) {
v.vertex.y += sin(_Time.y+_Time.y);
v2f o;
o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
o.color = fixed4(0, 1, 1, 1);
return o;
}
fixed4 frag(v2f IN) :COLOR{
return IN.color;
}
ENDCG
}
}
}
2、修改时间因子,引起振幅的变化
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
Shader "Custom/wave" {
SubShader{
pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "unitycg.cginc"
struct v2f {
float4 pos:POSITION;
fixed4 color : COLOR;
};
a
v2f vert(appdata_base v) {
v.vertex.y += 0.3*sin(v.vertex.x+_Time.y);
v2f o;
o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
o.color = fixed4(0, 1, 1, 1);
return o;
}
fixed4 frag(v2f IN) :COLOR{
return IN.color;
}
ENDCG
}
}
}
3、颜色产生灰度值
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
Shader "Custom/wave" {
SubShader{
pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "unitycg.cginc"
struct v2f {
float4 pos:POSITION;
fixed4 color : COLOR;
};
v2f vert(appdata_base v) {
v.vertex.y += 0.3*sin(v.vertex.x + _Time.y);
a
v2f o;
o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
o.color = fixed4(v.vertex.y, v.vertex.y, v.vertex.y, 1);
return o;
}
fixed4 frag(v2f IN) :COLOR{
return IN.color;
}
ENDCG
}
}
}
4、改为在z方向上的波形
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
Shader "Custom/wave" {
SubShader{
pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "unitycg.cginc"
struct v2f {
float4 pos:POSITION;
fixed4 color : COLOR;
};
v2f vert(appdata_base v) {
v.vertex.y += 0.2*sin(v.vertex.z*2 + _Time.y);
v2f o;
o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
o.color = fixed4(v.vertex.y, v.vertex.y, v.vertex.y, 1);
return o;
}
fixed4 frag(v2f IN) :COLOR{
return IN.color;
}
ENDCG
}
}
}
5、修改Time的z值,让波移动地更快一点
6、圆形波
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
Shader "Custom/wave" {
SubShader{
pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "unitycg.cginc"
struct v2f {
float4 pos:POSITION;
fixed4 color : COLOR;
};
v2f vert(appdata_base v) {
v.vertex.y += 0.2*sin(length(v.vertex.xz)*2 + _Time.y);
v2f o;
o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
o.color = fixed4(v.vertex.y, v.vertex.y, v.vertex.y, 1);
return o;
}
fixed4 frag(v2f IN) :COLOR{
return IN.color;
}
ENDCG
}
}
}
但是刚才的波是从外向内的,要形成从内向外的波,需要对length取反
取消相乘,波会从圆心开始扩散
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
Shader "Custom/wave" {
SubShader{
pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "unitycg.cginc"
struct v2f {
float4 pos:POSITION;
fixed4 color : COLOR;
};
v2f vert(appdata_base v) {
v.vertex.y += 0.2*sin(-length(v.vertex.xz) + _Time.y);
v2f o;
o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
o.color = fixed4(v.vertex.y, v.vertex.y, v.vertex.y, 1);
return o;
}
fixed4 frag(v2f IN) :COLOR{
return IN.color;
}
ENDCG
}
}
}
7、水波
①横向波
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
Shader "Custom/wave" {
SubShader{
pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "unitycg.cginc"
struct v2f {
float4 pos:POSITION;
fixed4 color : COLOR;
};
v2f vert(appdata_base v) {
//v.vertex.y += 0.2*sin(-length(v.vertex.xz) + _Time.y);
v.vertex.y += 0.2*sin(v.vertex.x*2 + _Time.y);
v2f o;
o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
o.color = fixed4(v.vertex.y, v.vertex.y, v.vertex.y, 1);
return o;
}
fixed4 frag(v2f IN) :COLOR{
return IN.color;
}
ENDCG
}
}
}
②将x和z方向的和作为角速率,得到斜方向上同频率的波
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
Shader "Custom/wave" {
SubShader{
pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "unitycg.cginc"
struct v2f {
float4 pos:POSITION;
fixed4 color : COLOR;
};
v2f vert(appdata_base v) {
//v.vertex.y += 0.2*sin(-length(v.vertex.xz) + _Time.y);
v.vertex.y += 0.2*sin((v.vertex.x+v.vertex.z)*2 + _Time.y);
v2f o;
o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
o.color = fixed4(v.vertex.y, v.vertex.y, v.vertex.y, 1);
return o;
}
fixed4 frag(v2f IN) :COLOR{
return IN.color;
}
ENDCG
}
}
}
③取消乘2,波与波之间的棱角变得平滑
④多个正弦实现此起彼伏的波形效果
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
Shader "Custom/wave" {
SubShader{
pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "unitycg.cginc"
struct v2f {
float4 pos:POSITION;
fixed4 color : COLOR;
};
v2f vert(appdata_base v) {
//v.vertex.y += 0.2*sin(-length(v.vertex.xz) + _Time.y);
v.vertex.y += 0.2*sin((v.vertex.x+v.vertex.z) + _Time.y);
v.vertex.y += 0.3*sin((v.vertex.x + v.vertex.z) + _Time.w);
v2f o;
o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
o.color = fixed4(v.vertex.y, v.vertex.y, v.vertex.y, 1);
return o;
}
fixed4 frag(v2f IN) :COLOR{
return IN.color;
}
ENDCG
}
}
}