Shader "Terrain" { Properties { _TerrainColor ("Terrain Color", 2D) = "white" {} _TerrainNormal ("Terrain Normal", 2D) = "white" {} _WallColor ("Wall Color", 2D) = "white" {} _WallNormal ("Wall Normal", 2D) = "white" {} } SubShader { Tags { "RenderType" = "Opaque" } CGPROGRAM #pragma surface surf Standard struct Input { float4 color: COLOR; float3 worldPos; float2 uv_TerrainColor; }; sampler2D _TerrainColor; sampler2D _TerrainNormal; sampler2D _WallColor; sampler2D _WallNormal; void surf (Input IN, inout SurfaceOutputStandard o) { float t = saturate(IN.color.r * 4 - 3); o.Albedo = lerp(tex2D(_TerrainColor, IN.worldPos.xz).rgb, tex2D(_WallColor, IN.uv_TerrainColor).rgb, t); o.Normal = UnpackNormal(lerp(tex2D(_TerrainNormal, IN.worldPos.xz), tex2D(_WallNormal, IN.uv_TerrainColor), t)); } ENDCG } Fallback "Diffuse" }