437 lines
26 KiB
Plaintext
437 lines
26 KiB
Plaintext
![]() |
// Made with Amplify Shader Editor
|
||
|
// Available at the Unity Asset Store - http://u3d.as/y3X
|
||
|
Shader "Hidden/TerrainEngine/Details/WavingDoublePass"
|
||
|
{
|
||
|
Properties
|
||
|
{
|
||
|
_WindNoiseTexture("Wind Noise Texture", 2D) = "white" {}
|
||
|
_PivotLockPower("Pivot Lock Power", Range( 0 , 10)) = 0.3
|
||
|
_MainTex("Foliage Texture", 2D) = "white" {}
|
||
|
_WaveScale("Wave Scale", Float) = 40
|
||
|
_PanningWaveTexture("Panning Wave Texture", 2D) = "white" {}
|
||
|
_FoliageDitherMin("FoliageDitherMin", Float) = 1
|
||
|
_FoliageDitherMax("FoliageDitherMax", Float) = 8
|
||
|
[Toggle(_DITHERINGON_ON)] _DitheringON("Dithering ON", Float) = 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 _DITHERINGON_ON
|
||
|
struct Input
|
||
|
{
|
||
|
float3 worldPos;
|
||
|
float4 vertexColor : COLOR;
|
||
|
float2 uv_texcoord;
|
||
|
float4 screenPosition;
|
||
|
float eyeDepth;
|
||
|
};
|
||
|
|
||
|
uniform sampler2D _WindNoiseTexture;
|
||
|
uniform float WindNoiseSmall;
|
||
|
uniform float WindNoiseSmallMultiply;
|
||
|
uniform float WindNoiseLarge;
|
||
|
uniform float WindNoiseLargeMultiply;
|
||
|
uniform float _PivotLockPower;
|
||
|
uniform float4 CloudColor;
|
||
|
uniform sampler2D _PanningWaveTexture;
|
||
|
uniform float2 CloudSpeed;
|
||
|
uniform float _WaveScale;
|
||
|
uniform sampler2D _MainTex;
|
||
|
uniform float4 _MainTex_ST;
|
||
|
uniform float FoliageSmoothness;
|
||
|
uniform float FoliageRenderDistance;
|
||
|
uniform float _FoliageDitherMin;
|
||
|
uniform float _FoliageDitherMax;
|
||
|
|
||
|
|
||
|
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 Dither8x8Bayer( int x, int y )
|
||
|
{
|
||
|
const float dither[ 64 ] = {
|
||
|
1, 49, 13, 61, 4, 52, 16, 64,
|
||
|
33, 17, 45, 29, 36, 20, 48, 32,
|
||
|
9, 57, 5, 53, 12, 60, 8, 56,
|
||
|
41, 25, 37, 21, 44, 28, 40, 24,
|
||
|
3, 51, 15, 63, 2, 50, 14, 62,
|
||
|
35, 19, 47, 31, 34, 18, 46, 30,
|
||
|
11, 59, 7, 55, 10, 58, 6, 54,
|
||
|
43, 27, 39, 23, 42, 26, 38, 22};
|
||
|
int r = y * 8 + x;
|
||
|
return dither[r] / 64; // 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 color104 = IsGammaSpace() ? float4(0,0,0,0) : float4(0,0,0,0);
|
||
|
float3 ase_worldPos = mul( unity_ObjectToWorld, v.vertex );
|
||
|
float4 lerpResult100 = lerp( ( tex2Dlod( _WindNoiseTexture, float4( ( ( float2( 0,0.2 ) * _Time.y ) + ( (ase_worldPos).xz / WindNoiseSmall ) ), 0, 0.0) ) * WindNoiseSmallMultiply ) , ( tex2Dlod( _WindNoiseTexture, float4( ( ( float2( 0,0.1 ) * _Time.y ) + ( (ase_worldPos).xz / WindNoiseLarge ) ), 0, 0.0) ) * WindNoiseLargeMultiply ) , 0.5);
|
||
|
Gradient gradient79 = NewGradient( 0, 2, 2, float4( 0, 0, 0, 0 ), float4( 1, 1, 1, 1 ), 0, 0, 0, 0, 0, 0, float2( 1, 0 ), float2( 1, 1 ), 0, 0, 0, 0, 0, 0 );
|
||
|
float4 temp_cast_0 = (_PivotLockPower).xxxx;
|
||
|
float4 lerpResult107 = lerp( color104 , lerpResult100 , pow( SampleGradient( gradient79, v.texcoord.xy.y ) , temp_cast_0 ));
|
||
|
float4 vWind111 = ( v.color.a * lerpResult107 );
|
||
|
v.vertex.xyz += vWind111.rgb;
|
||
|
v.vertex.w = 1;
|
||
|
float4 ase_screenPos = ComputeScreenPos( UnityObjectToClipPos( v.vertex ) );
|
||
|
o.screenPosition = ase_screenPos;
|
||
|
o.eyeDepth = -UnityObjectToViewPos( v.vertex.xyz ).z;
|
||
|
}
|
||
|
|
||
|
void surf( Input i , inout SurfaceOutputStandard o )
|
||
|
{
|
||
|
float3 ase_worldPos = i.worldPos;
|
||
|
float2 panner174 = ( _Time.y * (( CloudSpeed / float2( 10,10 ) )).xy + (( ase_worldPos / _WaveScale )).xz);
|
||
|
float4 lerpResult176 = lerp( i.vertexColor , ( i.vertexColor * CloudColor ) , tex2D( _PanningWaveTexture, panner174 ).r);
|
||
|
float4 vColor185 = lerpResult176;
|
||
|
float2 uv_MainTex = i.uv_texcoord * _MainTex_ST.xy + _MainTex_ST.zw;
|
||
|
float4 vTexture128 = tex2D( _MainTex, uv_MainTex );
|
||
|
o.Albedo = ( vColor185 * (vTexture128).r ).rgb;
|
||
|
o.Smoothness = FoliageSmoothness;
|
||
|
float temp_output_130_0 = (vTexture128).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 clipScreen157 = ase_screenPosNorm.xy * _ScreenParams.xy;
|
||
|
float dither157 = Dither8x8Bayer( fmod(clipScreen157.x, 8), fmod(clipScreen157.y, 8) );
|
||
|
float cameraDepthFade153 = (( i.eyeDepth -_ProjectionParams.y - FoliageRenderDistance ) / FoliageRenderDistance);
|
||
|
dither157 = step( dither157, ( 1.0 - cameraDepthFade153 ) );
|
||
|
float vGrassDistance159 = dither157;
|
||
|
float2 clipScreen160 = ase_screenPosNorm.xy * _ScreenParams.xy;
|
||
|
float dither160 = Dither8x8Bayer( fmod(clipScreen160.x, 8), fmod(clipScreen160.y, 8) );
|
||
|
float clampResult158 = clamp( (_FoliageDitherMin + (i.uv_texcoord.y - 0.1) * (_FoliageDitherMax - _FoliageDitherMin) / (0.5 - 0.1)) , 0.0 , 1.0 );
|
||
|
dither160 = step( dither160, clampResult158 );
|
||
|
float vTerrainDither161 = dither160;
|
||
|
#ifdef _DITHERINGON_ON
|
||
|
float staticSwitch192 = ( ( temp_output_130_0 * vGrassDistance159 ) * vTerrainDither161 );
|
||
|
#else
|
||
|
float staticSwitch192 = temp_output_130_0;
|
||
|
#endif
|
||
|
o.Alpha = staticSwitch192;
|
||
|
}
|
||
|
|
||
|
ENDCG
|
||
|
CGPROGRAM
|
||
|
#pragma surface surf Standard keepalpha fullforwardshadows 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"
|
||
|
sampler3D _DitherMaskLOD;
|
||
|
struct v2f
|
||
|
{
|
||
|
V2F_SHADOW_CASTER;
|
||
|
float3 customPack1 : TEXCOORD1;
|
||
|
float4 customPack2 : TEXCOORD2;
|
||
|
float3 worldPos : TEXCOORD3;
|
||
|
half4 color : COLOR0;
|
||
|
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.customPack1.z = customInputData.eyeDepth;
|
||
|
o.worldPos = worldPos;
|
||
|
TRANSFER_SHADOW_CASTER_NORMALOFFSET( o )
|
||
|
o.color = v.color;
|
||
|
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;
|
||
|
surfIN.eyeDepth = IN.customPack1.z;
|
||
|
float3 worldPos = IN.worldPos;
|
||
|
half3 worldViewDir = normalize( UnityWorldSpaceViewDir( worldPos ) );
|
||
|
surfIN.worldPos = worldPos;
|
||
|
surfIN.vertexColor = IN.color;
|
||
|
SurfaceOutputStandard o;
|
||
|
UNITY_INITIALIZE_OUTPUT( SurfaceOutputStandard, o )
|
||
|
surf( surfIN, o );
|
||
|
#if defined( CAN_SKIP_VPOS )
|
||
|
float2 vpos = IN.pos;
|
||
|
#endif
|
||
|
half alphaRef = tex3D( _DitherMaskLOD, float3( vpos.xy * 0.25, o.Alpha * 0.9375 ) ).a;
|
||
|
clip( alphaRef - 0.01 );
|
||
|
SHADOW_CASTER_FRAGMENT( IN )
|
||
|
}
|
||
|
ENDCG
|
||
|
}
|
||
|
}
|
||
|
Fallback "Diffuse"
|
||
|
}
|
||
|
/*ASEBEGIN
|
||
|
Version=18912
|
||
|
1077;73;1979;1256;1052.695;-66.21356;1;True;False
|
||
|
Node;AmplifyShaderEditor.CommentaryNode;41;-3134.081,885.6868;Inherit;False;2133.215;1279.717;;2;43;42;Wind;1,1,1,1;0;0
|
||
|
Node;AmplifyShaderEditor.CommentaryNode;43;-3088.27,935.9296;Inherit;False;1890.47;670.058;Wind Small;14;100;94;90;87;78;76;72;66;61;55;54;53;50;47;;0.2216981,1,0.9921367,1;0;0
|
||
|
Node;AmplifyShaderEditor.CommentaryNode;42;-3087.945,1623.933;Inherit;False;1598.144;507.6038;Wind Large;11;93;86;85;73;65;63;60;58;52;49;45;;0.9711054,0.495283,1,1;0;0
|
||
|
Node;AmplifyShaderEditor.WorldPosInputsNode;45;-3033.602,1935.17;Inherit;False;0;4;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3
|
||
|
Node;AmplifyShaderEditor.WorldPosInputsNode;47;-3038.27,1247.533;Inherit;False;0;4;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3
|
||
|
Node;AmplifyShaderEditor.SimpleTimeNode;53;-2898.455,1138.143;Inherit;False;1;0;FLOAT;1;False;1;FLOAT;0
|
||
|
Node;AmplifyShaderEditor.RangedFloatNode;49;-2836.602,2016.171;Inherit;False;Global;WindNoiseLarge;Wind Noise Large;7;0;Create;True;0;0;0;False;0;False;20;61.3;0;0;0;1;FLOAT;0
|
||
|
Node;AmplifyShaderEditor.Vector2Node;58;-2890.786,1696.778;Inherit;False;Constant;_Vector1;Vector 1;14;0;Create;True;0;0;0;False;0;False;0,0.1;0,0.1;0;3;FLOAT2;0;FLOAT;1;FLOAT;2
|
||
|
Node;AmplifyShaderEditor.RangedFloatNode;50;-2832.27,1333.533;Inherit;False;Global;WindNoiseSmall;Wind Noise Small;10;0;Create;True;0;0;0;True;0;False;20;93.1;0;0;0;1;FLOAT;0
|
||
|
Node;AmplifyShaderEditor.Vector2Node;55;-2895.455,1009.142;Inherit;False;Constant;_Vector0;Vector 0;15;0;Create;True;0;0;0;False;0;False;0,0.2;0,0.2;0;3;FLOAT2;0;FLOAT;1;FLOAT;2
|
||
|
Node;AmplifyShaderEditor.SimpleTimeNode;52;-2892.786,1825.78;Inherit;False;1;0;FLOAT;1;False;1;FLOAT;0
|
||
|
Node;AmplifyShaderEditor.ComponentMaskNode;60;-2833.602,1932.17;Inherit;False;True;False;True;True;1;0;FLOAT3;0,0,0;False;1;FLOAT2;0
|
||
|
Node;AmplifyShaderEditor.CommentaryNode;166;-2174.83,-1380.056;Inherit;False;1286;481.0001;Dithering;12;152;187;188;161;160;159;157;158;154;155;153;151;;1,1,1,1;0;0
|
||
|
Node;AmplifyShaderEditor.ComponentMaskNode;54;-2838.27,1242.533;Inherit;False;True;False;True;True;1;0;FLOAT3;0,0,0;False;1;FLOAT2;0
|
||
|
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;61;-2656.455,1015.142;Inherit;False;2;2;0;FLOAT2;0,0;False;1;FLOAT;0;False;1;FLOAT2;0
|
||
|
Node;AmplifyShaderEditor.RangedFloatNode;151;-2137.83,-1305.057;Inherit;False;Global;FoliageRenderDistance;FoliageRenderDistance;7;0;Create;True;0;0;0;True;0;False;35;200;0;0;0;1;FLOAT;0
|
||
|
Node;AmplifyShaderEditor.RangedFloatNode;168;-3274.512,-235.6552;Inherit;False;Property;_WaveScale;Wave Scale;3;0;Create;True;0;0;0;False;0;False;40;30;0;0;0;1;FLOAT;0
|
||
|
Node;AmplifyShaderEditor.Vector2Node;183;-3304.599,-143.1409;Inherit;False;Global;CloudSpeed;CloudSpeed;13;0;Create;True;0;0;0;False;0;False;0.2,1;0.1,0.595;0;3;FLOAT2;0;FLOAT;1;FLOAT;2
|
||
|
Node;AmplifyShaderEditor.SimpleDivideOpNode;63;-2558.602,1933.17;Inherit;False;2;0;FLOAT2;0,0;False;1;FLOAT;0;False;1;FLOAT2;0
|
||
|
Node;AmplifyShaderEditor.SimpleDivideOpNode;66;-2543.27,1248.533;Inherit;False;2;0;FLOAT2;0,0;False;1;FLOAT;0;False;1;FLOAT2;0
|
||
|
Node;AmplifyShaderEditor.WorldPosInputsNode;167;-3291.513,-380.6552;Inherit;False;0;4;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3
|
||
|
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;65;-2659.786,1701.778;Inherit;True;2;2;0;FLOAT2;0,0;False;1;FLOAT;0;False;1;FLOAT2;0
|
||
|
Node;AmplifyShaderEditor.RangedFloatNode;188;-1938.459,-1027.599;Inherit;False;Property;_FoliageDitherMax;FoliageDitherMax;7;0;Create;True;0;0;0;False;0;False;8;6;0;0;0;1;FLOAT;0
|
||
|
Node;AmplifyShaderEditor.SimpleAddOpNode;73;-2328.787,1702.778;Inherit;True;2;2;0;FLOAT2;0,0;False;1;FLOAT2;0,0;False;1;FLOAT2;0
|
||
|
Node;AmplifyShaderEditor.TextureCoordinatesNode;152;-2122.83,-1226.056;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.RangedFloatNode;187;-1936.459,-1108.599;Inherit;False;Property;_FoliageDitherMin;FoliageDitherMin;5;0;Create;True;0;0;0;True;0;False;1;1;0;0;0;1;FLOAT;0
|
||
|
Node;AmplifyShaderEditor.SimpleDivideOpNode;184;-3098.599,-138.1409;Inherit;False;2;0;FLOAT2;0,0;False;1;FLOAT2;10,10;False;1;FLOAT2;0
|
||
|
Node;AmplifyShaderEditor.SimpleDivideOpNode;170;-3036.512,-380.6552;Inherit;False;2;0;FLOAT3;0,0,0;False;1;FLOAT;0;False;1;FLOAT3;0
|
||
|
Node;AmplifyShaderEditor.TexturePropertyNode;76;-2546.264,1412.986;Inherit;True;Property;_WindNoiseTexture;Wind Noise Texture;0;0;Create;True;0;0;0;False;0;False;ecd0578dd5d2cb54e90e298c6fbe1019;ecd0578dd5d2cb54e90e298c6fbe1019;False;white;Auto;Texture2D;-1;0;2;SAMPLER2D;0;SAMPLERSTATE;1
|
||
|
Node;AmplifyShaderEditor.TexturePropertyNode;126;-2124.598,-0.3577515;Inherit;True;Property;_MainTex;Foliage Texture;2;0;Create;False;0;0;0;False;0;False;None;None;False;white;Auto;Texture2D;-1;0;2;SAMPLER2D;0;SAMPLERSTATE;1
|
||
|
Node;AmplifyShaderEditor.CameraDepthFade;153;-1710.83,-1324.056;Inherit;False;3;2;FLOAT3;0,0,0;False;0;FLOAT;1;False;1;FLOAT;0;False;1;FLOAT;0
|
||
|
Node;AmplifyShaderEditor.SimpleAddOpNode;72;-2333.455,1015.142;Inherit;False;2;2;0;FLOAT2;0,0;False;1;FLOAT2;0,0;False;1;FLOAT2;0
|
||
|
Node;AmplifyShaderEditor.CommentaryNode;75;-986.2117,1084.967;Inherit;False;912.9565;352;;5;106;98;80;79;95;Vertical Gradient;1,1,1,1;0;0
|
||
|
Node;AmplifyShaderEditor.TFHCRemapNode;154;-1660.83,-1176.056;Inherit;False;5;0;FLOAT;0;False;1;FLOAT;0.1;False;2;FLOAT;0.5;False;3;FLOAT;1;False;4;FLOAT;6;False;1;FLOAT;0
|
||
|
Node;AmplifyShaderEditor.TextureCoordinatesNode;80;-936.2117,1210.673;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.SamplerNode;127;-1897.122,2.403341;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.SamplerNode;86;-2050.619,1673.565;Inherit;True;Property;_TextureSample2;Texture Sample 2;16;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.ComponentMaskNode;171;-2875.511,-385.6552;Inherit;False;True;False;True;True;1;0;FLOAT3;0,0,0;False;1;FLOAT2;0
|
||
|
Node;AmplifyShaderEditor.GradientNode;79;-903.2125,1135.673;Inherit;False;0;2;2;0,0,0,0;1,1,1,1;1,0;1,1;0;1;OBJECT;0
|
||
|
Node;AmplifyShaderEditor.ComponentMaskNode;172;-2958.462,-143.8214;Inherit;False;True;True;False;False;1;0;FLOAT2;0,0;False;1;FLOAT2;0
|
||
|
Node;AmplifyShaderEditor.SamplerNode;87;-2055.287,985.9294;Inherit;True;Property;_TextureSample1;Texture Sample 1;16;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.OneMinusNode;155;-1449.83,-1325.056;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0
|
||
|
Node;AmplifyShaderEditor.RangedFloatNode;85;-2028.463,1867.87;Inherit;False;Global;WindNoiseLargeMultiply;Wind Noise Large Multiply;3;0;Create;True;0;0;0;False;0;False;1;1.83;-10;10;0;1;FLOAT;0
|
||
|
Node;AmplifyShaderEditor.SimpleTimeNode;173;-2921.559,-48.62187;Inherit;False;1;0;FLOAT;1;False;1;FLOAT;0
|
||
|
Node;AmplifyShaderEditor.RangedFloatNode;78;-2033.13,1177.232;Inherit;False;Global;WindNoiseSmallMultiply;Wind Noise Small Multiply;4;0;Create;True;0;0;0;False;0;False;1;0.13;-10;10;0;1;FLOAT;0
|
||
|
Node;AmplifyShaderEditor.GradientSampleNode;98;-683.2125,1135.673;Inherit;True;2;0;OBJECT;;False;1;FLOAT;0;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
|
||
|
Node;AmplifyShaderEditor.RangedFloatNode;94;-1623.69,1233.439;Inherit;False;Constant;_Float1;Float 1;19;0;Create;True;0;0;0;False;0;False;0.5;0;0;0;0;1;FLOAT;0
|
||
|
Node;AmplifyShaderEditor.RangedFloatNode;95;-655.3174,1331.58;Inherit;False;Property;_PivotLockPower;Pivot Lock Power;1;0;Create;True;0;0;0;False;0;False;0.3;0.95;0;10;0;1;FLOAT;0
|
||
|
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;93;-1654.461,1677.869;Inherit;False;2;2;0;COLOR;0,0,0,0;False;1;FLOAT;0;False;1;COLOR;0
|
||
|
Node;AmplifyShaderEditor.VertexColorNode;144;-2220.005,-745.9551;Inherit;False;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
|
||
|
Node;AmplifyShaderEditor.DitheringNode;157;-1300.83,-1330.056;Inherit;False;1;False;4;0;FLOAT;0;False;1;SAMPLER2D;;False;2;FLOAT4;0,0,0,0;False;3;SAMPLERSTATE;;False;1;FLOAT;0
|
||
|
Node;AmplifyShaderEditor.PannerNode;174;-2591.315,-380.9919;Inherit;False;3;0;FLOAT2;0,0;False;2;FLOAT2;0,0;False;1;FLOAT;1;False;1;FLOAT2;0
|
||
|
Node;AmplifyShaderEditor.RegisterLocalVarNode;128;-1583.479,3.033531;Inherit;False;vTexture;-1;True;1;0;COLOR;0,0,0,0;False;1;COLOR;0
|
||
|
Node;AmplifyShaderEditor.ClampOpNode;158;-1464.83,-1177.056;Inherit;False;3;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;1;False;1;FLOAT;0
|
||
|
Node;AmplifyShaderEditor.ColorNode;182;-2256.428,-576.6761;Inherit;False;Global;CloudColor;CloudColor;14;0;Create;True;0;0;0;True;0;False;0.6792453,0.6792453,0.6792453,0;0.4716981,0.4716981,0.4716981,1;True;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
|
||
|
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;90;-1659.131,990.2324;Inherit;False;2;2;0;COLOR;0,0,0,0;False;1;FLOAT;0;False;1;COLOR;0
|
||
|
Node;AmplifyShaderEditor.GetLocalVarNode;129;-934.9385,-121.5946;Inherit;False;128;vTexture;1;0;OBJECT;;False;1;COLOR;0
|
||
|
Node;AmplifyShaderEditor.RegisterLocalVarNode;159;-1115.83,-1330.056;Inherit;False;vGrassDistance;-1;True;1;0;FLOAT;0;False;1;FLOAT;0
|
||
|
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;181;-1965.428,-472.6761;Inherit;False;2;2;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;1;COLOR;0
|
||
|
Node;AmplifyShaderEditor.DitheringNode;160;-1314.83,-1181.056;Inherit;False;1;False;4;0;FLOAT;0;False;1;SAMPLER2D;;False;2;FLOAT4;0,0,0,0;False;3;SAMPLERSTATE;;False;1;FLOAT;0
|
||
|
Node;AmplifyShaderEditor.PowerNode;106;-334.2544,1134.967;Inherit;True;False;2;0;COLOR;0,0,0,0;False;1;FLOAT;1;False;1;COLOR;0
|
||
|
Node;AmplifyShaderEditor.SamplerNode;175;-2338.872,-408.8817;Inherit;True;Property;_PanningWaveTexture;Panning Wave Texture;4;0;Create;True;0;0;0;False;0;False;-1;ecd0578dd5d2cb54e90e298c6fbe1019;ecd0578dd5d2cb54e90e298c6fbe1019;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.LerpOp;100;-1381.805,992.6625;Inherit;True;3;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;2;FLOAT;0;False;1;COLOR;0
|
||
|
Node;AmplifyShaderEditor.ColorNode;104;-377.3684,857.2747;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.GetLocalVarNode;162;-613.8667,107.0067;Inherit;False;159;vGrassDistance;1;0;OBJECT;;False;1;FLOAT;0
|
||
|
Node;AmplifyShaderEditor.ComponentMaskNode;130;-642.9385,-43.5946;Inherit;False;False;False;False;True;1;0;COLOR;0,0,0,0;False;1;FLOAT;0
|
||
|
Node;AmplifyShaderEditor.RegisterLocalVarNode;161;-1119.83,-1182.056;Inherit;False;vTerrainDither;-1;True;1;0;FLOAT;0;False;1;FLOAT;0
|
||
|
Node;AmplifyShaderEditor.LerpOp;176;-1714.406,-428.3253;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.LerpOp;107;-55.60028,967.2615;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.VertexColorNode;189;-73.07275,788.4829;Inherit;False;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
|
||
|
Node;AmplifyShaderEditor.RegisterLocalVarNode;185;-1542.348,-433.2154;Inherit;False;vColor;-1;True;1;0;COLOR;0,0,0,0;False;1;COLOR;0
|
||
|
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;164;-379.1667,88.0067;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0
|
||
|
Node;AmplifyShaderEditor.GetLocalVarNode;163;-439.4504,192.0067;Inherit;False;161;vTerrainDither;1;0;OBJECT;;False;1;FLOAT;0
|
||
|
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;191;128.9272,884.4829;Inherit;False;2;2;0;FLOAT;0;False;1;COLOR;0,0,0,0;False;1;COLOR;0
|
||
|
Node;AmplifyShaderEditor.RegisterLocalVarNode;111;273.6117,878.9085;Inherit;False;vWind;-1;True;1;0;COLOR;0,0,0,0;False;1;COLOR;0
|
||
|
Node;AmplifyShaderEditor.ComponentMaskNode;132;-642.9385,-203.5946;Inherit;False;True;False;False;False;1;0;COLOR;0,0,0,0;False;1;FLOAT;0
|
||
|
Node;AmplifyShaderEditor.GetLocalVarNode;186;-458.8481,-327.3428;Inherit;False;185;vColor;1;0;OBJECT;;False;1;COLOR;0
|
||
|
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;165;-243.8667,90.0067;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0
|
||
|
Node;AmplifyShaderEditor.RangedFloatNode;118;-126.2169,-74.7005;Inherit;False;Global;FoliageSmoothness;FoliageSmoothness;0;0;Create;True;0;0;0;False;0;False;0.1;0;-1;1;0;1;FLOAT;0
|
||
|
Node;AmplifyShaderEditor.ComponentMaskNode;133;-642.9385,-123.5946;Inherit;False;False;True;False;False;1;0;COLOR;0,0,0,0;False;1;FLOAT;0
|
||
|
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;148;-169.4222,-253.5468;Inherit;False;2;2;0;COLOR;0,0,0,0;False;1;FLOAT;0;False;1;COLOR;0
|
||
|
Node;AmplifyShaderEditor.StaticSwitch;192;-56.86765,58.63751;Inherit;False;Property;_DitheringON;Dithering ON;8;0;Create;True;0;0;0;False;0;False;0;0;0;True;_DITHERINGON_ON;Toggle;2;Key0;Key1;Create;False;True;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;117;-120.1959,347.2232;Inherit;False;111;vWind;1;0;OBJECT;;False;1;COLOR;0
|
||
|
Node;AmplifyShaderEditor.StandardSurfaceOutputNode;0;188.2007,-165.6634;Float;False;True;-1;4;;0;0;Standard;Hidden/TerrainEngine/Details/WavingDoublePass;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;False;True;False;False;False;False;Off;0;False;-1;0;False;-1;False;0;False;-1;0;False;-1;False;0;Custom;0.8;True;True;0;True;Opaque;;AlphaTest;All;18;all;True;True;True;True;0;False;-1;False;0;False;-1;255;False;-1;255;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;False;2;15;10;25;False;0.5;True;0;5;False;-1;10;False;-1;0;5;False;-1;10;False;-1;0;False;-1;0;False;-1;0;False;0;0,0,0,0;VertexOffset;True;False;Cylindrical;False;Relative;0;;6;-1;-1;-1;0;True;0;0;False;-1;-1;0;False;-1;0;0;0;False;0.1;False;-1;0;False;-1;False;16;0;FLOAT3;0,0,0;False;1;FLOAT3;0,0,0;False;2;FLOAT3;0,0,0;False;3;FLOAT;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
|
||
|
WireConnection;60;0;45;0
|
||
|
WireConnection;54;0;47;0
|
||
|
WireConnection;61;0;55;0
|
||
|
WireConnection;61;1;53;0
|
||
|
WireConnection;63;0;60;0
|
||
|
WireConnection;63;1;49;0
|
||
|
WireConnection;66;0;54;0
|
||
|
WireConnection;66;1;50;0
|
||
|
WireConnection;65;0;58;0
|
||
|
WireConnection;65;1;52;0
|
||
|
WireConnection;73;0;65;0
|
||
|
WireConnection;73;1;63;0
|
||
|
WireConnection;184;0;183;0
|
||
|
WireConnection;170;0;167;0
|
||
|
WireConnection;170;1;168;0
|
||
|
WireConnection;153;0;151;0
|
||
|
WireConnection;153;1;151;0
|
||
|
WireConnection;72;0;61;0
|
||
|
WireConnection;72;1;66;0
|
||
|
WireConnection;154;0;152;2
|
||
|
WireConnection;154;3;187;0
|
||
|
WireConnection;154;4;188;0
|
||
|
WireConnection;127;0;126;0
|
||
|
WireConnection;86;0;76;0
|
||
|
WireConnection;86;1;73;0
|
||
|
WireConnection;171;0;170;0
|
||
|
WireConnection;172;0;184;0
|
||
|
WireConnection;87;0;76;0
|
||
|
WireConnection;87;1;72;0
|
||
|
WireConnection;155;0;153;0
|
||
|
WireConnection;98;0;79;0
|
||
|
WireConnection;98;1;80;2
|
||
|
WireConnection;93;0;86;0
|
||
|
WireConnection;93;1;85;0
|
||
|
WireConnection;157;0;155;0
|
||
|
WireConnection;174;0;171;0
|
||
|
WireConnection;174;2;172;0
|
||
|
WireConnection;174;1;173;0
|
||
|
WireConnection;128;0;127;0
|
||
|
WireConnection;158;0;154;0
|
||
|
WireConnection;90;0;87;0
|
||
|
WireConnection;90;1;78;0
|
||
|
WireConnection;159;0;157;0
|
||
|
WireConnection;181;0;144;0
|
||
|
WireConnection;181;1;182;0
|
||
|
WireConnection;160;0;158;0
|
||
|
WireConnection;106;0;98;0
|
||
|
WireConnection;106;1;95;0
|
||
|
WireConnection;175;1;174;0
|
||
|
WireConnection;100;0;90;0
|
||
|
WireConnection;100;1;93;0
|
||
|
WireConnection;100;2;94;0
|
||
|
WireConnection;130;0;129;0
|
||
|
WireConnection;161;0;160;0
|
||
|
WireConnection;176;0;144;0
|
||
|
WireConnection;176;1;181;0
|
||
|
WireConnection;176;2;175;1
|
||
|
WireConnection;107;0;104;0
|
||
|
WireConnection;107;1;100;0
|
||
|
WireConnection;107;2;106;0
|
||
|
WireConnection;185;0;176;0
|
||
|
WireConnection;164;0;130;0
|
||
|
WireConnection;164;1;162;0
|
||
|
WireConnection;191;0;189;4
|
||
|
WireConnection;191;1;107;0
|
||
|
WireConnection;111;0;191;0
|
||
|
WireConnection;132;0;129;0
|
||
|
WireConnection;165;0;164;0
|
||
|
WireConnection;165;1;163;0
|
||
|
WireConnection;133;0;129;0
|
||
|
WireConnection;148;0;186;0
|
||
|
WireConnection;148;1;132;0
|
||
|
WireConnection;192;1;130;0
|
||
|
WireConnection;192;0;165;0
|
||
|
WireConnection;0;0;148;0
|
||
|
WireConnection;0;4;118;0
|
||
|
WireConnection;0;9;192;0
|
||
|
WireConnection;0;11;117;0
|
||
|
ASEEND*/
|
||
|
//CHKSM=9B5756BA85A622892581AE1540BA6E0B84B8DFD3
|