两张纹理混合
混合前的次级纹理天空
混合前的主纹理地平线
Shader "Custom/s_mohu" {
Properties{
_MainTex("MainTex", 2D) = ""{}
_SecondTex("SecondTex", 2D) = ""{}
_F("F",range(1,10)) = 4
}
SubShader{
pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "unitycg.cginc"
#pragma target 3.0
float tiling_x;
float tiling_y;
float offset_x;
float offset_y;
sampler2D _MainTex;
sampler2D _SecondTex;
//unity总是会帮我们传递这样一个值
float4 _MainTex_ST;
float _F;
float _A;
float _R;
struct v2f {
float4 pos:POSITION;
float2 uv:TEXCOORD0;
};
v2f vert(appdata_base v) {
v2f o;
o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
return o;
}
fixed4 frag(v2f IN) :COLOR{
//采集主纹理
fixed4 mainColor = tex2D(_MainTex,IN.uv);
float offset_uv = 0.05*sin(IN.uv*_F+_Time.x*12);
uv.y += 0.3;
float2 uv = IN.uv + offset_uv;
//采集第二个纹理
fixed4 color_1 = tex2D(_SecondTex,uv);
mainColor.rgb *= color_1.b;
mainColor.rgb *= 2;
uv = IN.uv - offset_uv;
fixed4 color_2 = tex2D(_SecondTex,uv);
uv.y += 0.3;
mainColor.rgb *= color_2.b;
mainColor.rgb *= 2;
//mainColor += color_1;
return mainColor;
}
ENDCG
}
}
}
混合后的图片: