通过移动多张背景图片,利用前快后慢的视差制做移动的效果。
思路:
创建一个Shader放两张图,通过时间修改他们的UV以得到一个移动的效果。
代码如下:
Shader "Custom/TestShader26" {
Properties {
_MainTex ("Main Tex", 2D) = "white" {}
_MainTex2 ("Main Tex2", 2D) = "white" {}
}
SubShader {
Tags{"Queue"="Transparent" "IgnoreProjector"="true" "RenderType"="Transparent"}
Pass {
Tags { "LightMode"="ForwardBase" }
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "Lighting.cginc"
sampler2D _MainTex;
sampler2D _MainTex2;
float4 _MainTex_ST;
float4 _MainTex2_ST;
struct a2v {
float4 vertex : POSITION;
float4 texcoord : TEXCOORD0;
};
struct v2f {
float4 pos : SV_POSITION;
float4 uv : TEXCOORD0;
};
v2f vert(a2v v) {
v2f o;
o.pos = UnityObjectToClipPos(v.vertex);
o.uv.xy = TRANSFORM_TEX(v.texcoord,_MainTex)+ frac(float2( _Time.x,0));
o.uv.zw = TRANSFORM_TEX(v.texcoord,_MainTex2)+ float2( _Time.y,0);
return o;
}
fixed4 frag(v2f i) : SV_Target {
float4 color = tex2D(_MainTex,i.uv.xy);
float4 color2= tex2D(_MainTex2,i.uv.zw);
fixed4 c= lerp(color,color2,color2.a);
return c;
}
ENDCG
}
}
FallBack "Specular"
}