2025-07-25 15:29:14 +05:00

455 lines
31 KiB
Plaintext

// Made with Amplify Shader Editor v1.9.2
// Available at the Unity Asset Store - http://u3d.as/y3X
Shader "Polyart/Dreamscape CliffAuto"
{
Properties
{
_StoneDirtSharpness("Stone Dirt Sharpness", Float) = 0
_StoneDirtBias("Stone Dirt Bias", Float) = 0
_GrassSharpness("Grass Sharpness", Float) = 0
_GrassBias("Grass Bias", Float) = 0
_Normal("Normal", Range( 0 , 2)) = 1
_SmoothnessMultiplier("Smoothness Multiplier", Range( -2 , 2)) = 1
_StoneColor("Stone Color", 2D) = "white" {}
_GrassColour("Grass Colour", 2D) = "white" {}
_GrassSmooth("Grass Smooth", 2D) = "white" {}
_GrassNormal("Grass Normal", 2D) = "bump" {}
_DirtColor("Dirt Color", 2D) = "white" {}
_DirtNormal("Dirt Normal", 2D) = "bump" {}
_StoneSmooth("Stone Smooth", 2D) = "white" {}
_DirtSmooth("Dirt Smooth", 2D) = "white" {}
_StoneNormal("Stone Normal", 2D) = "bump" {}
_CliffTiling("Cliff Tiling", Vector) = (1,1,0,0)
_Tiling("Tiling", Vector) = (1,1,0,0)
_GrassTint("Grass Tint", Color) = (1,1,1,0)
[HideInInspector] __dirty( "", Int ) = 1
}
SubShader
{
Tags{ "RenderType" = "Opaque" "Queue" = "Geometry+0" }
Cull Back
CGINCLUDE
#include "UnityStandardUtils.cginc"
#include "UnityPBSLighting.cginc"
#include "Lighting.cginc"
#pragma target 3.5
#ifdef UNITY_PASS_SHADOWCASTER
#undef INTERNAL_DATA
#undef WorldReflectionVector
#undef WorldNormalVector
#define INTERNAL_DATA half3 internalSurfaceTtoW0; half3 internalSurfaceTtoW1; half3 internalSurfaceTtoW2;
#define WorldReflectionVector(data,normal) reflect (data.worldRefl, half3(dot(data.internalSurfaceTtoW0,normal), dot(data.internalSurfaceTtoW1,normal), dot(data.internalSurfaceTtoW2,normal)))
#define WorldNormalVector(data,normal) half3(dot(data.internalSurfaceTtoW0,normal), dot(data.internalSurfaceTtoW1,normal), dot(data.internalSurfaceTtoW2,normal))
#endif
struct Input
{
float3 worldPos;
float3 worldNormal;
INTERNAL_DATA
};
uniform sampler2D _StoneNormal;
uniform float2 _CliffTiling;
uniform sampler2D _DirtNormal;
uniform float2 _Tiling;
uniform float _StoneDirtSharpness;
uniform float _StoneDirtBias;
uniform sampler2D _GrassNormal;
uniform float _GrassSharpness;
uniform float _GrassBias;
uniform float _Normal;
uniform sampler2D _StoneColor;
uniform sampler2D _DirtColor;
uniform float4 _GrassTint;
uniform sampler2D _GrassColour;
uniform sampler2D _StoneSmooth;
uniform sampler2D _DirtSmooth;
uniform sampler2D _GrassSmooth;
uniform float _SmoothnessMultiplier;
inline float4 TriplanarSampling193( sampler2D topTexMap, float3 worldPos, float3 worldNormal, float falloff, float2 tiling, float3 normalScale, float3 index )
{
float3 projNormal = ( pow( abs( worldNormal ), falloff ) );
projNormal /= ( projNormal.x + projNormal.y + projNormal.z ) + 0.00001;
float3 nsign = sign( worldNormal );
half4 xNorm; half4 yNorm; half4 zNorm;
xNorm = tex2D( topTexMap, tiling * worldPos.zy * float2( nsign.x, 1.0 ) );
yNorm = tex2D( topTexMap, tiling * worldPos.xz * float2( nsign.y, 1.0 ) );
zNorm = tex2D( topTexMap, tiling * worldPos.xy * float2( -nsign.z, 1.0 ) );
return xNorm * projNormal.x + yNorm * projNormal.y + zNorm * projNormal.z;
}
inline float4 TriplanarSampling213( sampler2D topTexMap, float3 worldPos, float3 worldNormal, float falloff, float2 tiling, float3 normalScale, float3 index )
{
float3 projNormal = ( pow( abs( worldNormal ), falloff ) );
projNormal /= ( projNormal.x + projNormal.y + projNormal.z ) + 0.00001;
float3 nsign = sign( worldNormal );
half4 xNorm; half4 yNorm; half4 zNorm;
xNorm = tex2D( topTexMap, tiling * worldPos.zy * float2( nsign.x, 1.0 ) );
yNorm = tex2D( topTexMap, tiling * worldPos.xz * float2( nsign.y, 1.0 ) );
zNorm = tex2D( topTexMap, tiling * worldPos.xy * float2( -nsign.z, 1.0 ) );
return xNorm * projNormal.x + yNorm * projNormal.y + zNorm * projNormal.z;
}
inline float4 TriplanarSampling195( sampler2D topTexMap, float3 worldPos, float3 worldNormal, float falloff, float2 tiling, float3 normalScale, float3 index )
{
float3 projNormal = ( pow( abs( worldNormal ), falloff ) );
projNormal /= ( projNormal.x + projNormal.y + projNormal.z ) + 0.00001;
float3 nsign = sign( worldNormal );
half4 xNorm; half4 yNorm; half4 zNorm;
xNorm = tex2D( topTexMap, tiling * worldPos.zy * float2( nsign.x, 1.0 ) );
yNorm = tex2D( topTexMap, tiling * worldPos.xz * float2( nsign.y, 1.0 ) );
zNorm = tex2D( topTexMap, tiling * worldPos.xy * float2( -nsign.z, 1.0 ) );
return xNorm * projNormal.x + yNorm * projNormal.y + zNorm * projNormal.z;
}
inline float4 TriplanarSampling205( sampler2D topTexMap, float3 worldPos, float3 worldNormal, float falloff, float2 tiling, float3 normalScale, float3 index )
{
float3 projNormal = ( pow( abs( worldNormal ), falloff ) );
projNormal /= ( projNormal.x + projNormal.y + projNormal.z ) + 0.00001;
float3 nsign = sign( worldNormal );
half4 xNorm; half4 yNorm; half4 zNorm;
xNorm = tex2D( topTexMap, tiling * worldPos.zy * float2( nsign.x, 1.0 ) );
yNorm = tex2D( topTexMap, tiling * worldPos.xz * float2( nsign.y, 1.0 ) );
zNorm = tex2D( topTexMap, tiling * worldPos.xy * float2( -nsign.z, 1.0 ) );
return xNorm * projNormal.x + yNorm * projNormal.y + zNorm * projNormal.z;
}
inline float4 TriplanarSampling192( sampler2D topTexMap, float3 worldPos, float3 worldNormal, float falloff, float2 tiling, float3 normalScale, float3 index )
{
float3 projNormal = ( pow( abs( worldNormal ), falloff ) );
projNormal /= ( projNormal.x + projNormal.y + projNormal.z ) + 0.00001;
float3 nsign = sign( worldNormal );
half4 xNorm; half4 yNorm; half4 zNorm;
xNorm = tex2D( topTexMap, tiling * worldPos.zy * float2( nsign.x, 1.0 ) );
yNorm = tex2D( topTexMap, tiling * worldPos.xz * float2( nsign.y, 1.0 ) );
zNorm = tex2D( topTexMap, tiling * worldPos.xy * float2( -nsign.z, 1.0 ) );
return xNorm * projNormal.x + yNorm * projNormal.y + zNorm * projNormal.z;
}
inline float4 TriplanarSampling194( sampler2D topTexMap, float3 worldPos, float3 worldNormal, float falloff, float2 tiling, float3 normalScale, float3 index )
{
float3 projNormal = ( pow( abs( worldNormal ), falloff ) );
projNormal /= ( projNormal.x + projNormal.y + projNormal.z ) + 0.00001;
float3 nsign = sign( worldNormal );
half4 xNorm; half4 yNorm; half4 zNorm;
xNorm = tex2D( topTexMap, tiling * worldPos.zy * float2( nsign.x, 1.0 ) );
yNorm = tex2D( topTexMap, tiling * worldPos.xz * float2( nsign.y, 1.0 ) );
zNorm = tex2D( topTexMap, tiling * worldPos.xy * float2( -nsign.z, 1.0 ) );
return xNorm * projNormal.x + yNorm * projNormal.y + zNorm * projNormal.z;
}
inline float4 TriplanarSampling201( sampler2D topTexMap, float3 worldPos, float3 worldNormal, float falloff, float2 tiling, float3 normalScale, float3 index )
{
float3 projNormal = ( pow( abs( worldNormal ), falloff ) );
projNormal /= ( projNormal.x + projNormal.y + projNormal.z ) + 0.00001;
float3 nsign = sign( worldNormal );
half4 xNorm; half4 yNorm; half4 zNorm;
xNorm = tex2D( topTexMap, tiling * worldPos.zy * float2( nsign.x, 1.0 ) );
yNorm = tex2D( topTexMap, tiling * worldPos.xz * float2( nsign.y, 1.0 ) );
zNorm = tex2D( topTexMap, tiling * worldPos.xy * float2( -nsign.z, 1.0 ) );
return xNorm * projNormal.x + yNorm * projNormal.y + zNorm * projNormal.z;
}
inline float4 TriplanarSampling216( sampler2D topTexMap, float3 worldPos, float3 worldNormal, float falloff, float2 tiling, float3 normalScale, float3 index )
{
float3 projNormal = ( pow( abs( worldNormal ), falloff ) );
projNormal /= ( projNormal.x + projNormal.y + projNormal.z ) + 0.00001;
float3 nsign = sign( worldNormal );
half4 xNorm; half4 yNorm; half4 zNorm;
xNorm = tex2D( topTexMap, tiling * worldPos.zy * float2( nsign.x, 1.0 ) );
yNorm = tex2D( topTexMap, tiling * worldPos.xz * float2( nsign.y, 1.0 ) );
zNorm = tex2D( topTexMap, tiling * worldPos.xy * float2( -nsign.z, 1.0 ) );
return xNorm * projNormal.x + yNorm * projNormal.y + zNorm * projNormal.z;
}
inline float4 TriplanarSampling217( sampler2D topTexMap, float3 worldPos, float3 worldNormal, float falloff, float2 tiling, float3 normalScale, float3 index )
{
float3 projNormal = ( pow( abs( worldNormal ), falloff ) );
projNormal /= ( projNormal.x + projNormal.y + projNormal.z ) + 0.00001;
float3 nsign = sign( worldNormal );
half4 xNorm; half4 yNorm; half4 zNorm;
xNorm = tex2D( topTexMap, tiling * worldPos.zy * float2( nsign.x, 1.0 ) );
yNorm = tex2D( topTexMap, tiling * worldPos.xz * float2( nsign.y, 1.0 ) );
zNorm = tex2D( topTexMap, tiling * worldPos.xy * float2( -nsign.z, 1.0 ) );
return xNorm * projNormal.x + yNorm * projNormal.y + zNorm * projNormal.z;
}
inline float4 TriplanarSampling207( sampler2D topTexMap, float3 worldPos, float3 worldNormal, float falloff, float2 tiling, float3 normalScale, float3 index )
{
float3 projNormal = ( pow( abs( worldNormal ), falloff ) );
projNormal /= ( projNormal.x + projNormal.y + projNormal.z ) + 0.00001;
float3 nsign = sign( worldNormal );
half4 xNorm; half4 yNorm; half4 zNorm;
xNorm = tex2D( topTexMap, tiling * worldPos.zy * float2( nsign.x, 1.0 ) );
yNorm = tex2D( topTexMap, tiling * worldPos.xz * float2( nsign.y, 1.0 ) );
zNorm = tex2D( topTexMap, tiling * worldPos.xy * float2( -nsign.z, 1.0 ) );
return xNorm * projNormal.x + yNorm * projNormal.y + zNorm * projNormal.z;
}
void surf( Input i , inout SurfaceOutputStandard o )
{
float2 vCliffTiling197 = ( _CliffTiling / float2( 10,10 ) );
float3 ase_worldPos = i.worldPos;
float3 ase_worldNormal = WorldNormalVector( i, float3( 0, 0, 1 ) );
float4 triplanar193 = TriplanarSampling193( _StoneNormal, ase_worldPos, ase_worldNormal, 1.0, vCliffTiling197, 1.0, 0 );
float4 triplanar213 = TriplanarSampling213( _DirtNormal, ase_worldPos, ase_worldNormal, 1.0, vCliffTiling197, 1.0, 0 );
float2 VTiling220 = ( _Tiling / float2( 10,10 ) );
float4 triplanar195 = TriplanarSampling195( _DirtNormal, ase_worldPos, ase_worldNormal, 1.0, VTiling220, 1.0, 0 );
float3 normalizeResult58_g125 = normalize( float3(0,1,0) );
float dotResult57_g125 = dot( normalize( (WorldNormalVector( i , UnpackNormal( triplanar195 ) )) ) , normalizeResult58_g125 );
float temp_output_67_0_g125 = _StoneDirtSharpness;
float temp_output_68_0_g125 = _StoneDirtBias;
float clampResult66_g125 = clamp( ( ( ( ( dotResult57_g125 * 0.5 ) + 0.5 ) * temp_output_67_0_g125 ) + ( temp_output_68_0_g125 - ( temp_output_67_0_g125 * 0.5 ) ) ) , 0.0 , 1.0 );
float temp_output_60_55 = clampResult66_g125;
float4 lerpResult47 = lerp( triplanar193 , triplanar213 , temp_output_60_55);
float4 vStoneDirtNormal72 = lerpResult47;
float4 triplanar205 = TriplanarSampling205( _GrassNormal, ase_worldPos, ase_worldNormal, 1.0, VTiling220, 1.0, 0 );
float3 ase_normWorldNormal = normalize( ase_worldNormal );
float3 normalizeResult44_g126 = normalize( float3(0,1,0) );
float dotResult45_g126 = dot( ase_normWorldNormal , normalizeResult44_g126 );
float temp_output_67_0_g126 = _GrassSharpness;
float temp_output_68_0_g126 = _GrassBias;
float clampResult41_g126 = clamp( ( ( ( ( dotResult45_g126 * 0.5 ) + 0.5 ) * temp_output_67_0_g126 ) + ( temp_output_68_0_g126 - ( temp_output_67_0_g126 * 0.5 ) ) ) , 0.0 , 1.0 );
float temp_output_57_25 = clampResult41_g126;
float4 lerpResult88 = lerp( vStoneDirtNormal72 , triplanar205 , temp_output_57_25);
o.Normal = UnpackScaleNormal( lerpResult88, _Normal );
float4 triplanar192 = TriplanarSampling192( _StoneColor, ase_worldPos, ase_worldNormal, 1.0, vCliffTiling197, 1.0, 0 );
float4 triplanar194 = TriplanarSampling194( _DirtColor, ase_worldPos, ase_worldNormal, 1.0, VTiling220, 1.0, 0 );
float4 lerpResult54 = lerp( triplanar192 , triplanar194 , temp_output_60_55);
float4 vStoneDirtColor61 = lerpResult54;
float4 triplanar201 = TriplanarSampling201( _GrassColour, ase_worldPos, ase_worldNormal, 1.0, VTiling220, 1.0, 0 );
float4 lerpResult34 = lerp( vStoneDirtColor61 , ( _GrassTint * triplanar201 ) , temp_output_57_25);
o.Albedo = lerpResult34.rgb;
float4 triplanar216 = TriplanarSampling216( _StoneSmooth, ase_worldPos, ase_worldNormal, 1.0, vCliffTiling197, 1.0, 0 );
float4 triplanar217 = TriplanarSampling217( _DirtSmooth, ase_worldPos, ase_worldNormal, 1.0, vCliffTiling197, 1.0, 0 );
float4 lerpResult81 = lerp( triplanar216 , triplanar217 , temp_output_60_55);
float4 vStoneDirtSmooth82 = lerpResult81;
float4 triplanar207 = TriplanarSampling207( _GrassSmooth, ase_worldPos, ase_worldNormal, 1.0, VTiling220, 1.0, 0 );
float4 lerpResult210 = lerp( vStoneDirtSmooth82 , triplanar207 , float4( 0,0,0,0 ));
o.Smoothness = ( ( 1.0 - lerpResult210 ) * _SmoothnessMultiplier ).x;
o.Alpha = 1;
}
ENDCG
CGPROGRAM
#pragma surface surf Standard keepalpha fullforwardshadows
ENDCG
Pass
{
Name "ShadowCaster"
Tags{ "LightMode" = "ShadowCaster" }
ZWrite On
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma target 3.5
#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;
float4 tSpace0 : TEXCOORD1;
float4 tSpace1 : TEXCOORD2;
float4 tSpace2 : 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 );
float3 worldPos = mul( unity_ObjectToWorld, v.vertex ).xyz;
half3 worldNormal = UnityObjectToWorldNormal( v.normal );
half3 worldTangent = UnityObjectToWorldDir( v.tangent.xyz );
half tangentSign = v.tangent.w * unity_WorldTransformParams.w;
half3 worldBinormal = cross( worldNormal, worldTangent ) * tangentSign;
o.tSpace0 = float4( worldTangent.x, worldBinormal.x, worldNormal.x, worldPos.x );
o.tSpace1 = float4( worldTangent.y, worldBinormal.y, worldNormal.y, worldPos.y );
o.tSpace2 = float4( worldTangent.z, worldBinormal.z, worldNormal.z, worldPos.z );
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 );
float3 worldPos = float3( IN.tSpace0.w, IN.tSpace1.w, IN.tSpace2.w );
half3 worldViewDir = normalize( UnityWorldSpaceViewDir( worldPos ) );
surfIN.worldPos = worldPos;
surfIN.worldNormal = float3( IN.tSpace0.z, IN.tSpace1.z, IN.tSpace2.z );
surfIN.internalSurfaceTtoW0 = IN.tSpace0.xyz;
surfIN.internalSurfaceTtoW1 = IN.tSpace1.xyz;
surfIN.internalSurfaceTtoW2 = IN.tSpace2.xyz;
SurfaceOutputStandard o;
UNITY_INITIALIZE_OUTPUT( SurfaceOutputStandard, 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.Vector2Node;218;-6017.847,-1248.075;Inherit;False;Property;_Tiling;Tiling;16;0;Create;True;0;0;0;False;0;False;1,1;0,0;0;3;FLOAT2;0;FLOAT;1;FLOAT;2
Node;AmplifyShaderEditor.SimpleDivideOpNode;219;-5827.226,-1243.348;Inherit;False;2;0;FLOAT2;0,0;False;1;FLOAT2;10,10;False;1;FLOAT2;0
Node;AmplifyShaderEditor.RegisterLocalVarNode;220;-5665.847,-1250.075;Inherit;False;VTiling;-1;True;1;0;FLOAT2;0,0;False;1;FLOAT2;0
Node;AmplifyShaderEditor.Vector2Node;196;-6016.07,-1408.874;Inherit;False;Property;_CliffTiling;Cliff Tiling;15;0;Create;True;0;0;0;False;0;False;1,1;0,0;0;3;FLOAT2;0;FLOAT;1;FLOAT;2
Node;AmplifyShaderEditor.GetLocalVarNode;200;-4980.431,-1230.21;Inherit;False;220;VTiling;1;0;OBJECT;;False;1;FLOAT2;0
Node;AmplifyShaderEditor.SimpleDivideOpNode;199;-5824.448,-1403.147;Inherit;False;2;0;FLOAT2;0,0;False;1;FLOAT2;10,10;False;1;FLOAT2;0
Node;AmplifyShaderEditor.TexturePropertyNode;62;-5026.395,-1419.566;Inherit;True;Property;_DirtNormal;Dirt Normal;11;0;Create;True;0;0;0;False;0;False;None;None;False;bump;Auto;Texture2D;-1;0;2;SAMPLER2D;0;SAMPLERSTATE;1
Node;AmplifyShaderEditor.TriplanarNode;195;-4651.269,-1414.969;Inherit;True;Spherical;World;False;Top Texture 3;_TopTexture3;white;-1;None;Mid Texture 3;_MidTexture3;white;-1;None;Bot Texture 3;_BotTexture3;white;-1;None;Triplanar Sampler;Tangent;10;0;SAMPLER2D;;False;5;FLOAT;1;False;1;SAMPLER2D;;False;6;FLOAT;0;False;2;SAMPLER2D;;False;7;FLOAT;0;False;9;FLOAT3;0,0,0;False;8;FLOAT;1;False;3;FLOAT2;1,1;False;4;FLOAT;1;False;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.RegisterLocalVarNode;197;-5663.07,-1409.874;Inherit;False;vCliffTiling;-1;True;1;0;FLOAT2;0,0;False;1;FLOAT2;0
Node;AmplifyShaderEditor.TexturePropertyNode;74;-4042.076,-642.3586;Inherit;True;Property;_StoneSmooth;Stone Smooth;12;0;Create;True;0;0;0;False;0;False;None;None;False;white;Auto;Texture2D;-1;0;2;SAMPLER2D;0;SAMPLERSTATE;1
Node;AmplifyShaderEditor.TexturePropertyNode;73;-4044.988,-385.8292;Inherit;True;Property;_DirtSmooth;Dirt Smooth;13;0;Create;True;0;0;0;False;0;False;None;None;False;white;Auto;Texture2D;-1;0;2;SAMPLER2D;0;SAMPLERSTATE;1
Node;AmplifyShaderEditor.UnpackScaleNormalNode;64;-4251.296,-1414.198;Inherit;False;Tangent;2;0;FLOAT4;0,0,0,0;False;1;FLOAT;1;False;4;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3
Node;AmplifyShaderEditor.RangedFloatNode;29;-4257.382,-1585.781;Inherit;False;Property;_StoneDirtSharpness;Stone Dirt Sharpness;0;0;Create;True;0;0;0;False;0;False;0;0;0;0;0;1;FLOAT;0
Node;AmplifyShaderEditor.GetLocalVarNode;212;-3992.793,-770.3837;Inherit;False;197;vCliffTiling;1;0;OBJECT;;False;1;FLOAT2;0
Node;AmplifyShaderEditor.RangedFloatNode;30;-4213.733,-1511.15;Inherit;False;Property;_StoneDirtBias;Stone Dirt Bias;1;0;Create;True;0;0;0;False;0;False;0;0;0;0;0;1;FLOAT;0
Node;AmplifyShaderEditor.GetLocalVarNode;222;-3992.419,-888.0977;Inherit;False;197;vCliffTiling;1;0;OBJECT;;False;1;FLOAT2;0
Node;AmplifyShaderEditor.WireNode;214;-4347.016,-1017.463;Inherit;False;1;0;SAMPLER2D;;False;1;SAMPLER2D;0
Node;AmplifyShaderEditor.FunctionNode;60;-3832.638,-1607.276;Inherit;False;PolyartWorldAlignedBlend;-1;;125;2c0b2e018c1710b44867976bd3691e95;0;3;1;FLOAT3;0,0,1;False;67;FLOAT;1;False;68;FLOAT;-1;False;2;FLOAT;25;FLOAT;55
Node;AmplifyShaderEditor.TriplanarNode;217;-3645.914,-377.8295;Inherit;True;Spherical;World;False;Top Texture 9;_TopTexture9;white;-1;None;Mid Texture 9;_MidTexture9;white;-1;None;Bot Texture 9;_BotTexture9;white;-1;None;Triplanar Sampler;World;10;0;SAMPLER2D;;False;5;FLOAT;1;False;1;SAMPLER2D;;False;6;FLOAT;0;False;2;SAMPLER2D;;False;7;FLOAT;0;False;9;FLOAT3;0,0,0;False;8;FLOAT;1;False;3;FLOAT2;1,1;False;4;FLOAT;1;False;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.TexturePropertyNode;68;-4021.483,-1211.884;Inherit;True;Property;_StoneNormal;Stone Normal;14;0;Create;True;0;0;0;False;0;False;None;None;False;bump;Auto;Texture2D;-1;0;2;SAMPLER2D;0;SAMPLERSTATE;1
Node;AmplifyShaderEditor.TriplanarNode;216;-3645.813,-636.1625;Inherit;True;Spherical;World;False;Top Texture 8;_TopTexture8;white;-1;None;Mid Texture 8;_MidTexture8;white;-1;None;Bot Texture 8;_BotTexture8;white;-1;None;Triplanar Sampler;World;10;0;SAMPLER2D;;False;5;FLOAT;1;False;1;SAMPLER2D;;False;6;FLOAT;0;False;2;SAMPLER2D;;False;7;FLOAT;0;False;9;FLOAT3;0,0,0;False;8;FLOAT;1;False;3;FLOAT2;1,1;False;4;FLOAT;1;False;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.GetLocalVarNode;198;-4025.171,-1723.974;Inherit;False;220;VTiling;1;0;OBJECT;;False;1;FLOAT2;0
Node;AmplifyShaderEditor.TexturePropertyNode;55;-4245.437,-1804.354;Inherit;True;Property;_DirtColor;Dirt Color;10;0;Create;True;0;0;0;False;0;False;None;None;False;white;Auto;Texture2D;-1;0;2;SAMPLER2D;0;SAMPLERSTATE;1
Node;AmplifyShaderEditor.TriplanarNode;213;-3652.016,-932.4634;Inherit;True;Spherical;World;False;Top Texture 7;_TopTexture7;white;-1;None;Mid Texture 7;_MidTexture7;white;-1;None;Bot Texture 7;_BotTexture7;white;-1;None;Triplanar Sampler;World;10;0;SAMPLER2D;;False;5;FLOAT;1;False;1;SAMPLER2D;;False;6;FLOAT;0;False;2;SAMPLER2D;;False;7;FLOAT;0;False;9;FLOAT3;0,0,0;False;8;FLOAT;1;False;3;FLOAT2;1,1;False;4;FLOAT;1;False;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.TriplanarNode;193;-3646.153,-1192.041;Inherit;True;Spherical;World;False;Top Texture 1;_TopTexture1;white;-1;None;Mid Texture 1;_MidTexture1;white;-1;None;Bot Texture 1;_BotTexture1;white;-1;None;Triplanar Sampler;World;10;0;SAMPLER2D;;False;5;FLOAT;1;False;1;SAMPLER2D;;False;6;FLOAT;0;False;2;SAMPLER2D;;False;7;FLOAT;0;False;9;FLOAT3;0,0,0;False;8;FLOAT;1;False;3;FLOAT2;1,1;False;4;FLOAT;1;False;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.TexturePropertyNode;52;-4247.629,-2037.299;Inherit;True;Property;_StoneColor;Stone Color;6;0;Create;True;0;0;0;False;0;False;None;None;False;white;Auto;Texture2D;-1;0;2;SAMPLER2D;0;SAMPLERSTATE;1
Node;AmplifyShaderEditor.GetLocalVarNode;221;-4024.419,-1965.098;Inherit;False;197;vCliffTiling;1;0;OBJECT;;False;1;FLOAT2;0
Node;AmplifyShaderEditor.LerpOp;81;-2991.711,-403.5161;Inherit;False;3;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0,0,0,0;False;2;FLOAT;0;False;1;FLOAT4;0
Node;AmplifyShaderEditor.LerpOp;47;-2904.657,-960.169;Inherit;False;3;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0,0,0,0;False;2;FLOAT;0;False;1;FLOAT4;0
Node;AmplifyShaderEditor.GetLocalVarNode;209;-2110.257,-308.9713;Inherit;False;220;VTiling;1;0;OBJECT;;False;1;FLOAT2;0
Node;AmplifyShaderEditor.TexturePropertyNode;208;-2156.037,-495.675;Inherit;True;Property;_GrassSmooth;Grass Smooth;8;0;Create;True;0;0;0;False;0;False;None;None;False;white;Auto;Texture2D;-1;0;2;SAMPLER2D;0;SAMPLERSTATE;1
Node;AmplifyShaderEditor.RegisterLocalVarNode;203;-3920.979,-1422.281;Inherit;False;vExplicitNormal;-1;True;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0
Node;AmplifyShaderEditor.RegisterLocalVarNode;82;-2742.754,-408.824;Inherit;False;vStoneDirtSmooth;-1;True;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0
Node;AmplifyShaderEditor.TriplanarNode;194;-3779.896,-1799.598;Inherit;True;Spherical;World;False;Top Texture 2;_TopTexture2;white;-1;None;Mid Texture 2;_MidTexture2;white;-1;None;Bot Texture 2;_BotTexture2;white;-1;None;Triplanar Sampler;Tangent;10;0;SAMPLER2D;;False;5;FLOAT;1;False;1;SAMPLER2D;;False;6;FLOAT;0;False;2;SAMPLER2D;;False;7;FLOAT;0;False;9;FLOAT3;0,0,0;False;8;FLOAT;1;False;3;FLOAT2;1,1;False;4;FLOAT;1;False;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.TriplanarNode;192;-3797.596,-2006.801;Inherit;True;Spherical;World;False;Top Texture 0;_TopTexture0;white;-1;None;Mid Texture 0;_MidTexture0;white;-1;None;Bot Texture 0;_BotTexture0;white;-1;None;Triplanar Sampler;Tangent;10;0;SAMPLER2D;;False;5;FLOAT;1;False;1;SAMPLER2D;;False;6;FLOAT;0;False;2;SAMPLER2D;;False;7;FLOAT;0;False;9;FLOAT3;0,0,0;False;8;FLOAT;1;False;3;FLOAT2;1,1;False;4;FLOAT;1;False;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.GetLocalVarNode;206;-2258.376,-914.1042;Inherit;False;220;VTiling;1;0;OBJECT;;False;1;FLOAT2;0
Node;AmplifyShaderEditor.TexturePropertyNode;86;-2300.155,-1100.808;Inherit;True;Property;_GrassNormal;Grass Normal;9;0;Create;True;0;0;0;False;0;False;None;None;False;bump;Auto;Texture2D;-1;0;2;SAMPLER2D;0;SAMPLERSTATE;1
Node;AmplifyShaderEditor.LerpOp;54;-3267.842,-1738.268;Inherit;False;3;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0,0,0,0;False;2;FLOAT;0;False;1;FLOAT4;0
Node;AmplifyShaderEditor.GetLocalVarNode;211;-1701.599,-596.4031;Inherit;False;82;vStoneDirtSmooth;1;0;OBJECT;;False;1;FLOAT4;0
Node;AmplifyShaderEditor.RangedFloatNode;36;-2492.051,-1333.158;Inherit;False;Property;_GrassSharpness;Grass Sharpness;2;0;Create;True;0;0;0;False;0;False;0;0;0;0;0;1;FLOAT;0
Node;AmplifyShaderEditor.TexturePropertyNode;84;-2327.3,-1720.301;Inherit;True;Property;_GrassColour;Grass Colour;7;0;Create;True;0;0;0;False;0;False;None;None;False;white;Auto;Texture2D;-1;0;2;SAMPLER2D;0;SAMPLERSTATE;1
Node;AmplifyShaderEditor.RangedFloatNode;37;-2448.885,-1251.239;Inherit;False;Property;_GrassBias;Grass Bias;3;0;Create;True;0;0;0;False;0;False;0;0;0;0;0;1;FLOAT;0
Node;AmplifyShaderEditor.GetLocalVarNode;204;-2511.491,-1416.254;Inherit;False;203;vExplicitNormal;1;0;OBJECT;;False;1;FLOAT3;0
Node;AmplifyShaderEditor.RegisterLocalVarNode;72;-2633.105,-965.6179;Inherit;False;vStoneDirtNormal;-1;True;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0
Node;AmplifyShaderEditor.TriplanarNode;207;-1852.257,-489.9711;Inherit;True;Spherical;World;False;Top Texture 6;_TopTexture6;white;-1;None;Mid Texture 6;_MidTexture6;white;-1;None;Bot Texture 6;_BotTexture6;white;-1;None;Triplanar Sampler;Tangent;10;0;SAMPLER2D;;False;5;FLOAT;1;False;1;SAMPLER2D;;False;6;FLOAT;0;False;2;SAMPLER2D;;False;7;FLOAT;0;False;9;FLOAT3;0,0,0;False;8;FLOAT;1;False;3;FLOAT2;1,1;False;4;FLOAT;1;False;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.GetLocalVarNode;202;-2284.645,-1532.123;Inherit;False;220;VTiling;1;0;OBJECT;;False;1;FLOAT2;0
Node;AmplifyShaderEditor.LerpOp;210;-1382.464,-591.0471;Inherit;False;3;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0,0,0,0;False;2;FLOAT4;0,0,0,0;False;1;FLOAT4;0
Node;AmplifyShaderEditor.GetLocalVarNode;89;-1848.718,-1201.536;Inherit;False;72;vStoneDirtNormal;1;0;OBJECT;;False;1;FLOAT4;0
Node;AmplifyShaderEditor.TriplanarNode;205;-2000.376,-1095.104;Inherit;True;Spherical;World;False;Top Texture 5;_TopTexture5;white;-1;None;Mid Texture 5;_MidTexture5;white;-1;None;Bot Texture 5;_BotTexture5;white;-1;None;Triplanar Sampler;Tangent;10;0;SAMPLER2D;;False;5;FLOAT;1;False;1;SAMPLER2D;;False;6;FLOAT;0;False;2;SAMPLER2D;;False;7;FLOAT;0;False;9;FLOAT3;0,0,0;False;8;FLOAT;1;False;3;FLOAT2;1,1;False;4;FLOAT;1;False;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.FunctionNode;57;-2069.045,-1408.43;Inherit;False;PolyartWorldAlignedBlend;-1;;126;2c0b2e018c1710b44867976bd3691e95;0;3;1;FLOAT3;0,0,1;False;67;FLOAT;1;False;68;FLOAT;-1;False;2;FLOAT;25;FLOAT;55
Node;AmplifyShaderEditor.RegisterLocalVarNode;61;-3066.32,-1742.408;Inherit;False;vStoneDirtColor;-1;True;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0
Node;AmplifyShaderEditor.TriplanarNode;201;-2029.786,-1717.117;Inherit;True;Spherical;World;False;Top Texture 4;_TopTexture4;white;-1;None;Mid Texture 4;_MidTexture4;white;-1;None;Bot Texture 4;_BotTexture4;white;-1;None;Triplanar Sampler;Tangent;10;0;SAMPLER2D;;False;5;FLOAT;1;False;1;SAMPLER2D;;False;6;FLOAT;0;False;2;SAMPLER2D;;False;7;FLOAT;0;False;9;FLOAT3;0,0,0;False;8;FLOAT;1;False;3;FLOAT2;1,1;False;4;FLOAT;1;False;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.ColorNode;224;-1968.289,-1959.626;Inherit;False;Property;_GrassTint;Grass Tint;17;0;Create;True;0;0;0;False;0;False;1,1,1,0;0,0,0,0;True;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;223;-1557.289,-1715.626;Inherit;False;2;2;0;COLOR;0,0,0,0;False;1;FLOAT4;0,0,0,0;False;1;COLOR;0
Node;AmplifyShaderEditor.RangedFloatNode;40;-1605.404,-1045.721;Inherit;False;Property;_Normal;Normal;4;0;Create;True;0;0;0;False;0;False;1;0;0;2;0;1;FLOAT;0
Node;AmplifyShaderEditor.LerpOp;88;-1467.582,-1194.18;Inherit;False;3;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0,0,0,0;False;2;FLOAT;0;False;1;FLOAT4;0
Node;AmplifyShaderEditor.OneMinusNode;45;-1230.621,-595.3173;Inherit;False;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0
Node;AmplifyShaderEditor.GetLocalVarNode;85;-1418.652,-1800.492;Inherit;False;61;vStoneDirtColor;1;0;OBJECT;;False;1;FLOAT4;0
Node;AmplifyShaderEditor.RangedFloatNode;43;-1377.145,-464.3606;Inherit;False;Property;_SmoothnessMultiplier;Smoothness Multiplier;5;0;Create;True;0;0;0;False;0;False;1;0;-2;2;0;1;FLOAT;0
Node;AmplifyShaderEditor.LerpOp;34;-1023.738,-1742.8;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.UnpackScaleNormalNode;90;-1272.748,-1194.18;Inherit;False;Tangent;2;0;FLOAT4;0,0,0,0;False;1;FLOAT;1;False;4;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;44;-1069.677,-597.2112;Inherit;True;2;2;0;FLOAT4;0,0,0,0;False;1;FLOAT;0;False;1;FLOAT4;0
Node;AmplifyShaderEditor.StandardSurfaceOutputNode;0;-695.7205,-1222.164;Float;False;True;-1;3;;0;0;Standard;Polyart/Dreamscape CliffAuto;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;Back;0;False;;0;False;;False;0;False;;0;False;;False;0;Opaque;0.5;True;True;0;False;Opaque;;Geometry;All;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;False;0;0;False;;-1;0;False;;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;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;219;0;218;0
WireConnection;220;0;219;0
WireConnection;199;0;196;0
WireConnection;195;0;62;0
WireConnection;195;3;200;0
WireConnection;197;0;199;0
WireConnection;64;0;195;0
WireConnection;214;0;62;0
WireConnection;60;1;64;0
WireConnection;60;67;29;0
WireConnection;60;68;30;0
WireConnection;217;0;73;0
WireConnection;217;3;212;0
WireConnection;216;0;74;0
WireConnection;216;3;222;0
WireConnection;213;0;214;0
WireConnection;213;3;212;0
WireConnection;193;0;68;0
WireConnection;193;3;222;0
WireConnection;81;0;216;0
WireConnection;81;1;217;0
WireConnection;81;2;60;55
WireConnection;47;0;193;0
WireConnection;47;1;213;0
WireConnection;47;2;60;55
WireConnection;203;0;64;0
WireConnection;82;0;81;0
WireConnection;194;0;55;0
WireConnection;194;3;198;0
WireConnection;192;0;52;0
WireConnection;192;3;221;0
WireConnection;54;0;192;0
WireConnection;54;1;194;0
WireConnection;54;2;60;55
WireConnection;72;0;47;0
WireConnection;207;0;208;0
WireConnection;207;3;209;0
WireConnection;210;0;211;0
WireConnection;210;1;207;0
WireConnection;205;0;86;0
WireConnection;205;3;206;0
WireConnection;57;1;204;0
WireConnection;57;67;36;0
WireConnection;57;68;37;0
WireConnection;61;0;54;0
WireConnection;201;0;84;0
WireConnection;201;3;202;0
WireConnection;223;0;224;0
WireConnection;223;1;201;0
WireConnection;88;0;89;0
WireConnection;88;1;205;0
WireConnection;88;2;57;25
WireConnection;45;0;210;0
WireConnection;34;0;85;0
WireConnection;34;1;223;0
WireConnection;34;2;57;25
WireConnection;90;0;88;0
WireConnection;90;1;40;0
WireConnection;44;0;45;0
WireConnection;44;1;43;0
WireConnection;0;0;34;0
WireConnection;0;1;90;0
WireConnection;0;4;44;0
ASEEND*/
//CHKSM=634005720B18050B46314FC9566DAD98AF029D89