443 lines
		
	
	
		
			25 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			443 lines
		
	
	
		
			25 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|  | // Made with Amplify Shader Editor v1.9.2 | ||
|  | // Available at the Unity Asset Store - http://u3d.as/y3X  | ||
|  | Shader "Polyart/Dreamscape/Builtin/Grass" | ||
|  | { | ||
|  | 	Properties | ||
|  | 	{ | ||
|  | 		[Header(Base Maps)][Header(.)][SingleLineTexture]_MainTex("Foliage Texture", 2D) = "white" {} | ||
|  | 		[SingleLineTexture]_VariationMask("Variation Mask", 2D) = "white" {} | ||
|  | 		[Header(Base Parameters)]_VariationMapScale("Variation Map Scale", Float) = 15 | ||
|  | 		[HDR]_ColorTop("Color Top", Color) = (0,0,0,0) | ||
|  | 		_ColorTopVariation("Color Top Variation", Color) = (0,0,0,0) | ||
|  | 		_ColorBottom("Color Bottom", Color) = (0,0,0,0) | ||
|  | 		_ColorBottomLevel("Color Bottom Level", Float) = 0 | ||
|  | 		_ColorBottomMaskFade("Color Bottom Mask Fade", Range( 0 , 1)) = 0 | ||
|  | 		_SpecularIntensity("Specular Intensity", Range( -1 , 1)) = 0.1 | ||
|  | 		_FoliageRoughness("Foliage Roughness", Range( 0 , 1)) = 0.1 | ||
|  | 		_MaskClip("Mask Clip", Range( 0 , 1)) = 0.5 | ||
|  | 		[Header(Wind)][Toggle(_USEGLOBALWINDSETTINGS_ON)] _UseGlobalWindSettings("Use Global Wind Settings?", Float) = 0 | ||
|  | 		[HideInInspector]_WindNoiseTexture("Wind Noise Texture", 2D) = "white" {} | ||
|  | 		_LockPositionGradient("Lock Position Gradient", Range( 0 , 10)) = 2 | ||
|  | 		_WindNoise01Size("Wind Noise 01 Size", Range( 0 , 100)) = 0 | ||
|  | 		_WindNoise01Multiplier("Wind Noise 01 Multiplier", Range( -3 , 3)) = 1 | ||
|  | 		_WindNoise02Size("Wind Noise 02 Size", Range( 0 , 100)) = 0 | ||
|  | 		_WindNoise02Multiplier("Wind Noise 02 Multiplier", Range( -3 , 3)) = 1 | ||
|  | 		[Toggle(_USEVERTEXCOLOR_ON)] _UseVertexColor("Use Vertex Color?", Float) = 0 | ||
|  | 		_VertexColorOffset("Vertex Color Offset", Float) = 0 | ||
|  | 		_VertexColorGradient("Vertex Color Gradient", Float) = 1 | ||
|  | 		[Header(Dithering)][Toggle(_USEDITHERING_ON)] _UseDithering("Use Dithering?", Float) = 0 | ||
|  | 		[Toggle(_USEGLOBALSETTING_ON)] _UseGlobalSetting("Use Global Setting?", Float) = 0 | ||
|  | 		_DitherBottomLevel("Dither Bottom Level", Range( -10 , 10)) = 0 | ||
|  | 		_DitherFade("Dither Fade", Range( 0 , 10)) = 0 | ||
|  | 		[HideInInspector] _texcoord( "", 2D ) = "white" {} | ||
|  | 		[HideInInspector] __dirty( "", Int ) = 1 | ||
|  | 	} | ||
|  | 
 | ||
|  | 	SubShader | ||
|  | 	{ | ||
|  | 		Tags{ "RenderType" = "Opaque"  "Queue" = "AlphaTest+0" "IgnoreProjector" = "True" } | ||
|  | 		Cull Off | ||
|  | 		AlphaToMask On | ||
|  | 		CGINCLUDE | ||
|  | 		#include "UnityShaderVariables.cginc" | ||
|  | 		#include "UnityPBSLighting.cginc" | ||
|  | 		#include "Lighting.cginc" | ||
|  | 		#pragma target 4.0 | ||
|  | 		#pragma multi_compile_instancing | ||
|  | 		#pragma shader_feature_local _USEGLOBALWINDSETTINGS_ON | ||
|  | 		#pragma shader_feature_local _USEVERTEXCOLOR_ON | ||
|  | 		#pragma shader_feature _USEDITHERING_ON | ||
|  | 		#pragma shader_feature_local _USEGLOBALSETTING_ON | ||
|  | 		struct Input | ||
|  | 		{ | ||
|  | 			float3 worldPos; | ||
|  | 			float2 uv_texcoord; | ||
|  | 			float4 screenPosition; | ||
|  | 		}; | ||
|  | 
 | ||
|  | 		uniform sampler2D _WindNoiseTexture; | ||
|  | 		uniform float _WindNoise01Size; | ||
|  | 		uniform float WindNoise01; | ||
|  | 		uniform float _WindNoise01Multiplier; | ||
|  | 		uniform float WindNoise01Multiplier; | ||
|  | 		uniform float _WindNoise02Size; | ||
|  | 		uniform float WindNoise02; | ||
|  | 		uniform float _WindNoise02Multiplier; | ||
|  | 		uniform float WindNoise02Multiplier; | ||
|  | 		uniform float _LockPositionGradient; | ||
|  | 		uniform float _VertexColorOffset; | ||
|  | 		uniform float _VertexColorGradient; | ||
|  | 		uniform float4 _ColorTop; | ||
|  | 		uniform float4 _ColorTopVariation; | ||
|  | 		uniform sampler2D _VariationMask; | ||
|  | 		uniform float _VariationMapScale; | ||
|  | 		uniform float4 _ColorBottom; | ||
|  | 		uniform float _ColorBottomLevel; | ||
|  | 		uniform float _ColorBottomMaskFade; | ||
|  | 		uniform sampler2D _MainTex; | ||
|  | 		uniform float4 _MainTex_ST; | ||
|  | 		uniform float _SpecularIntensity; | ||
|  | 		uniform float _FoliageRoughness; | ||
|  | 		uniform float _DitherBottomLevel; | ||
|  | 		uniform float DitherBottomLevel; | ||
|  | 		uniform float _DitherFade; | ||
|  | 		uniform float DitherFade; | ||
|  | 		uniform float _MaskClip; | ||
|  | 
 | ||
|  | 
 | ||
|  | 		struct Gradient | ||
|  | 		{ | ||
|  | 			int type; | ||
|  | 			int colorsLength; | ||
|  | 			int alphasLength; | ||
|  | 			float4 colors[8]; | ||
|  | 			float2 alphas[8]; | ||
|  | 		}; | ||
|  | 
 | ||
|  | 
 | ||
|  | 		Gradient NewGradient(int type, int colorsLength, int alphasLength,  | ||
|  | 		float4 colors0, float4 colors1, float4 colors2, float4 colors3, float4 colors4, float4 colors5, float4 colors6, float4 colors7, | ||
|  | 		float2 alphas0, float2 alphas1, float2 alphas2, float2 alphas3, float2 alphas4, float2 alphas5, float2 alphas6, float2 alphas7) | ||
|  | 		{ | ||
|  | 			Gradient g; | ||
|  | 			g.type = type; | ||
|  | 			g.colorsLength = colorsLength; | ||
|  | 			g.alphasLength = alphasLength; | ||
|  | 			g.colors[ 0 ] = colors0; | ||
|  | 			g.colors[ 1 ] = colors1; | ||
|  | 			g.colors[ 2 ] = colors2; | ||
|  | 			g.colors[ 3 ] = colors3; | ||
|  | 			g.colors[ 4 ] = colors4; | ||
|  | 			g.colors[ 5 ] = colors5; | ||
|  | 			g.colors[ 6 ] = colors6; | ||
|  | 			g.colors[ 7 ] = colors7; | ||
|  | 			g.alphas[ 0 ] = alphas0; | ||
|  | 			g.alphas[ 1 ] = alphas1; | ||
|  | 			g.alphas[ 2 ] = alphas2; | ||
|  | 			g.alphas[ 3 ] = alphas3; | ||
|  | 			g.alphas[ 4 ] = alphas4; | ||
|  | 			g.alphas[ 5 ] = alphas5; | ||
|  | 			g.alphas[ 6 ] = alphas6; | ||
|  | 			g.alphas[ 7 ] = alphas7; | ||
|  | 			return g; | ||
|  | 		} | ||
|  | 
 | ||
|  | 
 | ||
|  | 		float4 SampleGradient( Gradient gradient, float time ) | ||
|  | 		{ | ||
|  | 			float3 color = gradient.colors[0].rgb; | ||
|  | 			UNITY_UNROLL | ||
|  | 			for (int c = 1; c < 8; c++) | ||
|  | 			{ | ||
|  | 			float colorPos = saturate((time - gradient.colors[c-1].w) / ( 0.00001 + (gradient.colors[c].w - gradient.colors[c-1].w)) * step(c, (float)gradient.colorsLength-1)); | ||
|  | 			color = lerp(color, gradient.colors[c].rgb, lerp(colorPos, step(0.01, colorPos), gradient.type)); | ||
|  | 			} | ||
|  | 			#ifndef UNITY_COLORSPACE_GAMMA | ||
|  | 			color = half3(GammaToLinearSpaceExact(color.r), GammaToLinearSpaceExact(color.g), GammaToLinearSpaceExact(color.b)); | ||
|  | 			#endif | ||
|  | 			float alpha = gradient.alphas[0].x; | ||
|  | 			UNITY_UNROLL | ||
|  | 			for (int a = 1; a < 8; a++) | ||
|  | 			{ | ||
|  | 			float alphaPos = saturate((time - gradient.alphas[a-1].y) / ( 0.00001 + (gradient.alphas[a].y - gradient.alphas[a-1].y)) * step(a, (float)gradient.alphasLength-1)); | ||
|  | 			alpha = lerp(alpha, gradient.alphas[a].x, lerp(alphaPos, step(0.01, alphaPos), gradient.type)); | ||
|  | 			} | ||
|  | 			return float4(color, alpha); | ||
|  | 		} | ||
|  | 
 | ||
|  | 
 | ||
|  | 		inline float Dither4x4Bayer( int x, int y ) | ||
|  | 		{ | ||
|  | 			const float dither[ 16 ] = { | ||
|  | 				 1,  9,  3, 11, | ||
|  | 				13,  5, 15,  7, | ||
|  | 				 4, 12,  2, 10, | ||
|  | 				16,  8, 14,  6 }; | ||
|  | 			int r = y * 4 + x; | ||
|  | 			return dither[r] / 16; // same # of instructions as pre-dividing due to compiler magic | ||
|  | 		} | ||
|  | 
 | ||
|  | 
 | ||
|  | 		void vertexDataFunc( inout appdata_full v, out Input o ) | ||
|  | 		{ | ||
|  | 			UNITY_INITIALIZE_OUTPUT( Input, o ); | ||
|  | 			float4 color128 = IsGammaSpace() ? float4(0,0,0,0) : float4(0,0,0,0); | ||
|  | 			float3 ase_worldPos = mul( unity_ObjectToWorld, v.vertex ); | ||
|  | 			#ifdef _USEGLOBALWINDSETTINGS_ON | ||
|  | 				float staticSwitch30_g12 = WindNoise01; | ||
|  | 			#else | ||
|  | 				float staticSwitch30_g12 = _WindNoise01Size; | ||
|  | 			#endif | ||
|  | 			#ifdef _USEGLOBALWINDSETTINGS_ON | ||
|  | 				float staticSwitch31_g12 = WindNoise01Multiplier; | ||
|  | 			#else | ||
|  | 				float staticSwitch31_g12 = _WindNoise01Multiplier; | ||
|  | 			#endif | ||
|  | 			#ifdef _USEGLOBALWINDSETTINGS_ON | ||
|  | 				float staticSwitch33_g12 = WindNoise02; | ||
|  | 			#else | ||
|  | 				float staticSwitch33_g12 = _WindNoise02Size; | ||
|  | 			#endif | ||
|  | 			#ifdef _USEGLOBALWINDSETTINGS_ON | ||
|  | 				float staticSwitch38_g12 = WindNoise02Multiplier; | ||
|  | 			#else | ||
|  | 				float staticSwitch38_g12 = _WindNoise02Multiplier; | ||
|  | 			#endif | ||
|  | 			float4 lerpResult27_g12 = lerp( ( tex2Dlod( _WindNoiseTexture, float4( ( ( float2( 0,0.2 ) * _Time.y ) + ( (ase_worldPos).xz / staticSwitch30_g12 ) ), 0, 0.0) ) * staticSwitch31_g12 ) , ( tex2Dlod( _WindNoiseTexture, float4( ( ( float2( 0,0.1 ) * _Time.y ) + ( (ase_worldPos).xz / staticSwitch33_g12 ) ), 0, 0.0) ) * staticSwitch38_g12 ) , 0.5); | ||
|  | 			Gradient gradient111 = NewGradient( 0, 2, 2, float4( 0, 0, 0, 0 ), float4( 1, 1, 1, 0.6294194 ), 0, 0, 0, 0, 0, 0, float2( 1, 0 ), float2( 1, 1 ), 0, 0, 0, 0, 0, 0 ); | ||
|  | 			float vVertexColor197 = pow( ( v.color.r + _VertexColorOffset ) , _VertexColorGradient ); | ||
|  | 			#ifdef _USEVERTEXCOLOR_ON | ||
|  | 				float staticSwitch191 = vVertexColor197; | ||
|  | 			#else | ||
|  | 				float staticSwitch191 = pow( SampleGradient( gradient111, v.texcoord.xy.y ).r , _LockPositionGradient ); | ||
|  | 			#endif | ||
|  | 			float4 lerpResult108 = lerp( color128 , lerpResult27_g12 , staticSwitch191); | ||
|  | 			float4 vWind116 = lerpResult108; | ||
|  | 			v.vertex.xyz += vWind116.rgb; | ||
|  | 			v.vertex.w = 1; | ||
|  | 			float4 ase_screenPos = ComputeScreenPos( UnityObjectToClipPos( v.vertex ) ); | ||
|  | 			o.screenPosition = ase_screenPos; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		void surf( Input i , inout SurfaceOutputStandardSpecular o ) | ||
|  | 		{ | ||
|  | 			float3 ase_worldPos = i.worldPos; | ||
|  | 			float4 lerpResult132 = lerp( _ColorTop , _ColorTopVariation , tex2D( _VariationMask, (( ase_worldPos / _VariationMapScale )).xz )); | ||
|  | 			float3 ase_vertex3Pos = mul( unity_WorldToObject, float4( i.worldPos , 1 ) ); | ||
|  | 			float4 lerpResult23 = lerp( lerpResult132 , _ColorBottom , saturate( ( ( ase_vertex3Pos.y + ( _ColorBottomLevel * -1.0 ) ) * ( ( _ColorBottomMaskFade * -1.0 ) * 2 ) ) )); | ||
|  | 			float2 uv_MainTex = i.uv_texcoord * _MainTex_ST.xy + _MainTex_ST.zw; | ||
|  | 			float4 tex2DNode22 = tex2D( _MainTex, uv_MainTex ); | ||
|  | 			float4 vColor27 = ( lerpResult23 * tex2DNode22 ); | ||
|  | 			o.Albedo = vColor27.rgb; | ||
|  | 			float3 temp_cast_1 = (_SpecularIntensity).xxx; | ||
|  | 			o.Specular = temp_cast_1; | ||
|  | 			o.Smoothness = ( 1.0 - _FoliageRoughness ); | ||
|  | 			o.Alpha = 1; | ||
|  | 			float vAlpha125 = tex2DNode22.a; | ||
|  | 			float4 ase_screenPos = i.screenPosition; | ||
|  | 			float4 ase_screenPosNorm = ase_screenPos / ase_screenPos.w; | ||
|  | 			ase_screenPosNorm.z = ( UNITY_NEAR_CLIP_VALUE >= 0 ) ? ase_screenPosNorm.z : ase_screenPosNorm.z * 0.5 + 0.5; | ||
|  | 			float2 clipScreen8_g11 = ase_screenPosNorm.xy * _ScreenParams.xy; | ||
|  | 			float dither8_g11 = Dither4x4Bayer( fmod(clipScreen8_g11.x, 4), fmod(clipScreen8_g11.y, 4) ); | ||
|  | 			#ifdef _USEGLOBALSETTING_ON | ||
|  | 				float staticSwitch12_g11 = DitherBottomLevel; | ||
|  | 			#else | ||
|  | 				float staticSwitch12_g11 = _DitherBottomLevel; | ||
|  | 			#endif | ||
|  | 			#ifdef _USEGLOBALSETTING_ON | ||
|  | 				float staticSwitch11_g11 = DitherFade; | ||
|  | 			#else | ||
|  | 				float staticSwitch11_g11 = _DitherFade; | ||
|  | 			#endif | ||
|  | 			dither8_g11 = step( dither8_g11, saturate( ( ( ase_vertex3Pos.y + staticSwitch12_g11 ) * ( staticSwitch11_g11 * 2 ) ) ) ); | ||
|  | 			float vTerrainDither181 = dither8_g11; | ||
|  | 			#ifdef _USEDITHERING_ON | ||
|  | 				float staticSwitch182 = ( vAlpha125 * vTerrainDither181 ); | ||
|  | 			#else | ||
|  | 				float staticSwitch182 = vAlpha125; | ||
|  | 			#endif | ||
|  | 			clip( staticSwitch182 - _MaskClip ); | ||
|  | 		} | ||
|  | 
 | ||
|  | 		ENDCG | ||
|  | 		CGPROGRAM | ||
|  | 		#pragma surface surf StandardSpecular keepalpha fullforwardshadows exclude_path:deferred vertex:vertexDataFunc  | ||
|  | 
 | ||
|  | 		ENDCG | ||
|  | 		Pass | ||
|  | 		{ | ||
|  | 			Name "ShadowCaster" | ||
|  | 			Tags{ "LightMode" = "ShadowCaster" } | ||
|  | 			ZWrite On | ||
|  | 			AlphaToMask Off | ||
|  | 			CGPROGRAM | ||
|  | 			#pragma vertex vert | ||
|  | 			#pragma fragment frag | ||
|  | 			#pragma target 4.0 | ||
|  | 			#pragma multi_compile_shadowcaster | ||
|  | 			#pragma multi_compile UNITY_PASS_SHADOWCASTER | ||
|  | 			#pragma skip_variants FOG_LINEAR FOG_EXP FOG_EXP2 | ||
|  | 			#include "HLSLSupport.cginc" | ||
|  | 			#if ( SHADER_API_D3D11 || SHADER_API_GLCORE || SHADER_API_GLES || SHADER_API_GLES3 || SHADER_API_METAL || SHADER_API_VULKAN ) | ||
|  | 				#define CAN_SKIP_VPOS | ||
|  | 			#endif | ||
|  | 			#include "UnityCG.cginc" | ||
|  | 			#include "Lighting.cginc" | ||
|  | 			#include "UnityPBSLighting.cginc" | ||
|  | 			struct v2f | ||
|  | 			{ | ||
|  | 				V2F_SHADOW_CASTER; | ||
|  | 				float2 customPack1 : TEXCOORD1; | ||
|  | 				float4 customPack2 : TEXCOORD2; | ||
|  | 				float3 worldPos : TEXCOORD3; | ||
|  | 				UNITY_VERTEX_INPUT_INSTANCE_ID | ||
|  | 				UNITY_VERTEX_OUTPUT_STEREO | ||
|  | 			}; | ||
|  | 			v2f vert( appdata_full v ) | ||
|  | 			{ | ||
|  | 				v2f o; | ||
|  | 				UNITY_SETUP_INSTANCE_ID( v ); | ||
|  | 				UNITY_INITIALIZE_OUTPUT( v2f, o ); | ||
|  | 				UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO( o ); | ||
|  | 				UNITY_TRANSFER_INSTANCE_ID( v, o ); | ||
|  | 				Input customInputData; | ||
|  | 				vertexDataFunc( v, customInputData ); | ||
|  | 				float3 worldPos = mul( unity_ObjectToWorld, v.vertex ).xyz; | ||
|  | 				half3 worldNormal = UnityObjectToWorldNormal( v.normal ); | ||
|  | 				o.customPack1.xy = customInputData.uv_texcoord; | ||
|  | 				o.customPack1.xy = v.texcoord; | ||
|  | 				o.customPack2.xyzw = customInputData.screenPosition; | ||
|  | 				o.worldPos = worldPos; | ||
|  | 				TRANSFER_SHADOW_CASTER_NORMALOFFSET( o ) | ||
|  | 				return o; | ||
|  | 			} | ||
|  | 			half4 frag( v2f IN | ||
|  | 			#if !defined( CAN_SKIP_VPOS ) | ||
|  | 			, UNITY_VPOS_TYPE vpos : VPOS | ||
|  | 			#endif | ||
|  | 			) : SV_Target | ||
|  | 			{ | ||
|  | 				UNITY_SETUP_INSTANCE_ID( IN ); | ||
|  | 				Input surfIN; | ||
|  | 				UNITY_INITIALIZE_OUTPUT( Input, surfIN ); | ||
|  | 				surfIN.uv_texcoord = IN.customPack1.xy; | ||
|  | 				surfIN.screenPosition = IN.customPack2.xyzw; | ||
|  | 				float3 worldPos = IN.worldPos; | ||
|  | 				half3 worldViewDir = normalize( UnityWorldSpaceViewDir( worldPos ) ); | ||
|  | 				surfIN.worldPos = worldPos; | ||
|  | 				SurfaceOutputStandardSpecular o; | ||
|  | 				UNITY_INITIALIZE_OUTPUT( SurfaceOutputStandardSpecular, o ) | ||
|  | 				surf( surfIN, o ); | ||
|  | 				#if defined( CAN_SKIP_VPOS ) | ||
|  | 				float2 vpos = IN.pos; | ||
|  | 				#endif | ||
|  | 				SHADOW_CASTER_FRAGMENT( IN ) | ||
|  | 			} | ||
|  | 			ENDCG | ||
|  | 		} | ||
|  | 	} | ||
|  | 	Fallback "Diffuse" | ||
|  | } | ||
|  | /*ASEBEGIN | ||
|  | Version=19200 | ||
|  | Node;AmplifyShaderEditor.CommentaryNode;31;-3996.417,-1390.987;Inherit;False;2609.802;1011.224;Comment;24;27;24;125;23;22;21;132;20;17;140;19;18;135;15;16;139;199;198;14;138;12;137;136;13;Color;1,1,1,1;0;0 | ||
|  | Node;AmplifyShaderEditor.RangedFloatNode;13;-3852.183,-726.2175;Inherit;False;Property;_ColorBottomLevel;Color Bottom Level;6;0;Create;True;0;0;0;False;0;False;0;-0.66;0;0;0;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.WorldPosInputsNode;136;-3926.494,-1064.928;Inherit;False;0;4;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3 | ||
|  | Node;AmplifyShaderEditor.RangedFloatNode;137;-3930.7,-923.5323;Inherit;False;Property;_VariationMapScale;Variation Map Scale;2;1;[Header];Create;True;1;Base Parameters;0;0;False;0;False;15;30;0;0;0;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.RangedFloatNode;12;-3931.565,-637.587;Inherit;False;Property;_ColorBottomMaskFade;Color Bottom Mask Fade;7;0;Create;True;0;0;0;False;0;False;0;-1;0;1;0;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.CommentaryNode;196;-2967.053,580.0191;Inherit;False;1028;327.5676;Comment;6;197;194;195;193;192;190;;1,1,1,1;0;0 | ||
|  | Node;AmplifyShaderEditor.CommentaryNode;184;-2964.891,-347.551;Inherit;False;1584.154;900.76;Comment;9;116;108;191;128;186;188;185;187;121;;1,1,1,1;0;0 | ||
|  | Node;AmplifyShaderEditor.CommentaryNode;121;-2892.79,172.7101;Inherit;False;912.9565;352;;5;113;114;112;111;110;Vertical Gradient;1,1,1,1;0;0 | ||
|  | Node;AmplifyShaderEditor.SimpleMultiplyOpNode;199;-3619.482,-633.1148;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;-1;False;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.SimpleDivideOpNode;138;-3608.388,-1065.634;Inherit;False;2;0;FLOAT3;0,0,0;False;1;FLOAT;0;False;1;FLOAT3;0 | ||
|  | Node;AmplifyShaderEditor.PosVertexDataNode;14;-3672.098,-860.8054;Inherit;False;0;0;5;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 | ||
|  | Node;AmplifyShaderEditor.SimpleMultiplyOpNode;198;-3618.482,-722.1148;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;-1;False;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.VertexColorNode;190;-2876.669,630.0191;Inherit;False;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 | ||
|  | Node;AmplifyShaderEditor.RangedFloatNode;193;-2917.053,805.5867;Inherit;False;Property;_VertexColorOffset;Vertex Color Offset;20;0;Create;True;0;0;0;False;0;False;0;0;0;0;0;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.CommentaryNode;167;-2243.909,-1668.439;Inherit;False;851.437;250.8007;Dithering;4;181;204;201;202;;1,1,1,1;0;0 | ||
|  | Node;AmplifyShaderEditor.GradientNode;111;-2828.792,220.4162;Inherit;False;0;2;2;0,0,0,0;1,1,1,0.6294194;1,0;1,1;0;1;OBJECT;0 | ||
|  | Node;AmplifyShaderEditor.TextureCoordinatesNode;110;-2842.791,298.4167;Inherit;False;0;-1;2;3;2;SAMPLER2D;;False;0;FLOAT2;1,1;False;1;FLOAT2;0,0;False;5;FLOAT2;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 | ||
|  | Node;AmplifyShaderEditor.ScaleNode;16;-3428.101,-633.7098;Inherit;False;2;1;0;FLOAT;0;False;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.ComponentMaskNode;139;-3467.886,-1069.934;Inherit;False;True;False;True;True;1;0;FLOAT3;0,0,0;False;1;FLOAT2;0 | ||
|  | Node;AmplifyShaderEditor.RangedFloatNode;195;-2611.053,802.5867;Inherit;False;Property;_VertexColorGradient;Vertex Color Gradient;21;0;Create;True;0;0;0;False;0;False;1;0;0;0;0;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.SimpleAddOpNode;15;-3397.988,-764.3085;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.SimpleAddOpNode;192;-2571.053,655.5867;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.RangedFloatNode;201;-2218.845,-1529.004;Inherit;False;Property;_DitherFade;Dither Fade;26;0;Create;True;0;0;0;False;0;False;0;0;0;10;0;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.PowerNode;194;-2377.053,653.5867;Inherit;False;False;2;0;FLOAT;0;False;1;FLOAT;1;False;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.GradientSampleNode;112;-2589.793,223.4162;Inherit;True;2;0;OBJECT;;False;1;FLOAT;0;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 | ||
|  | Node;AmplifyShaderEditor.RangedFloatNode;114;-2561.835,409.7108;Inherit;False;Property;_LockPositionGradient;Lock Position Gradient;14;0;Create;True;0;0;0;False;0;False;2;0.95;0;10;0;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.RangedFloatNode;202;-2217.461,-1609.632;Inherit;False;Property;_DitherBottomLevel;Dither Bottom Level;25;0;Create;True;0;0;0;False;0;False;0;0;-10;10;0;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.TexturePropertyNode;19;-2810.975,-651.7529;Inherit;True;Property;_MainTex;Foliage Texture;0;2;[Header];[SingleLineTexture];Create;False;2;Base Maps;.;0;0;False;0;False;None;None;False;white;Auto;Texture2D;-1;0;2;SAMPLER2D;0;SAMPLERSTATE;1 | ||
|  | Node;AmplifyShaderEditor.SimpleMultiplyOpNode;17;-3248.823,-768.3963;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.RangedFloatNode;188;-2640.371,55.7639;Inherit;False;Property;_WindNoise02Multiplier;Wind Noise 02 Multiplier;18;0;Create;True;0;0;0;False;0;False;1;0;-3;3;0;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.FunctionNode;204;-1929.866,-1604.622;Inherit;False;PA_Dithering;23;;11;51907001cc2d98f4bb2ac7260d1fff6c;0;2;9;FLOAT;0;False;10;FLOAT;0;False;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.RangedFloatNode;185;-2641.421,-172.035;Inherit;False;Property;_WindNoise01Size;Wind Noise 01 Size;15;0;Create;True;0;0;0;False;0;False;0;0;0;100;0;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.RangedFloatNode;187;-2640.371,-97.2354;Inherit;False;Property;_WindNoise02Size;Wind Noise 02 Size;17;0;Create;True;0;0;0;False;0;False;0;0;0;100;0;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.RegisterLocalVarNode;197;-2186.053,648.5867;Inherit;False;vVertexColor;-1;True;1;0;FLOAT;0;False;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.PowerNode;113;-2240.835,222.7103;Inherit;True;False;2;0;FLOAT;0;False;1;FLOAT;1;False;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.SamplerNode;22;-2577.698,-647.9918;Inherit;True;Property;_TextureSample0;Texture Sample 0;4;0;Create;True;0;0;0;False;0;False;-1;None;None;True;0;False;white;Auto;False;Instance;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 | ||
|  | Node;AmplifyShaderEditor.SaturateNode;21;-2943.143,-767.6307;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.LerpOp;132;-2693.739,-1131.789;Inherit;False;3;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;2;COLOR;0,0,0,0;False;1;COLOR;0 | ||
|  | Node;AmplifyShaderEditor.RangedFloatNode;186;-2640.371,-20.23573;Inherit;False;Property;_WindNoise01Multiplier;Wind Noise 01 Multiplier;16;0;Create;True;0;0;0;False;0;False;1;0;-3;3;0;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.LerpOp;23;-2447.072,-809.8652;Inherit;False;3;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;2;FLOAT;0;False;1;COLOR;0 | ||
|  | Node;AmplifyShaderEditor.RegisterLocalVarNode;181;-1615.956,-1610.101;Inherit;False;vTerrainDither;-1;True;1;0;FLOAT;0;False;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.ColorNode;128;-2187.941,-297.5509;Inherit;False;Constant;_Color2;Color2;7;0;Create;True;0;0;0;False;0;False;0,0,0,0;0,0,0,0;True;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 | ||
|  | Node;AmplifyShaderEditor.StaticSwitch;191;-1937.404,218.6381;Inherit;False;Property;_UseVertexColor;Use Vertex Color?;19;0;Create;True;0;0;0;False;0;False;0;0;0;True;;Toggle;2;Key0;Key1;Create;True;True;All;9;1;FLOAT;0;False;0;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;4;FLOAT;0;False;5;FLOAT;0;False;6;FLOAT;0;False;7;FLOAT;0;False;8;FLOAT;0;False;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.RegisterLocalVarNode;125;-2229.97,-550.8171;Inherit;False;vAlpha;-1;True;1;0;FLOAT;0;False;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.FunctionNode;205;-2308.206,-92.46032;Inherit;False;PA_SF_WindGrass;11;;12;b1ba21c96122aa44f8eac64c8d72c027;0;4;29;FLOAT;10;False;34;FLOAT;10;False;32;FLOAT;1;False;39;FLOAT;1;False;1;COLOR;0 | ||
|  | Node;AmplifyShaderEditor.SimpleMultiplyOpNode;24;-1817.573,-806.6952;Inherit;False;2;2;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;1;COLOR;0 | ||
|  | Node;AmplifyShaderEditor.GetLocalVarNode;158;-1325.317,375.0651;Inherit;False;181;vTerrainDither;1;0;OBJECT;;False;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.GetLocalVarNode;126;-1294.043,271.5366;Inherit;False;125;vAlpha;1;0;OBJECT;;False;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.LerpOp;108;-1757.449,-113.2636;Inherit;False;3;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;2;FLOAT;0;False;1;COLOR;0 | ||
|  | Node;AmplifyShaderEditor.RegisterLocalVarNode;116;-1578.237,-118.6165;Inherit;False;vWind;-1;True;1;0;COLOR;0,0,0,0;False;1;COLOR;0 | ||
|  | Node;AmplifyShaderEditor.SimpleMultiplyOpNode;161;-958.636,356.289;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.RegisterLocalVarNode;27;-1596.372,-809.6332;Inherit;False;vColor;-1;True;1;0;COLOR;0,0,0,0;False;1;COLOR;0 | ||
|  | Node;AmplifyShaderEditor.StaticSwitch;182;-738.8497,273.6953;Inherit;False;Property;_UseDithering;Use Dithering?;22;0;Create;True;0;0;0;False;1;Header(Dithering);False;0;0;0;True;;Toggle;2;Key0;Key1;Create;False;True;All;9;1;FLOAT;0;False;0;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;4;FLOAT;0;False;5;FLOAT;0;False;6;FLOAT;0;False;7;FLOAT;0;False;8;FLOAT;0;False;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.GetLocalVarNode;122;-690.1942,382.9964;Inherit;False;116;vWind;1;0;OBJECT;;False;1;COLOR;0 | ||
|  | Node;AmplifyShaderEditor.StandardSurfaceOutputNode;0;-447.4691,37.94351;Float;False;True;-1;4;;0;0;StandardSpecular;Polyart/Dreamscape/Builtin/Grass;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;False;True;False;False;False;False;Off;0;False;;0;False;;False;0;False;;0;False;;False;0;Custom;0.59;True;True;0;True;Opaque;;AlphaTest;ForwardOnly;12;all;True;True;True;True;0;False;;False;0;False;;255;False;;255;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;2;15;10;25;False;0.5;True;0;0;False;;0;False;;0;0;False;;0;False;;0;False;;0;False;;0;False;0;0,0,0,0;VertexOffset;True;False;Cylindrical;False;True;Relative;0;;-1;-1;-1;-1;0;True;0;0;False;;-1;0;True;_MaskClip;0;0;0;False;0.1;False;;0;False;;False;16;0;FLOAT3;0,0,0;False;1;FLOAT3;0,0,0;False;2;FLOAT3;0,0,0;False;3;FLOAT3;0,0,0;False;4;FLOAT;0;False;5;FLOAT;0;False;6;FLOAT3;0,0,0;False;7;FLOAT3;0,0,0;False;8;FLOAT;0;False;9;FLOAT;0;False;10;FLOAT;0;False;13;FLOAT3;0,0,0;False;11;FLOAT3;0,0,0;False;12;FLOAT3;0,0,0;False;14;FLOAT4;0,0,0,0;False;15;FLOAT3;0,0,0;False;0 | ||
|  | Node;AmplifyShaderEditor.OneMinusNode;206;-723.4158,196.1579;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.RangedFloatNode;200;-847.3269,-215.2137;Inherit;False;Property;_MaskClip;Mask Clip;10;0;Create;True;0;0;0;False;0;False;0.5;0;0;1;0;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.GetLocalVarNode;29;-786.9415,-68.31599;Inherit;False;27;vColor;1;0;OBJECT;;False;1;COLOR;0 | ||
|  | Node;AmplifyShaderEditor.RangedFloatNode;162;-1000.607,191.5835;Inherit;False;Property;_FoliageRoughness;Foliage Roughness;9;0;Create;True;0;0;0;False;0;False;0.1;0.1;0;1;0;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.RangedFloatNode;215;-998.9646,102.0251;Inherit;False;Property;_SpecularIntensity;Specular Intensity;8;0;Create;True;0;0;0;False;0;False;0.1;0.1;-1;1;0;1;FLOAT;0 | ||
|  | Node;AmplifyShaderEditor.SamplerNode;140;-3255.534,-1091.56;Inherit;True;Property;_VariationMask;Variation Mask;1;1;[SingleLineTexture];Create;True;0;0;0;False;0;False;-1;None;None;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 | ||
|  | Node;AmplifyShaderEditor.ColorNode;135;-2963.392,-1114.368;Inherit;False;Property;_ColorTopVariation;Color Top Variation;4;0;Create;True;0;0;0;False;0;False;0,0,0,0;0.4353558,0.5849056,0,1;True;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 | ||
|  | Node;AmplifyShaderEditor.ColorNode;20;-2962.27,-939.6653;Inherit;False;Property;_ColorBottom;Color Bottom;5;0;Create;True;0;0;0;False;0;False;0,0,0,0;0.5454459,0.8018868,0,1;True;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 | ||
|  | Node;AmplifyShaderEditor.ColorNode;18;-2968.363,-1320.561;Inherit;False;Property;_ColorTop;Color Top;3;1;[HDR];Create;True;0;0;0;False;0;False;0,0,0,0;0.4353558,0.5849056,0,1;True;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 | ||
|  | WireConnection;199;0;12;0 | ||
|  | WireConnection;138;0;136;0 | ||
|  | WireConnection;138;1;137;0 | ||
|  | WireConnection;198;0;13;0 | ||
|  | WireConnection;16;0;199;0 | ||
|  | WireConnection;139;0;138;0 | ||
|  | WireConnection;15;0;14;2 | ||
|  | WireConnection;15;1;198;0 | ||
|  | WireConnection;192;0;190;1 | ||
|  | WireConnection;192;1;193;0 | ||
|  | WireConnection;194;0;192;0 | ||
|  | WireConnection;194;1;195;0 | ||
|  | WireConnection;112;0;111;0 | ||
|  | WireConnection;112;1;110;2 | ||
|  | WireConnection;17;0;15;0 | ||
|  | WireConnection;17;1;16;0 | ||
|  | WireConnection;204;9;202;0 | ||
|  | WireConnection;204;10;201;0 | ||
|  | WireConnection;197;0;194;0 | ||
|  | WireConnection;113;0;112;1 | ||
|  | WireConnection;113;1;114;0 | ||
|  | WireConnection;22;0;19;0 | ||
|  | WireConnection;21;0;17;0 | ||
|  | WireConnection;132;0;18;0 | ||
|  | WireConnection;132;1;135;0 | ||
|  | WireConnection;132;2;140;0 | ||
|  | WireConnection;23;0;132;0 | ||
|  | WireConnection;23;1;20;0 | ||
|  | WireConnection;23;2;21;0 | ||
|  | WireConnection;181;0;204;0 | ||
|  | WireConnection;191;1;113;0 | ||
|  | WireConnection;191;0;197;0 | ||
|  | WireConnection;125;0;22;4 | ||
|  | WireConnection;205;29;185;0 | ||
|  | WireConnection;205;34;187;0 | ||
|  | WireConnection;205;32;186;0 | ||
|  | WireConnection;205;39;188;0 | ||
|  | WireConnection;24;0;23;0 | ||
|  | WireConnection;24;1;22;0 | ||
|  | WireConnection;108;0;128;0 | ||
|  | WireConnection;108;1;205;0 | ||
|  | WireConnection;108;2;191;0 | ||
|  | WireConnection;116;0;108;0 | ||
|  | WireConnection;161;0;126;0 | ||
|  | WireConnection;161;1;158;0 | ||
|  | WireConnection;27;0;24;0 | ||
|  | WireConnection;182;1;126;0 | ||
|  | WireConnection;182;0;161;0 | ||
|  | WireConnection;0;0;29;0 | ||
|  | WireConnection;0;3;215;0 | ||
|  | WireConnection;0;4;206;0 | ||
|  | WireConnection;0;10;182;0 | ||
|  | WireConnection;0;11;122;0 | ||
|  | WireConnection;206;0;162;0 | ||
|  | WireConnection;140;1;139;0 | ||
|  | ASEEND*/ | ||
|  | //CHKSM=43F07B7AEF4530C44F5E892B729C0C4DB2216E21 |