123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- // 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
- }
- }
- }
|