Shader "Sbin/Niuqu" {
SubShader {
pass{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
//引用公用方法 Unity\Editor\Data\CGIncludes\sbin
#include "unitycg.cginc"
struct v2f
{
float4 pos: POSITION;
float4 color:COLOR;
};
v2f vert(appdata_base v)
{
//float angle=length(v.Vertex);//取的是顶点位置和坐标中心的向量的长度
Y轴扭曲
//float4x4 m=
//{
// float4{ cos(angle),0,sin(angle),0}*_SinTime.w,
// float4{ 0,1,0,0},
// float4{ sin(angle),0,cos(angle),0},
// float4{ 0,0,0,1}
//};
float angle=v.Vertex.z+_Time.y;
//沿X轴缩放
float4x4 m=
{
float4(sin(angle)/8+0.5,0,0,0),
float4(0,1,0,0),
float4(0,0,1,0),
float4(0,0,0,1)
}
m=mul(UNITY_MATRIX_MVP,m);//前面的作用于后面
v2f o;
o.pos=mul(m,v.vertex);//被变化的矩阵放右边
o.color=fixed4(0,1,1,1);
return o;
}
fixed4 frag(v2f IN):COLOR
{
return IN.color;
}
ENDCG
}
}
}
Shader "Sbin/Wava"
{
SubShader
{
pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
//引用公用方法 Unity\Editor\Data\CGIncludes\sbin
#include "unitycg.cginc"
struct v2f
{
float4 pos: POSITION;
float4 color:COLOR;
};
v2f vert(appdata_base v)
{
//A*sin(W*x+t)
//沿X轴的波纹
//v.Vertex.y+=0.2*sin(v.Vertex.x+_Time.y);
//沿中心点向外阔的波纹
//v.Vertex.y+=0.2*sin((-length(v.Vertex.xz)*2+_Time.y);
//波浪
v.Vertex.y+=0.2*sin((v.Vertex.x+v.vertex.z)+_Time.y);
v.Vertex.y+=0.2*sin((v.Vertex.x-v.vertex.z)+_Time.w);
v2f o;
o.pos=mul(m,v.vertex);//被变化的矩阵放右边
o.color=fixed4(0,1,1,1);
return o;
}
fixed4 frag(v2f IN):COLOR
{
return IN.color;
}
ENDCG
}
}
}