Shader "Infinity Code/Online Maps/Tileset With Overlay 7 Layers" { Properties { _Color("Main Color", Color) = (1,1,1,1) _MainTex("Base (RGB) Trans (A)", 2D) = "white" {} _OverlayTex1("Overlay 1 Texture", 2D) = "black" {} _OverlayAlpha1("Overlay 1 Alpha", Range(0, 1)) = 1 _OverlayTL1("Overlay 1 Top Left", Vector) = (0, 0, 0, 0) _OverlayBR1("Overlay 1 Bottom Right", Vector) = (1, 1, 0, 0) _OverlayTex2("Overlay 2 Texture", 2D) = "black" {} _OverlayAlpha2("Overlay 2 Alpha", Range(0, 1)) = 1 _OverlayTL2("Overlay 2 Top Left", Vector) = (0, 0, 0, 0) _OverlayBR2("Overlay 2 Bottom Right", Vector) = (1, 1, 0, 0) _OverlayTex3("Overlay 3 Texture", 2D) = "black" {} _OverlayAlpha3("Overlay 3 Alpha", Range(0, 1)) = 1 _OverlayTL3("Overlay 3 Top Left", Vector) = (0, 0, 0, 0) _OverlayBR3("Overlay 3 Bottom Right", Vector) = (1, 1, 0, 0) _OverlayTex4("Overlay 4 Texture", 2D) = "black" {} _OverlayAlpha4("Overlay 4 Alpha", Range(0, 1)) = 1 _OverlayTL4("Overlay 4 Top Left", Vector) = (0, 0, 0, 0) _OverlayBR4("Overlay 4 Bottom Right", Vector) = (1, 1, 0, 0) _OverlayTex5("Overlay 5 Texture", 2D) = "black" {} _OverlayAlpha5("Overlay 5 Alpha", Range(0, 1)) = 1 _OverlayTL5("Overlay 5 Top Left", Vector) = (0, 0, 0, 0) _OverlayBR5("Overlay 5 Bottom Right", Vector) = (1, 1, 0, 0) _OverlayTex6("Overlay 6 Texture", 2D) = "black" {} _OverlayAlpha6("Overlay 6 Alpha", Range(0, 1)) = 1 _OverlayTL6("Overlay 6 Top Left", Vector) = (0, 0, 0, 0) _OverlayBR6("Overlay 6 Bottom Right", Vector) = (1, 1, 0, 0) _OverlayTex7("Overlay 7 Texture", 2D) = "black" {} _OverlayAlpha7("Overlay 7 Alpha", Range(0, 1)) = 1 _OverlayTL7("Overlay 7 Top Left", Vector) = (0, 0, 0, 0) _OverlayBR7("Overlay 7 Bottom Right", Vector) = (1, 1, 0, 0) } SubShader { Tags {"Queue"="AlphaTest-300" "IgnoreProjector"="True" "RenderType"="TransparentCutout"} LOD 200 CGPROGRAM #pragma surface surf Lambert alphatest:_Cutoff sampler2D _MainTex; fixed4 _Color; sampler2D _OverlayTex1; half _OverlayAlpha1; float4 _OverlayTL1; float4 _OverlayBR1; sampler2D _OverlayTex2; half _OverlayAlpha2; float4 _OverlayTL2; float4 _OverlayBR2; sampler2D _OverlayTex3; half _OverlayAlpha3; float4 _OverlayTL3; float4 _OverlayBR3; sampler2D _OverlayTex4; half _OverlayAlpha4; float4 _OverlayTL4; float4 _OverlayBR4; sampler2D _OverlayTex5; half _OverlayAlpha5; float4 _OverlayTL5; float4 _OverlayBR5; sampler2D _OverlayTex6; half _OverlayAlpha6; float4 _OverlayTL6; float4 _OverlayBR6; sampler2D _OverlayTex7; half _OverlayAlpha7; float4 _OverlayTL7; float4 _OverlayBR7; struct Input { float2 uv_MainTex; float3 worldPos; }; void surf(Input IN, inout SurfaceOutput o) { fixed4 c = tex2D(_MainTex, IN.uv_MainTex); fixed3 ct = c.rgb; fixed4 t; float3 wp = IN.worldPos; float uvx = (wp.x - _OverlayTL1.x) / (_OverlayBR1.x - _OverlayTL1.x); float uvy = (wp.z - _OverlayBR1.z) / (_OverlayTL1.z - _OverlayBR1.z); if (uvx >= 0 && uvx <= 1 && uvy >= 0 && uvy <= 1) { t = tex2D(_OverlayTex1, float2(uvx, uvy)); ct = lerp(ct, t.rgb, t.a * _OverlayAlpha1); } uvx = (wp.x - _OverlayTL2.x) / (_OverlayBR2.x - _OverlayTL2.x); uvy = (wp.z - _OverlayBR2.z) / (_OverlayTL2.z - _OverlayBR2.z); if (uvx >= 0 && uvx <= 1 && uvy >= 0 && uvy <= 1) { t = tex2D(_OverlayTex2, float2(uvx, uvy)); ct = lerp(ct, t.rgb, t.a * _OverlayAlpha2); } uvx = (wp.x - _OverlayTL3.x) / (_OverlayBR3.x - _OverlayTL3.x); uvy = (wp.z - _OverlayBR3.z) / (_OverlayTL3.z - _OverlayBR3.z); if (uvx >= 0 && uvx <= 1 && uvy >= 0 && uvy <= 1) { t = tex2D(_OverlayTex3, float2(uvx, uvy)); ct = lerp(ct, t.rgb, t.a * _OverlayAlpha3); } uvx = (wp.x - _OverlayTL3.x) / (_OverlayBR3.x - _OverlayTL3.x); uvy = (wp.z - _OverlayBR3.z) / (_OverlayTL3.z - _OverlayBR3.z); if (uvx >= 0 && uvx <= 1 && uvy >= 0 && uvy <= 1) { t = tex2D(_OverlayTex3, float2(uvx, uvy)); ct = lerp(ct, t.rgb, t.a * _OverlayAlpha3); } uvx = (wp.x - _OverlayTL4.x) / (_OverlayBR4.x - _OverlayTL4.x); uvy = (wp.z - _OverlayBR4.z) / (_OverlayTL4.z - _OverlayBR4.z); if (uvx >= 0 && uvx <= 1 && uvy >= 0 && uvy <= 1) { t = tex2D(_OverlayTex4, float2(uvx, uvy)); ct = lerp(ct, t.rgb, t.a * _OverlayAlpha4); } uvx = (wp.x - _OverlayTL5.x) / (_OverlayBR5.x - _OverlayTL5.x); uvy = (wp.z - _OverlayBR5.z) / (_OverlayTL5.z - _OverlayBR5.z); if (uvx >= 0 && uvx <= 1 && uvy >= 0 && uvy <= 1) { t = tex2D(_OverlayTex5, float2(uvx, uvy)); ct = lerp(ct, t.rgb, t.a * _OverlayAlpha5); } uvx = (wp.x - _OverlayTL6.x) / (_OverlayBR6.x - _OverlayTL6.x); uvy = (wp.z - _OverlayBR6.z) / (_OverlayTL6.z - _OverlayBR6.z); if (uvx >= 0 && uvx <= 1 && uvy >= 0 && uvy <= 1) { t = tex2D(_OverlayTex6, float2(uvx, uvy)); ct = lerp(ct, t.rgb, t.a * _OverlayAlpha6); } uvx = (wp.x - _OverlayTL7.x) / (_OverlayBR7.x - _OverlayTL7.x); uvy = (wp.z - _OverlayBR7.z) / (_OverlayTL7.z - _OverlayBR7.z); if (uvx >= 0 && uvx <= 1 && uvy >= 0 && uvy <= 1) { t = tex2D(_OverlayTex7, float2(uvx, uvy)); ct = lerp(ct, t.rgb, t.a * _OverlayAlpha7); } o.Albedo = ct; o.Alpha = c.a * _Color.a; } ENDCG } Fallback "Transparent/Cutout/Diffuse" }