// Upgrade NOTE: commented out 'float4 unity_LightmapST', a built-in variable // Upgrade NOTE: commented out 'sampler2D unity_Lightmap', a built-in variable // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' // Upgrade NOTE: replaced tex2D unity_Lightmap with UNITY_SAMPLE_TEX2D Shader "M/Terrain Mesh" { Properties { _SplatTex ("Splat (RGBA)", 2D) = "white" {} _Layer1("Layer 1 (RGB)", 2D) = "white" {} _Layer2("Layer 2 (RGB)", 2D) = "white" {} _Layer3("Layer 3 (RGB)", 2D) = "white" {} _Layer4("Layer 4 (RGB)", 2D) = "white" {} } SubShader { Tags { "Queue"="Geometry" "RenderType"="Opaque"} LOD 200 Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" sampler2D _SplatTex; sampler2D _Layer1; sampler2D _Layer2; sampler2D _Layer3; sampler2D _Layer4; // sampler2D unity_Lightmap; //Far lightmap. // float4 unity_LightmapST; //Lightmap atlasing data. float4 unity_LightmapIndST; float4 _Layer1_ST; float4 _Layer2_ST; float4 _Layer3_ST; float4 _Layer4_ST; struct appdata { float4 vertex : POSITION; float4 normal : NORMAL; float4 texcoord : TEXCOORD0; float4 texcoord1 : TEXCOORD1; }; struct v2f { float4 pos : SV_POSITION; float2 uv : TEXCOORD0; float2 lightmapUV : TEXCOORD1; float2 uvLayer1 : TEXCOORD2; float2 uvLayer2 : TEXCOORD3; float2 uvLayer3 : TEXCOORD4; float2 uvLayer4 : TEXCOORD5; }; v2f vert (appdata v) { v2f o; o.pos = UnityObjectToClipPos (v.vertex); o.uv = v.texcoord.xy; o.lightmapUV = v.texcoord1.xy * unity_LightmapST.xy + unity_LightmapST.zw; o.uvLayer1 = TRANSFORM_TEX(v.texcoord, _Layer1); o.uvLayer2 = TRANSFORM_TEX(v.texcoord, _Layer2); o.uvLayer3 = TRANSFORM_TEX(v.texcoord, _Layer3); o.uvLayer4 = TRANSFORM_TEX(v.texcoord, _Layer4); return o; } float4 getLayerColor(sampler2D layer, float2 uv, float weight) { return tex2D(layer, uv) * weight; } fixed4 frag (v2f i) : COLOR { float4 weights = tex2D(_SplatTex, i.uv); float4 layersColor = getLayerColor(_Layer1, i.uvLayer1.xy, weights.x); layersColor += getLayerColor(_Layer2, i.uvLayer2.xy, weights.y); layersColor += getLayerColor(_Layer3, i.uvLayer3.xy, weights.z); layersColor += getLayerColor(_Layer4, i.uvLayer4.xy, weights.w); fixed4 light = UNITY_SAMPLE_TEX2D (unity_Lightmap, i.lightmapUV); light.xyz = DecodeLightmap(light); light.w = 1; return (layersColor * light); } ENDCG } } }