顶点着色器波动效果:顶点随时间进行移动
_Time:float4类型,包含四个值
x:对应当前加载时间的1/20
y:对应当前加载时间
z:对应当前加载时间的2倍
w:对应当前加载时间的3倍
Shader "Hidden/text4"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
_A ("A",float) = 1 //幅度
}
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
float _A;
v2f vert (appdata v)
{
v2f o;
v.vertex.y += _A * sin(_Time.y + v.vertex.x); //波纹效果
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = v.uv;
return o;
}
sampler2D _MainTex;
fixed4 frag (v2f i) : SV_Target
{
fixed4 col = tex2D(_MainTex, i.uv);
// just invert the colors
return col;
}
ENDCG
}
}
}
片段着色器:UV随时间移动
fixed4 frag (v2f i) : SV_Target
{
i.uv.y += _Time.y; //uv随时间y方向滚动
fixed4 col = tex2D(_MainTex, i.uv);
// just invert the colors
return col;
}
UV随时间旋转
fixed4 frag (v2f i) : SV_Target
{
float angle = _Time.y; //旋转角度
float2 uv = (0,0); //默认值
i.uv -= float2(0.5,0.5); //将所有点向左向下移动0.5,使得旋转中心位于cube中心
// if(length(i.uv)>0.5){ //如果uv超过边界,则舍弃
// return fixed4(0,0,0,0);
// }
uv.x = i.uv.x * cos(angle) + i.uv.y * sin(angle);
uv.y = i.uv.y * cos(angle) - i.uv.x * sin(angle);
uv += float2(0.5,0.5); //还原原uv坐标
fixed4 col = tex2D(_MainTex, uv);
// just invert the colors
return col;
}