Shader "Custom/Terrain_4sTextures" { Properties { _Splat0 ("Layer 1", 2D) = "white" {} _Splat1 ("Layer 2", 2D) = "white" {} _Splat2 ("Layer 3", 2D) = "white" {} //_Splat3 ("Layer 4", 2D) = "white" {} _Control ("Control (RGBA)", 2D) = "white" {} _MainTex ("Never Used", 2D) = "white" {} } SubShader { Tags { "SplatCount" = "4" "RenderType" = "Opaque" } CGPROGRAM #pragma surface surf T4M exclude_path:prepass approxview halfasview #pragma exclude_renderers xbox360 ps3 flash //#pragma multi_compile NOT_IN_EDITOR_MODE IN_EDITOR_MODE inline fixed4 LightingT4M (SurfaceOutput s, fixed3 lightDir, fixed atten) { fixed diff = max (0, dot (s.Normal, lightDir)); fixed4 c; c.rgb = s.Albedo * _LightColor0.rgb * (diff * atten * 2); c.a = 0.0; return c; } struct Input { float2 uv_Control : TEXCOORD0; float2 uv_Splat0 : TEXCOORD1; float2 uv_Splat1 : TEXCOORD2; float2 uv_Splat2 : TEXCOORD3; //float2 uv_Splat3 : TEXCOORD4; }; sampler2D _Control; sampler2D _Splat0,_Splat1,_Splat2,_Splat3; void surf (Input IN, inout SurfaceOutput o) { fixed4 splat_control = tex2D (_Control, IN.uv_Control).rgba; fixed3 lay1 = tex2D (_Splat0, IN.uv_Splat0).rgb; fixed3 lay2 = tex2D (_Splat1, IN.uv_Splat1).rgb; fixed3 lay3 = tex2D (_Splat2, IN.uv_Splat2).rgb; //fixed3 lay4 = tex2D(_Splat3, IN.uv_Splat2).rgb; o.Alpha = 0.0; //splat_control = normailize(splat_control); o.Albedo.rgb = lay1 * splat_control.r + lay2 * splat_control.g + lay3 * splat_control.b + lay2* splat_control.a; } ENDCG } // Fallback to VertexLit Fallback "VertexLit" }