﻿Shader "NatureManufacture/HDRP/Lit/Specular Top Cover"
{
    Properties
    {
        _BaseColor("Base Color", Color) = (1, 1, 1, 0)
        [NoScaleOffset]_BaseColorMap("Base Map(RGB)", 2D) = "white" {}
        [ToggleUI]_BaseUsePlanarUV("Base Use Planar UV", Float) = 0
        _BaseTilingOffset("Base Tiling and Offset", Vector) = (1, 1, 0, 0)
        _SpecularColor("Specular Color", Color) = (1, 1, 1, 0)
        [NoScaleOffset]_SpecularColorMap("Specular Map", 2D) = "white" {}
        [Normal][NoScaleOffset]_BaseNormalMap("Base Normal Map", 2D) = "bump" {}
        _BaseNormalScale("Base Normal Scale", Range(0, 8)) = 1
        [NoScaleOffset]_BaseMaskMap("Base Mask Map AO(G) SM(A)", 2D) = "white" {}
        _BaseAORemapMin("Base AO Remap Min", Range(0, 1)) = 0
        _BaseAORemapMax("Base AO Remap Max", Range(0, 1)) = 1
        _BaseSmoothnessRemapMin("Base Smoothness Remap Min", Range(0, 1)) = 0
        _BaseSmoothnessRemapMax("Base Smoothness Remap Max", Range(0, 1)) = 1
        [ToggleUI]_USEDYNAMICCOVERTSTATICMASKF("Use Dynamic Cover (T) Static Mask (F)", Float) = 1
        [NoScaleOffset]_CoverMaskA("Cover Mask (A)", 2D) = "white" {}
        _CoverMaskPower("Cover Mask Power", Range(0, 10)) = 1
        _Cover_Amount("Cover Amount", Range(0, 2)) = 2
        _Cover_Amount_Grow_Speed("Cover Amount Grow Speed", Range(0, 3)) = 3
        _Cover_Max_Angle("Cover Max Angle", Range(0.001, 90)) = 35
        _Cover_Min_Height("Cover Min Height", Float) = -10000
        _Cover_Min_Height_Blending("Cover Min Height Blending", Range(0, 500)) = 1
        _CoverBaseColor("Cover Base Color", Color) = (1, 1, 1, 0)
        [NoScaleOffset]_CoverBaseColorMap("Cover Base Map", 2D) = "white" {}
        [ToggleUI]_CoverUsePlanarUV("Cover Use Planar UV", Float) = 1
        _CoverTilingOffset("Cover Tiling Offset", Vector) = (1, 1, 0, 0)
        _CoverSpecularColor("Cover Specular Color", Color) = (1, 1, 1, 0)
        [NoScaleOffset]_CoverSpecularColorMap("Cover Specular Map", 2D) = "white" {}
        [Normal][NoScaleOffset]_CoverNormalMap("Cover Normal Map", 2D) = "bump" {}
        _CoverNormalScale("Cover Normal Scale", Range(0, 8)) = 1
        _CoverNormalBlendHardness("Cover Normal Blend Hardness", Range(0, 8)) = 1
        _CoverHardness("Cover Hardness", Range(0, 10)) = 5
        _CoverHeightMapMin("Cover Height Map Min", Float) = 0
        _CoverHeightMapMax("Cover Height Map Max", Float) = 1
        _CoverHeightMapOffset("Cover Height Map Offset", Float) = 0
        [NoScaleOffset]_CoverMaskMap("Cover Mask Map AO(G) H(B) SM(A)", 2D) = "white" {}
        _CoverAORemapMin("Cover AO Remap Min", Range(0, 1)) = 0
        _CoverAORemapMax("Cover AO Remap Max", Range(0, 1)) = 1
        _CoverSmoothnessRemapMin("Cover Smoothness Remap Min", Range(0, 1)) = 0
        _CoverSmoothnessRemapMax("Cover Smoothness Remap Max", Range(0, 1)) = 1
        [NoScaleOffset]_DetailMap("Detail Map Base (R) Ny(G) Sm(B) Nx(A)", 2D) = "white" {}
        _DetailTilingOffset("Detail Tiling Offset", Vector) = (1, 1, 0, 0)
        _DetailAlbedoScale("Detail Albedo Scale", Range(0, 2)) = 0
        _DetailNormalScale("Detail Normal Scale", Range(0, 2)) = 0
        _DetailSmoothnessScale("Detail Smoothness Scale", Range(0, 2)) = 0
        _WetColor("Wet Color Vertex(R)", Color) = (0.7735849, 0.7735849, 0.7735849, 0)
        _WetSmoothness("Wet Smoothness Vertex(R)", Range(0, 1)) = 1
        [HideInInspector]_EmissionColor("Color", Color) = (1, 1, 1, 1)
        [HideInInspector]_RenderQueueType("Float", Float) = 1
        [HideInInspector][ToggleUI]_AddPrecomputedVelocity("Boolean", Float) = 0
        [HideInInspector][ToggleUI]_DepthOffsetEnable("Boolean", Float) = 0
        [HideInInspector][ToggleUI]_ConservativeDepthOffsetEnable("Boolean", Float) = 0
        [HideInInspector][ToggleUI]_TransparentWritingMotionVec("Boolean", Float) = 0
        [HideInInspector][ToggleUI]_AlphaCutoffEnable("Boolean", Float) = 0
        [HideInInspector]_TransparentSortPriority("_TransparentSortPriority", Float) = 0
        [HideInInspector][ToggleUI]_UseShadowThreshold("Boolean", Float) = 0
        [HideInInspector][ToggleUI]_DoubleSidedEnable("Boolean", Float) = 0
        [HideInInspector][Enum(Flip, 0, Mirror, 1, None, 2)]_DoubleSidedNormalMode("Float", Float) = 2
        [HideInInspector]_DoubleSidedConstants("Vector4", Vector) = (1, 1, -1, 0)
        [HideInInspector][Enum(Auto, 0, On, 1, Off, 2)]_DoubleSidedGIMode("Float", Float) = 0
        [HideInInspector][ToggleUI]_TransparentDepthPrepassEnable("Boolean", Float) = 0
        [HideInInspector][ToggleUI]_TransparentDepthPostpassEnable("Boolean", Float) = 0
        [HideInInspector]_SurfaceType("Float", Float) = 0
        [HideInInspector]_BlendMode("Float", Float) = 0
        [HideInInspector]_SrcBlend("Float", Float) = 1
        [HideInInspector]_DstBlend("Float", Float) = 0
        [HideInInspector]_AlphaSrcBlend("Float", Float) = 1
        [HideInInspector]_AlphaDstBlend("Float", Float) = 0
        [HideInInspector][ToggleUI]_ZWrite("Boolean", Float) = 1
        [HideInInspector][ToggleUI]_TransparentZWrite("Boolean", Float) = 0
        [HideInInspector]_CullMode("Float", Float) = 2
        [HideInInspector][ToggleUI]_EnableFogOnTransparent("Boolean", Float) = 1
        [HideInInspector]_CullModeForward("Float", Float) = 2
        [HideInInspector][Enum(Front, 1, Back, 2)]_TransparentCullMode("Float", Float) = 2
        [HideInInspector][Enum(UnityEditor.Rendering.HighDefinition.OpaqueCullMode)]_OpaqueCullMode("Float", Float) = 2
        [HideInInspector]_ZTestDepthEqualForOpaque("Float", Int) = 3
        [HideInInspector][Enum(UnityEngine.Rendering.CompareFunction)]_ZTestTransparent("Float", Float) = 4
        [HideInInspector][ToggleUI]_TransparentBackfaceEnable("Boolean", Float) = 0
        [HideInInspector][ToggleUI]_RequireSplitLighting("Boolean", Float) = 0
        [HideInInspector][ToggleUI]_ReceivesSSR("Boolean", Float) = 1
        [HideInInspector][ToggleUI]_ReceivesSSRTransparent("Boolean", Float) = 0
        [HideInInspector][ToggleUI]_EnableBlendModePreserveSpecularLighting("Boolean", Float) = 1
        [HideInInspector][ToggleUI]_SupportDecals("Boolean", Float) = 1
        [HideInInspector]_StencilRef("Float", Int) = 0
        [HideInInspector]_StencilWriteMask("Float", Int) = 6
        [HideInInspector]_StencilRefDepth("Float", Int) = 8
        [HideInInspector]_StencilWriteMaskDepth("Float", Int) = 9
        [HideInInspector]_StencilRefMV("Float", Int) = 40
        [HideInInspector]_StencilWriteMaskMV("Float", Int) = 41
        [HideInInspector]_StencilRefDistortionVec("Float", Int) = 4
        [HideInInspector]_StencilWriteMaskDistortionVec("Float", Int) = 4
        [HideInInspector]_StencilWriteMaskGBuffer("Float", Int) = 15
        [HideInInspector]_StencilRefGBuffer("Float", Int) = 10
        [HideInInspector]_ZTestGBuffer("Float", Int) = 4
        [HideInInspector][ToggleUI]_RayTracing("Boolean", Float) = 0
        [HideInInspector][Enum(None, 0, Planar, 1, Sphere, 2, Thin, 3)]_RefractionModel("Float", Float) = 0
        [HideInInspector][NoScaleOffset]unity_Lightmaps("unity_Lightmaps", 2DArray) = "" {}
        [HideInInspector][NoScaleOffset]unity_LightmapsInd("unity_LightmapsInd", 2DArray) = "" {}
        [HideInInspector][NoScaleOffset]unity_ShadowMasks("unity_ShadowMasks", 2DArray) = "" {}
    }
    SubShader
    {
        Tags
        {
            "RenderPipeline"="HDRenderPipeline"
            "RenderType"="HDLitShader"
            "Queue"="Geometry+225"
            "DisableBatching"="LODFading"
            "ShaderGraphShader"="true"
            "ShaderGraphTargetId"="HDLitSubTarget"
        }
        Pass
        {
            Name "ShadowCaster"
            Tags
            {
                "LightMode" = "ShadowCaster"
            }
        
            // Render State
            Cull [_CullMode]
        ZWrite On
        ColorMask 0
        ZClip [_ZClip]
        
            // Debug
            // <None>
        
            // --------------------------------------------------
            // Pass
        
            HLSLPROGRAM
        
            // Pragmas
            #pragma multi_compile _ DOTS_INSTANCING_ON
        #pragma instancing_options renderinglayer
        #pragma target 4.5
        #pragma vertex Vert
        #pragma fragment Frag
        #pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal switch
        #pragma multi_compile_instancing
        
            // Keywords
            #pragma shader_feature _ _SURFACE_TYPE_TRANSPARENT
        #pragma shader_feature_local _ _DOUBLESIDED_ON
        #pragma shader_feature_local _ _ADD_PRECOMPUTED_VELOCITY
        #pragma shader_feature_local _ _TRANSPARENT_WRITES_MOTION_VEC
        #pragma shader_feature_local_fragment _ _ENABLE_FOG_ON_TRANSPARENT
        #pragma multi_compile _ LOD_FADE_CROSSFADE
        #pragma shader_feature_local_fragment _ _DISABLE_DECALS
        #pragma shader_feature_local_raytracing _ _DISABLE_DECALS
        #pragma shader_feature_local_fragment _ _DISABLE_SSR
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR
        #pragma shader_feature_local_fragment _ _DISABLE_SSR_TRANSPARENT
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR_TRANSPARENT
        #pragma shader_feature_local _ _REFRACTION_PLANE _REFRACTION_SPHERE _REFRACTION_THIN
            // GraphKeywords: <None>
        
            // For custom interpolators to inject a substruct definition before FragInputs definition,
            // allowing for FragInputs to capture CI's intended for ShaderGraph's SDI.
            struct CustomInterpolators
        {
        };
        #define USE_CUSTOMINTERP_SUBSTRUCT
        
        
        
            // TODO: Merge FragInputsVFX substruct with CustomInterpolators.
        	#ifdef HAVE_VFX_MODIFICATION
        	struct FragInputsVFX
            {
                /* WARNING: $splice Could not find named fragment 'FragInputsVFX' */
            };
            #endif
        
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/GeometricTools.hlsl" // Required by Tessellation.hlsl
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Tessellation.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl" // Required to be include before we include properties as it define DECLARE_STACK_CB
            // Always include Shader Graph version
            // Always include last to avoid double macros
            #include "Packages/com.unity.shadergraph/ShaderGraphLibrary/Functions.hlsl" // Need to be here for Gradient struct definition
        
            // --------------------------------------------------
            // Defines
        
            // Attribute
            #define ATTRIBUTES_NEED_NORMAL
            #define ATTRIBUTES_NEED_TANGENT
        
            #define HAVE_MESH_MODIFICATION
        
            //Strip down the FragInputs.hlsl (on graphics), so we can only optimize the interpolators we use.
            //if by accident something requests contents of FragInputs.hlsl, it will be caught as a compiler error
            //Frag inputs stripping is only enabled when FRAG_INPUTS_ENABLE_STRIPPING is set
            #if !defined(SHADER_STAGE_RAY_TRACING) && SHADERPASS != SHADERPASS_RAYTRACING_GBUFFER && SHADERPASS != SHADERPASS_FULL_SCREEN_DEBUG
            #define FRAG_INPUTS_ENABLE_STRIPPING
            #endif
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/FragInputs.hlsl"
        
        
        
            #define SHADERPASS SHADERPASS_SHADOWS
        
        
            // Following two define are a workaround introduce in 10.1.x for RaytracingQualityNode
            // The ShaderGraph don't support correctly migration of this node as it serialize all the node data
            // in the json file making it impossible to uprgrade. Until we get a fix, we do a workaround here
            // to still allow us to rename the field and keyword of this node without breaking existing code.
            #ifdef RAYTRACING_SHADER_GRAPH_DEFAULT
            #define RAYTRACING_SHADER_GRAPH_HIGH
            #endif
        
            #ifdef RAYTRACING_SHADER_GRAPH_RAYTRACED
            #define RAYTRACING_SHADER_GRAPH_LOW
            #endif
            // end
        
            #ifndef SHADER_UNLIT
            // We need isFrontFace when using double sided - it is not required for unlit as in case of unlit double sided only drive the cullmode
            // VARYINGS_NEED_CULLFACE can be define by VaryingsMeshToPS.FaceSign input if a IsFrontFace Node is included in the shader graph.
            #if defined(_DOUBLESIDED_ON) && !defined(VARYINGS_NEED_CULLFACE)
                #define VARYINGS_NEED_CULLFACE
            #endif
            #endif
        
            // Specific Material Define
        #define _MATERIAL_FEATURE_SPECULAR_COLOR 1
        #define _SPECULAR_OCCLUSION_FROM_AO 1
        #define _ENERGY_CONSERVING_SPECULAR 1
        
        // If we use subsurface scattering, enable output split lighting (for forward pass)
        #if defined(_MATERIAL_FEATURE_SUBSURFACE_SCATTERING) && !defined(_SURFACE_TYPE_TRANSPARENT)
            #define OUTPUT_SPLIT_LIGHTING
        #endif
        
        // This shader support recursive rendering for raytracing
        #define HAVE_RECURSIVE_RENDERING
        
        // In Path Tracing, For all single-sided, refractive materials, we want to force a thin refraction model
        #if (SHADERPASS == SHADERPASS_PATH_TRACING) && !defined(_DOUBLESIDED_ON) && (defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE))
            #undef  _REFRACTION_PLANE
            #undef  _REFRACTION_SPHERE
            #define _REFRACTION_THIN
        #endif
            // Caution: we can use the define SHADER_UNLIT onlit after the above Material include as it is the Unlit template who define it
        
            // To handle SSR on transparent correctly with a possibility to enable/disable it per framesettings
            // we should have a code like this:
            // if !defined(_DISABLE_SSR_TRANSPARENT)
            // pragma multi_compile _ WRITE_NORMAL_BUFFER
            // endif
            // i.e we enable the multicompile only if we can receive SSR or not, and then C# code drive
            // it based on if SSR transparent in frame settings and not (and stripper can strip it).
            // this is currently not possible with our current preprocessor as _DISABLE_SSR_TRANSPARENT is a keyword not a define
            // so instead we used this and chose to pay the extra cost of normal write even if SSR transaprent is disabled.
            // Ideally the shader graph generator should handle it but condition below can't be handle correctly for now.
            #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
            #if !defined(_DISABLE_SSR_TRANSPARENT) && !defined(SHADER_UNLIT)
                #define WRITE_NORMAL_BUFFER
            #endif
            #endif
        
            #ifndef DEBUG_DISPLAY
                // In case of opaque we don't want to perform the alpha test, it is done in depth prepass and we use depth equal for ztest (setup from UI)
                // Don't do it with debug display mode as it is possible there is no depth prepass in this case
                #if !defined(_SURFACE_TYPE_TRANSPARENT)
                    #if SHADERPASS == SHADERPASS_FORWARD
                    #define SHADERPASS_FORWARD_BYPASS_ALPHA_TEST
                    #elif SHADERPASS == SHADERPASS_GBUFFER
                    #define SHADERPASS_GBUFFER_BYPASS_ALPHA_TEST
                    #endif
                #endif
            #endif
        
            // Define _DEFERRED_CAPABLE_MATERIAL for shader capable to run in deferred pass
            #if defined(SHADER_LIT) && !defined(_SURFACE_TYPE_TRANSPARENT)
                #define _DEFERRED_CAPABLE_MATERIAL
            #endif
        
            // Translate transparent motion vector define
            #if defined(_TRANSPARENT_WRITES_MOTION_VEC) && defined(_SURFACE_TYPE_TRANSPARENT)
                #define _WRITE_TRANSPARENT_MOTION_VECTOR
            #endif
        
            // -- Graph Properties
            CBUFFER_START(UnityPerMaterial)
        float4 _BaseColor;
        float4 _BaseColorMap_TexelSize;
        float _BaseUsePlanarUV;
        float4 _BaseTilingOffset;
        float4 _SpecularColor;
        float4 _SpecularColorMap_TexelSize;
        float4 _BaseNormalMap_TexelSize;
        float _BaseNormalScale;
        float4 _BaseMaskMap_TexelSize;
        float _BaseAORemapMin;
        float _BaseAORemapMax;
        float _BaseSmoothnessRemapMin;
        float _BaseSmoothnessRemapMax;
        float _USEDYNAMICCOVERTSTATICMASKF;
        float4 _CoverMaskA_TexelSize;
        float _CoverMaskPower;
        float _Cover_Amount;
        float _Cover_Amount_Grow_Speed;
        float _Cover_Max_Angle;
        float _Cover_Min_Height;
        float _Cover_Min_Height_Blending;
        float4 _CoverBaseColor;
        float4 _CoverBaseColorMap_TexelSize;
        float _CoverUsePlanarUV;
        float4 _CoverTilingOffset;
        float4 _CoverSpecularColor;
        float4 _CoverSpecularColorMap_TexelSize;
        float4 _CoverNormalMap_TexelSize;
        float _CoverNormalScale;
        float _CoverNormalBlendHardness;
        float _CoverHardness;
        float _CoverHeightMapMin;
        float _CoverHeightMapMax;
        float _CoverHeightMapOffset;
        float4 _CoverMaskMap_TexelSize;
        float _CoverAORemapMin;
        float _CoverAORemapMax;
        float _CoverSmoothnessRemapMin;
        float _CoverSmoothnessRemapMax;
        float4 _DetailMap_TexelSize;
        float4 _DetailTilingOffset;
        float _DetailAlbedoScale;
        float _DetailNormalScale;
        float _DetailSmoothnessScale;
        float4 _WetColor;
        float _WetSmoothness;
        float4 _EmissionColor;
        float _UseShadowThreshold;
        float4 _DoubleSidedConstants;
        float _BlendMode;
        float _EnableBlendModePreserveSpecularLighting;
        float _RayTracing;
        float _RefractionModel;
        CBUFFER_END
        
        
        // Object and Global properties
        SAMPLER(SamplerState_Linear_Repeat);
        SAMPLER(SamplerState_Linear_Repeat_Aniso8);
        TEXTURE2D(_BaseColorMap);
        SAMPLER(sampler_BaseColorMap);
        TEXTURE2D(_SpecularColorMap);
        SAMPLER(sampler_SpecularColorMap);
        TEXTURE2D(_BaseNormalMap);
        SAMPLER(sampler_BaseNormalMap);
        TEXTURE2D(_BaseMaskMap);
        SAMPLER(sampler_BaseMaskMap);
        TEXTURE2D(_CoverMaskA);
        SAMPLER(sampler_CoverMaskA);
        TEXTURE2D(_CoverBaseColorMap);
        SAMPLER(sampler_CoverBaseColorMap);
        TEXTURE2D(_CoverSpecularColorMap);
        SAMPLER(sampler_CoverSpecularColorMap);
        TEXTURE2D(_CoverNormalMap);
        SAMPLER(sampler_CoverNormalMap);
        TEXTURE2D(_CoverMaskMap);
        SAMPLER(sampler_CoverMaskMap);
        TEXTURE2D(_DetailMap);
        SAMPLER(sampler_DetailMap);
        
            // -- Property used by ScenePickingPass
            #ifdef SCENEPICKINGPASS
            float4 _SelectionID;
            #endif
        
            // -- Properties used by SceneSelectionPass
            #ifdef SCENESELECTIONPASS
            int _ObjectId;
            int _PassValue;
            #endif
        
            // Includes
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl"
        #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/NormalSurfaceGradient.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/BuiltinUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/DecalUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitDecalData.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderGraphFunctions.hlsl"
        	#include "./NM_Object_VSPro_Indirect.cginc"
        
            // --------------------------------------------------
            // Structs and Packing
        
            struct AttributesMesh
        {
             float3 positionOS : POSITION;
             float3 normalOS : NORMAL;
             float4 tangentOS : TANGENT;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : INSTANCEID_SEMANTIC;
            #endif
        };
        struct VaryingsMeshToPS
        {
            SV_POSITION_QUALIFIERS float4 positionCS : SV_POSITION;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : CUSTOM_INSTANCE_ID;
            #endif
        };
        struct VertexDescriptionInputs
        {
             float3 ObjectSpaceNormal;
             float3 ObjectSpaceTangent;
             float3 ObjectSpacePosition;
        };
        struct SurfaceDescriptionInputs
        {
        };
        struct PackedVaryingsMeshToPS
        {
            SV_POSITION_QUALIFIERS float4 positionCS : SV_POSITION;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : CUSTOM_INSTANCE_ID;
            #endif
        };
        
            PackedVaryingsMeshToPS PackVaryingsMeshToPS (VaryingsMeshToPS input)
        {
            PackedVaryingsMeshToPS output;
            ZERO_INITIALIZE(PackedVaryingsMeshToPS, output);
            output.positionCS = input.positionCS;
            #if UNITY_ANY_INSTANCING_ENABLED
            output.instanceID = input.instanceID;
            #endif
            return output;
        }
        
        VaryingsMeshToPS UnpackVaryingsMeshToPS (PackedVaryingsMeshToPS input)
        {
            VaryingsMeshToPS output;
            output.positionCS = input.positionCS;
            #if UNITY_ANY_INSTANCING_ENABLED
            output.instanceID = input.instanceID;
            #endif
            return output;
        }
        
        
            // --------------------------------------------------
            // Graph
        
        
            // Graph Functions
            
        void AddPragma_float(float3 A, out float3 Out){
        #pragma instancing_options procedural:setupVSPro
        Out = A;
        }
        
        struct Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float
        {
        };
        
        void SG_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float(float3 Vector3_314C8600, Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float IN, out float3 ObjectSpacePosition_1)
        {
        float3 _Property_5ec158abd968858c9d31ab40df5e9e6f_Out_0_Vector3 = Vector3_314C8600;
        float3 _InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3;
        InjectSetup_float(_Property_5ec158abd968858c9d31ab40df5e9e6f_Out_0_Vector3, _InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3);
        float3 _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3;
        AddPragma_float(_InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3, _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3);
        ObjectSpacePosition_1 = _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3;
        }
        
            // Graph Vertex
            struct VertexDescription
        {
            float3 Position;
            float3 Normal;
            float3 Tangent;
        };
        
        VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
        {
            VertexDescription description = (VertexDescription)0;
            Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430;
            float3 _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3;
            SG_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float(IN.ObjectSpacePosition, _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430, _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3);
            description.Position = _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3;
            description.Normal = IN.ObjectSpaceNormal;
            description.Tangent = IN.ObjectSpaceTangent;
            return description;
        }
        
            // Graph Pixel
            struct SurfaceDescription
        {
            float Alpha;
        };
        
        SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
        {
            SurfaceDescription surface = (SurfaceDescription)0;
            surface.Alpha = 1;
            return surface;
        }
        
            // --------------------------------------------------
            // Build Graph Inputs
            #ifdef HAVE_VFX_MODIFICATION
            #define VFX_SRP_ATTRIBUTES AttributesMesh
            #define VaryingsMeshType VaryingsMeshToPS
            #define VFX_SRP_VARYINGS VaryingsMeshType
            #define VFX_SRP_SURFACE_INPUTS FragInputs
            #endif
            
        VertexDescriptionInputs AttributesMeshToVertexDescriptionInputs(AttributesMesh input)
        {
            VertexDescriptionInputs output;
            ZERO_INITIALIZE(VertexDescriptionInputs, output);
        
            output.ObjectSpaceNormal =                          input.normalOS;
            output.ObjectSpaceTangent =                         input.tangentOS.xyz;
            output.ObjectSpacePosition =                        input.positionOS;
        
            return output;
        }
        
        VertexDescription GetVertexDescription(AttributesMesh input, float3 timeParameters
        #ifdef HAVE_VFX_MODIFICATION
            , AttributesElement element
        #endif
        )
        {
            // build graph inputs
            VertexDescriptionInputs vertexDescriptionInputs = AttributesMeshToVertexDescriptionInputs(input);
            // Override time parameters with used one (This is required to correctly handle motion vectors for vertex animation based on time)
        
            // evaluate vertex graph
        #ifdef HAVE_VFX_MODIFICATION
            GraphProperties properties;
            ZERO_INITIALIZE(GraphProperties, properties);
        
            // Fetch the vertex graph properties for the particle instance.
            GetElementVertexProperties(element, properties);
        
            VertexDescription vertexDescription = VertexDescriptionFunction(vertexDescriptionInputs, properties);
        #else
            VertexDescription vertexDescription = VertexDescriptionFunction(vertexDescriptionInputs);
        #endif
            return vertexDescription;
        
        }
        
        AttributesMesh ApplyMeshModification(AttributesMesh input, float3 timeParameters
        #ifdef USE_CUSTOMINTERP_SUBSTRUCT
            #ifdef TESSELLATION_ON
            , inout VaryingsMeshToDS varyings
            #else
            , inout VaryingsMeshToPS varyings
            #endif
        #endif
        #ifdef HAVE_VFX_MODIFICATION
                , AttributesElement element
        #endif
            )
        {
            VertexDescription vertexDescription = GetVertexDescription(input, timeParameters
        #ifdef HAVE_VFX_MODIFICATION
                , element
        #endif
            );
        
            // copy graph output to the results
            input.positionOS = vertexDescription.Position;
            input.normalOS = vertexDescription.Normal;
            input.tangentOS.xyz = vertexDescription.Tangent;
        
            
        
            return input;
        }
        
        #if defined(_ADD_CUSTOM_VELOCITY) // For shader graph custom velocity
        // Return precomputed Velocity in object space
        float3 GetCustomVelocity(AttributesMesh input
        #ifdef HAVE_VFX_MODIFICATION
            , AttributesElement element
        #endif
        )
        {
            VertexDescription vertexDescription = GetVertexDescription(input, _TimeParameters.xyz
        #ifdef HAVE_VFX_MODIFICATION
                , element
        #endif
            );
            return vertexDescription.CustomVelocity;
        }
        #endif
        
        FragInputs BuildFragInputs(VaryingsMeshToPS input)
        {
            FragInputs output;
            ZERO_INITIALIZE(FragInputs, output);
        
            // Init to some default value to make the computer quiet (else it output 'divide by zero' warning even if value is not used).
            // TODO: this is a really poor workaround, but the variable is used in a bunch of places
            // to compute normals which are then passed on elsewhere to compute other values...
            output.tangentToWorld = k_identity3x3;
            output.positionSS = input.positionCS;       // input.positionCS is SV_Position
        
        
        #ifdef HAVE_VFX_MODIFICATION
            // FragInputs from VFX come from two places: Interpolator or CBuffer.
        #if VFX_USE_GRAPH_VALUES
            uint instanceActiveIndex = asuint(UNITY_ACCESS_INSTANCED_PROP(PerInstance, _InstanceActiveIndex));
            /* WARNING: $splice Could not find named fragment 'VFXLoadGraphValues' */
        #endif
        
            /* WARNING: $splice Could not find named fragment 'VFXSetFragInputs' */
        
        #endif
        
            // splice point to copy custom interpolator fields from varyings to frag inputs
            
        
            return output;
        }
        
        // existing HDRP code uses the combined function to go directly from packed to frag inputs
        FragInputs UnpackVaryingsMeshToFragInputs(PackedVaryingsMeshToPS input)
        {
            UNITY_SETUP_INSTANCE_ID(input);
        #if defined(HAVE_VFX_MODIFICATION) && defined(UNITY_INSTANCING_ENABLED)
            unity_InstanceID = input.instanceID;
        #endif
            VaryingsMeshToPS unpacked = UnpackVaryingsMeshToPS(input);
            return BuildFragInputs(unpacked);
        }
            SurfaceDescriptionInputs FragInputsToSurfaceDescriptionInputs(FragInputs input, float3 viewWS)
        {
            SurfaceDescriptionInputs output;
            ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
        
            #if defined(SHADER_STAGE_RAY_TRACING)
            #else
            #endif
        
        #if UNITY_UV_STARTS_AT_TOP
        #else
        #endif
        
        
        
            // splice point to copy frag inputs custom interpolator pack into the SDI
            
        
            return output;
        }
        
            // --------------------------------------------------
            // Build Surface Data (Specific Material)
        
        void ApplyDecalToSurfaceDataNoNormal(DecalSurfaceData decalSurfaceData, inout SurfaceData surfaceData);
        
        void ApplyDecalAndGetNormal(FragInputs fragInputs, PositionInputs posInput, SurfaceDescription surfaceDescription,
            inout SurfaceData surfaceData)
        {
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
        #ifdef DECAL_NORMAL_BLENDING
            // SG nodes don't ouptut surface gradients, so if decals require surf grad blending, we have to convert
            // the normal to gradient before applying the decal. We then have to resolve the gradient back to world space
            float3 normalTS;
        
        
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, fragInputs.tangentToWorld[2], normalTS);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        
            GetNormalWS_SG(fragInputs, normalTS, surfaceData.normalWS, doubleSidedConstants);
        #else
            // normal delivered to master node
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                // Both uses and modifies 'surfaceData.normalWS'.
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, surfaceData.normalWS.xyz);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        #endif
        }
        void BuildSurfaceData(FragInputs fragInputs, inout SurfaceDescription surfaceDescription, float3 V, PositionInputs posInput, out SurfaceData surfaceData, out float3 bentNormalWS)
        {
            ZERO_INITIALIZE(SurfaceData, surfaceData);
        
            // specularOcclusion need to be init ahead of decal to quiet the compiler that modify the SurfaceData struct
            // however specularOcclusion can come from the graph, so need to be init here so it can be override.
            surfaceData.specularOcclusion = 1.0;
        
        
            #if defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE) || defined(_REFRACTION_THIN)
                if (_EnableSSRefraction)
                {
        
                    surfaceData.transmittanceMask = (1.0 - surfaceDescription.Alpha);
                    surfaceDescription.Alpha = 1.0;
                }
                else
                {
                    surfaceData.ior = 1.0;
                    surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                    surfaceData.atDistance = 1.0;
                    surfaceData.transmittanceMask = 0.0;
                    surfaceDescription.Alpha = 1.0;
                }
            #else
                surfaceData.ior = 1.0;
                surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                surfaceData.atDistance = 1.0;
                surfaceData.transmittanceMask = 0.0;
            #endif
        
            // These static material feature allow compile time optimization
            surfaceData.materialFeatures = MATERIALFEATUREFLAGS_LIT_STANDARD;
            #ifdef _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SUBSURFACE_SCATTERING;
            #endif
        
            #ifdef _MATERIAL_FEATURE_TRANSMISSION
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
            #endif
        
            #ifdef _MATERIAL_FEATURE_ANISOTROPY
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_ANISOTROPY;
        
                // Initialize the normal to something non-zero to avoid a div-zero warning for anisotropy.
                surfaceData.normalWS = float3(0, 1, 0);
            #endif
        
            #ifdef _MATERIAL_FEATURE_IRIDESCENCE
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_IRIDESCENCE;
            #endif
        
            #ifdef _MATERIAL_FEATURE_SPECULAR_COLOR
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SPECULAR_COLOR;
            #endif
        
            #ifdef _MATERIAL_FEATURE_CLEAR_COAT
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_CLEAR_COAT;
            #endif
        
            #if defined (_MATERIAL_FEATURE_SPECULAR_COLOR) && defined (_ENERGY_CONSERVING_SPECULAR)
                // Require to have setup baseColor
                // Reproduce the energy conservation done in legacy Unity. Not ideal but better for compatibility and users can unchek it
                surfaceData.baseColor *= (1.0 - Max3(surfaceData.specularColor.r, surfaceData.specularColor.g, surfaceData.specularColor.b));
            #endif
        
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
            ApplyDecalAndGetNormal(fragInputs, posInput, surfaceDescription, surfaceData);
        
            surfaceData.geomNormalWS = fragInputs.tangentToWorld[2];
        
            surfaceData.tangentWS = normalize(fragInputs.tangentToWorld[0].xyz);    // The tangent is not normalize in tangentToWorld for mikkt. TODO: Check if it expected that we normalize with Morten. Tag: SURFACE_GRADIENT
        
        
            bentNormalWS = surfaceData.normalWS;
        
            surfaceData.tangentWS = Orthonormalize(surfaceData.tangentWS, surfaceData.normalWS);
        
            #ifdef DEBUG_DISPLAY
                if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
                {
                    // TODO: need to update mip info
                    surfaceData.metallic = 0;
                }
        
                // We need to call ApplyDebugToSurfaceData after filling the surfarcedata and before filling builtinData
                // as it can modify attribute use for static lighting
                ApplyDebugToSurfaceData(fragInputs.tangentToWorld, surfaceData);
            #endif
        
            // By default we use the ambient occlusion with Tri-ace trick (apply outside) for specular occlusion.
            // If user provide bent normal then we process a better term
            #if defined(_SPECULAR_OCCLUSION_CUSTOM)
                // Just use the value passed through via the slot (not active otherwise)
            #elif defined(_SPECULAR_OCCLUSION_FROM_AO_BENT_NORMAL)
                // If we have bent normal and ambient occlusion, process a specular occlusion
                surfaceData.specularOcclusion = GetSpecularOcclusionFromBentAO(V, bentNormalWS, surfaceData.normalWS, surfaceData.ambientOcclusion, PerceptualSmoothnessToPerceptualRoughness(surfaceData.perceptualSmoothness));
            #elif defined(_AMBIENT_OCCLUSION) && defined(_SPECULAR_OCCLUSION_FROM_AO)
                surfaceData.specularOcclusion = GetSpecularOcclusionFromAmbientOcclusion(ClampNdotV(dot(surfaceData.normalWS, V)), surfaceData.ambientOcclusion, PerceptualSmoothnessToRoughness(surfaceData.perceptualSmoothness));
            #endif
        
            #if defined(_ENABLE_GEOMETRIC_SPECULAR_AA) && !defined(SHADER_STAGE_RAY_TRACING)
                surfaceData.perceptualSmoothness = GeometricNormalFiltering(surfaceData.perceptualSmoothness, fragInputs.tangentToWorld[2], surfaceDescription.SpecularAAScreenSpaceVariance, surfaceDescription.SpecularAAThreshold);
            #endif
        }
        
            // --------------------------------------------------
            // Get Surface And BuiltinData
        
            void GetSurfaceAndBuiltinData(FragInputs fragInputs, float3 V, inout PositionInputs posInput, out SurfaceData surfaceData, out BuiltinData builtinData RAY_TRACING_OPTIONAL_PARAMETERS)
            {
                // Don't dither if displaced tessellation (we're fading out the displacement instead to match the next LOD)
                #if !defined(SHADER_STAGE_RAY_TRACING) && !defined(_TESSELLATION_DISPLACEMENT)
                #ifdef LOD_FADE_CROSSFADE // enable dithering LOD transition if user select CrossFade transition in LOD group
                LODDitheringTransition(ComputeFadeMaskSeed(V, posInput.positionSS), unity_LODFade.x);
                #endif
                #endif
        
                #ifndef SHADER_UNLIT
                #ifdef _DOUBLESIDED_ON
                    float3 doubleSidedConstants = _DoubleSidedConstants.xyz;
                #else
                    float3 doubleSidedConstants = float3(1.0, 1.0, 1.0);
                #endif
        
                ApplyDoubleSidedFlipOrMirror(fragInputs, doubleSidedConstants); // Apply double sided flip on the vertex normal
                #endif // SHADER_UNLIT
        
                SurfaceDescriptionInputs surfaceDescriptionInputs = FragInputsToSurfaceDescriptionInputs(fragInputs, V);
        
                #if defined(HAVE_VFX_MODIFICATION)
                GraphProperties properties;
                ZERO_INITIALIZE(GraphProperties, properties);
        
                GetElementPixelProperties(fragInputs, properties);
        
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs, properties);
                #else
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs);
                #endif
        
                // Perform alpha test very early to save performance (a killed pixel will not sample textures)
                // TODO: split graph evaluation to grab just alpha dependencies first? tricky..
                #ifdef _ALPHATEST_ON
                    float alphaCutoff = surfaceDescription.AlphaClipThreshold;
                    #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
                    // The TransparentDepthPrepass is also used with SSR transparent.
                    // If an artists enable transaprent SSR but not the TransparentDepthPrepass itself, then we use AlphaClipThreshold
                    // otherwise if TransparentDepthPrepass is enabled we use AlphaClipThresholdDepthPrepass
                    #elif SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_POSTPASS
                    // DepthPostpass always use its own alpha threshold
                    alphaCutoff = surfaceDescription.AlphaClipThresholdDepthPostpass;
                    #elif (SHADERPASS == SHADERPASS_SHADOWS) || (SHADERPASS == SHADERPASS_RAYTRACING_VISIBILITY)
                    // If use shadow threshold isn't enable we don't allow any test
                    #endif
        
                    GENERIC_ALPHA_TEST(surfaceDescription.Alpha, alphaCutoff);
                #endif
        
                #if !defined(SHADER_STAGE_RAY_TRACING) && _DEPTHOFFSET_ON
                ApplyDepthOffsetPositionInput(V, surfaceDescription.DepthOffset, GetViewForwardDir(), GetWorldToHClipMatrix(), posInput);
                #endif
        
                #ifndef SHADER_UNLIT
                float3 bentNormalWS;
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData, bentNormalWS);
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD1
                    float4 lightmapTexCoord1 = fragInputs.texCoord1;
                #else
                    float4 lightmapTexCoord1 = float4(0,0,0,0);
                #endif
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD2
                    float4 lightmapTexCoord2 = fragInputs.texCoord2;
                #else
                    float4 lightmapTexCoord2 = float4(0,0,0,0);
                #endif
        
                // Builtin Data
                // For back lighting we use the oposite vertex normal
                InitBuiltinData(posInput, surfaceDescription.Alpha, bentNormalWS, -fragInputs.tangentToWorld[2], lightmapTexCoord1, lightmapTexCoord2, builtinData);
        
                #else
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData);
        
                ZERO_BUILTIN_INITIALIZE(builtinData); // No call to InitBuiltinData as we don't have any lighting
                builtinData.opacity = surfaceDescription.Alpha;
        
                #if defined(DEBUG_DISPLAY)
                    // Light Layers are currently not used for the Unlit shader (because it is not lit)
                    // But Unlit objects do cast shadows according to their rendering layer mask, which is what we want to
                    // display in the light layers visualization mode, therefore we need the renderingLayers
                    builtinData.renderingLayers = GetMeshRenderingLightLayer();
                #endif
        
                #endif // SHADER_UNLIT
        
                #ifdef _ALPHATEST_ON
                    // Used for sharpening by alpha to mask - Alpha to covertage is only used with depth only and forward pass (no shadow pass, no transparent pass)
                    builtinData.alphaClipTreshold = alphaCutoff;
                #endif
        
                // override sampleBakedGI - not used by Unlit
        
        
                // Note this will not fully work on transparent surfaces (can check with _SURFACE_TYPE_TRANSPARENT define)
                // We will always overwrite vt feeback with the nearest. So behind transparent surfaces vt will not be resolved
                // This is a limitation of the current MRT approach.
                #ifdef UNITY_VIRTUAL_TEXTURING
                #endif
        
                #if _DEPTHOFFSET_ON
                builtinData.depthOffset = surfaceDescription.DepthOffset;
                #endif
        
                // TODO: We should generate distortion / distortionBlur for non distortion pass
                #if (SHADERPASS == SHADERPASS_DISTORTION)
                builtinData.distortion = surfaceDescription.Distortion;
                builtinData.distortionBlur = surfaceDescription.DistortionBlur;
                #endif
        
                #ifndef SHADER_UNLIT
                // PostInitBuiltinData call ApplyDebugToBuiltinData
                PostInitBuiltinData(V, posInput, surfaceData, builtinData);
                #else
                ApplyDebugToBuiltinData(builtinData);
                #endif
        
                RAY_TRACING_OPTIONAL_ALPHA_TEST_PASS
            }
        
            // --------------------------------------------------
            // Main
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassDepthOnly.hlsl"
        
            // --------------------------------------------------
            // Visual Effect Vertex Invocations
        
        	#ifdef HAVE_VFX_MODIFICATION
        	#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
        	#endif
        
            ENDHLSL
        }
        Pass
        {
            Name "META"
            Tags
            {
                "LightMode" = "META"
            }
        
            // Render State
            Cull Off
        
            // Debug
            // <None>
        
            // --------------------------------------------------
            // Pass
        
            HLSLPROGRAM
        
            // Pragmas
            #pragma multi_compile _ DOTS_INSTANCING_ON
        #pragma instancing_options renderinglayer
        #pragma target 4.5
        #pragma vertex Vert
        #pragma fragment Frag
        #pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal switch
        #pragma multi_compile_instancing
        
            // Keywords
            #pragma shader_feature _ EDITOR_VISUALIZATION
        #pragma shader_feature _ _SURFACE_TYPE_TRANSPARENT
        #pragma shader_feature_local _ _DOUBLESIDED_ON
        #pragma shader_feature_local _ _ADD_PRECOMPUTED_VELOCITY
        #pragma shader_feature_local _ _TRANSPARENT_WRITES_MOTION_VEC
        #pragma shader_feature_local_fragment _ _ENABLE_FOG_ON_TRANSPARENT
        #pragma multi_compile _ LOD_FADE_CROSSFADE
        #pragma shader_feature_local_fragment _ _DISABLE_DECALS
        #pragma shader_feature_local_raytracing _ _DISABLE_DECALS
        #pragma shader_feature_local_fragment _ _DISABLE_SSR
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR
        #pragma shader_feature_local_fragment _ _DISABLE_SSR_TRANSPARENT
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR_TRANSPARENT
        #pragma shader_feature_local _ _REFRACTION_PLANE _REFRACTION_SPHERE _REFRACTION_THIN
            // GraphKeywords: <None>
        
            // For custom interpolators to inject a substruct definition before FragInputs definition,
            // allowing for FragInputs to capture CI's intended for ShaderGraph's SDI.
            /* WARNING: $splice Could not find named fragment 'CustomInterpolatorPreInclude' */
        
        
            // TODO: Merge FragInputsVFX substruct with CustomInterpolators.
        	#ifdef HAVE_VFX_MODIFICATION
        	struct FragInputsVFX
            {
                /* WARNING: $splice Could not find named fragment 'FragInputsVFX' */
            };
            #endif
        
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/GeometricTools.hlsl" // Required by Tessellation.hlsl
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Tessellation.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl" // Required to be include before we include properties as it define DECLARE_STACK_CB
            // Always include Shader Graph version
            // Always include last to avoid double macros
            #include "Packages/com.unity.shadergraph/ShaderGraphLibrary/Functions.hlsl" // Need to be here for Gradient struct definition
        
            // --------------------------------------------------
            // Defines
        
            // Attribute
            #define ATTRIBUTES_NEED_NORMAL
            #define ATTRIBUTES_NEED_TANGENT
            #define ATTRIBUTES_NEED_TEXCOORD0
            #define ATTRIBUTES_NEED_TEXCOORD1
            #define ATTRIBUTES_NEED_TEXCOORD2
            #define ATTRIBUTES_NEED_TEXCOORD3
            #define ATTRIBUTES_NEED_COLOR
            #define VARYINGS_NEED_POSITION_WS
            #define VARYINGS_NEED_POSITIONPREDISPLACEMENT_WS
            #define VARYINGS_NEED_TANGENT_TO_WORLD
            #define VARYINGS_NEED_TEXCOORD0
            #define VARYINGS_NEED_TEXCOORD1
            #define VARYINGS_NEED_TEXCOORD2
            #define VARYINGS_NEED_TEXCOORD3
            #define VARYINGS_NEED_COLOR
        
            #define HAVE_MESH_MODIFICATION
        
            //Strip down the FragInputs.hlsl (on graphics), so we can only optimize the interpolators we use.
            //if by accident something requests contents of FragInputs.hlsl, it will be caught as a compiler error
            //Frag inputs stripping is only enabled when FRAG_INPUTS_ENABLE_STRIPPING is set
            #if !defined(SHADER_STAGE_RAY_TRACING) && SHADERPASS != SHADERPASS_RAYTRACING_GBUFFER && SHADERPASS != SHADERPASS_FULL_SCREEN_DEBUG
            #define FRAG_INPUTS_ENABLE_STRIPPING
            #endif
            #define FRAG_INPUTS_USE_TEXCOORD0
            #define FRAG_INPUTS_USE_TEXCOORD1
            #define FRAG_INPUTS_USE_TEXCOORD2
            #define FRAG_INPUTS_USE_TEXCOORD3
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/FragInputs.hlsl"
        
        
        
            #define SHADERPASS SHADERPASS_LIGHT_TRANSPORT
        #define RAYTRACING_SHADER_GRAPH_DEFAULT
        #define SCENEPICKINGPASS 1
        
        
            // Following two define are a workaround introduce in 10.1.x for RaytracingQualityNode
            // The ShaderGraph don't support correctly migration of this node as it serialize all the node data
            // in the json file making it impossible to uprgrade. Until we get a fix, we do a workaround here
            // to still allow us to rename the field and keyword of this node without breaking existing code.
            #ifdef RAYTRACING_SHADER_GRAPH_DEFAULT
            #define RAYTRACING_SHADER_GRAPH_HIGH
            #endif
        
            #ifdef RAYTRACING_SHADER_GRAPH_RAYTRACED
            #define RAYTRACING_SHADER_GRAPH_LOW
            #endif
            // end
        
            #ifndef SHADER_UNLIT
            // We need isFrontFace when using double sided - it is not required for unlit as in case of unlit double sided only drive the cullmode
            // VARYINGS_NEED_CULLFACE can be define by VaryingsMeshToPS.FaceSign input if a IsFrontFace Node is included in the shader graph.
            #if defined(_DOUBLESIDED_ON) && !defined(VARYINGS_NEED_CULLFACE)
                #define VARYINGS_NEED_CULLFACE
            #endif
            #endif
        
            // Specific Material Define
        #define _MATERIAL_FEATURE_SPECULAR_COLOR 1
        #define _AMBIENT_OCCLUSION 1
        #define _SPECULAR_OCCLUSION_FROM_AO 1
        #define _ENERGY_CONSERVING_SPECULAR 1
        
        // If we use subsurface scattering, enable output split lighting (for forward pass)
        #if defined(_MATERIAL_FEATURE_SUBSURFACE_SCATTERING) && !defined(_SURFACE_TYPE_TRANSPARENT)
            #define OUTPUT_SPLIT_LIGHTING
        #endif
        
        // This shader support recursive rendering for raytracing
        #define HAVE_RECURSIVE_RENDERING
        
        // In Path Tracing, For all single-sided, refractive materials, we want to force a thin refraction model
        #if (SHADERPASS == SHADERPASS_PATH_TRACING) && !defined(_DOUBLESIDED_ON) && (defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE))
            #undef  _REFRACTION_PLANE
            #undef  _REFRACTION_SPHERE
            #define _REFRACTION_THIN
        #endif
            // Caution: we can use the define SHADER_UNLIT onlit after the above Material include as it is the Unlit template who define it
        
            // To handle SSR on transparent correctly with a possibility to enable/disable it per framesettings
            // we should have a code like this:
            // if !defined(_DISABLE_SSR_TRANSPARENT)
            // pragma multi_compile _ WRITE_NORMAL_BUFFER
            // endif
            // i.e we enable the multicompile only if we can receive SSR or not, and then C# code drive
            // it based on if SSR transparent in frame settings and not (and stripper can strip it).
            // this is currently not possible with our current preprocessor as _DISABLE_SSR_TRANSPARENT is a keyword not a define
            // so instead we used this and chose to pay the extra cost of normal write even if SSR transaprent is disabled.
            // Ideally the shader graph generator should handle it but condition below can't be handle correctly for now.
            #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
            #if !defined(_DISABLE_SSR_TRANSPARENT) && !defined(SHADER_UNLIT)
                #define WRITE_NORMAL_BUFFER
            #endif
            #endif
        
            #ifndef DEBUG_DISPLAY
                // In case of opaque we don't want to perform the alpha test, it is done in depth prepass and we use depth equal for ztest (setup from UI)
                // Don't do it with debug display mode as it is possible there is no depth prepass in this case
                #if !defined(_SURFACE_TYPE_TRANSPARENT)
                    #if SHADERPASS == SHADERPASS_FORWARD
                    #define SHADERPASS_FORWARD_BYPASS_ALPHA_TEST
                    #elif SHADERPASS == SHADERPASS_GBUFFER
                    #define SHADERPASS_GBUFFER_BYPASS_ALPHA_TEST
                    #endif
                #endif
            #endif
        
            // Define _DEFERRED_CAPABLE_MATERIAL for shader capable to run in deferred pass
            #if defined(SHADER_LIT) && !defined(_SURFACE_TYPE_TRANSPARENT)
                #define _DEFERRED_CAPABLE_MATERIAL
            #endif
        
            // Translate transparent motion vector define
            #if defined(_TRANSPARENT_WRITES_MOTION_VEC) && defined(_SURFACE_TYPE_TRANSPARENT)
                #define _WRITE_TRANSPARENT_MOTION_VECTOR
            #endif
        
            // -- Graph Properties
            CBUFFER_START(UnityPerMaterial)
        float4 _BaseColor;
        float4 _BaseColorMap_TexelSize;
        float _BaseUsePlanarUV;
        float4 _BaseTilingOffset;
        float4 _SpecularColor;
        float4 _SpecularColorMap_TexelSize;
        float4 _BaseNormalMap_TexelSize;
        float _BaseNormalScale;
        float4 _BaseMaskMap_TexelSize;
        float _BaseAORemapMin;
        float _BaseAORemapMax;
        float _BaseSmoothnessRemapMin;
        float _BaseSmoothnessRemapMax;
        float _USEDYNAMICCOVERTSTATICMASKF;
        float4 _CoverMaskA_TexelSize;
        float _CoverMaskPower;
        float _Cover_Amount;
        float _Cover_Amount_Grow_Speed;
        float _Cover_Max_Angle;
        float _Cover_Min_Height;
        float _Cover_Min_Height_Blending;
        float4 _CoverBaseColor;
        float4 _CoverBaseColorMap_TexelSize;
        float _CoverUsePlanarUV;
        float4 _CoverTilingOffset;
        float4 _CoverSpecularColor;
        float4 _CoverSpecularColorMap_TexelSize;
        float4 _CoverNormalMap_TexelSize;
        float _CoverNormalScale;
        float _CoverNormalBlendHardness;
        float _CoverHardness;
        float _CoverHeightMapMin;
        float _CoverHeightMapMax;
        float _CoverHeightMapOffset;
        float4 _CoverMaskMap_TexelSize;
        float _CoverAORemapMin;
        float _CoverAORemapMax;
        float _CoverSmoothnessRemapMin;
        float _CoverSmoothnessRemapMax;
        float4 _DetailMap_TexelSize;
        float4 _DetailTilingOffset;
        float _DetailAlbedoScale;
        float _DetailNormalScale;
        float _DetailSmoothnessScale;
        float4 _WetColor;
        float _WetSmoothness;
        float4 _EmissionColor;
        float _UseShadowThreshold;
        float4 _DoubleSidedConstants;
        float _BlendMode;
        float _EnableBlendModePreserveSpecularLighting;
        float _RayTracing;
        float _RefractionModel;
        CBUFFER_END
        
        
        // Object and Global properties
        SAMPLER(SamplerState_Linear_Repeat);
        SAMPLER(SamplerState_Linear_Repeat_Aniso8);
        TEXTURE2D(_BaseColorMap);
        SAMPLER(sampler_BaseColorMap);
        TEXTURE2D(_SpecularColorMap);
        SAMPLER(sampler_SpecularColorMap);
        TEXTURE2D(_BaseNormalMap);
        SAMPLER(sampler_BaseNormalMap);
        TEXTURE2D(_BaseMaskMap);
        SAMPLER(sampler_BaseMaskMap);
        TEXTURE2D(_CoverMaskA);
        SAMPLER(sampler_CoverMaskA);
        TEXTURE2D(_CoverBaseColorMap);
        SAMPLER(sampler_CoverBaseColorMap);
        TEXTURE2D(_CoverSpecularColorMap);
        SAMPLER(sampler_CoverSpecularColorMap);
        TEXTURE2D(_CoverNormalMap);
        SAMPLER(sampler_CoverNormalMap);
        TEXTURE2D(_CoverMaskMap);
        SAMPLER(sampler_CoverMaskMap);
        TEXTURE2D(_DetailMap);
        SAMPLER(sampler_DetailMap);
        
            // -- Property used by ScenePickingPass
            #ifdef SCENEPICKINGPASS
            float4 _SelectionID;
            #endif
        
            // -- Properties used by SceneSelectionPass
            #ifdef SCENESELECTIONPASS
            int _ObjectId;
            int _PassValue;
            #endif
        
            // Includes
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/PickingSpaceTransforms.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl"
        #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/NormalSurfaceGradient.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/BuiltinUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/DecalUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitDecalData.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderGraphFunctions.hlsl"
        	// GraphIncludes: <None>
        
            // --------------------------------------------------
            // Structs and Packing
        
            struct AttributesMesh
        {
             float3 positionOS : POSITION;
             float3 normalOS : NORMAL;
             float4 tangentOS : TANGENT;
             float4 uv0 : TEXCOORD0;
             float4 uv1 : TEXCOORD1;
             float4 uv2 : TEXCOORD2;
             float4 uv3 : TEXCOORD3;
             float4 color : COLOR;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : INSTANCEID_SEMANTIC;
            #endif
        };
        struct VaryingsMeshToPS
        {
            SV_POSITION_QUALIFIERS float4 positionCS : SV_POSITION;
             float3 positionRWS;
             float3 positionPredisplacementRWS;
             float3 normalWS;
             float4 tangentWS;
             float4 texCoord0;
             float4 texCoord1;
             float4 texCoord2;
             float4 texCoord3;
             float4 color;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : CUSTOM_INSTANCE_ID;
            #endif
        };
        struct VertexDescriptionInputs
        {
        };
        struct SurfaceDescriptionInputs
        {
             float3 WorldSpaceNormal;
             float3 TangentSpaceNormal;
             float3 WorldSpaceTangent;
             float3 WorldSpaceBiTangent;
             float3 AbsoluteWorldSpacePosition;
             float4 uv0;
             float4 uv2;
             float4 VertexColor;
        };
        struct PackedVaryingsMeshToPS
        {
            SV_POSITION_QUALIFIERS float4 positionCS : SV_POSITION;
             float4 tangentWS : INTERP0;
             float4 texCoord0 : INTERP1;
             float4 texCoord1 : INTERP2;
             float4 texCoord2 : INTERP3;
             float4 texCoord3 : INTERP4;
             float4 color : INTERP5;
             float3 positionRWS : INTERP6;
             float3 positionPredisplacementRWS : INTERP7;
             float3 normalWS : INTERP8;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : CUSTOM_INSTANCE_ID;
            #endif
        };
        
            PackedVaryingsMeshToPS PackVaryingsMeshToPS (VaryingsMeshToPS input)
        {
            PackedVaryingsMeshToPS output;
            ZERO_INITIALIZE(PackedVaryingsMeshToPS, output);
            output.positionCS = input.positionCS;
            output.tangentWS.xyzw = input.tangentWS;
            output.texCoord0.xyzw = input.texCoord0;
            output.texCoord1.xyzw = input.texCoord1;
            output.texCoord2.xyzw = input.texCoord2;
            output.texCoord3.xyzw = input.texCoord3;
            output.color.xyzw = input.color;
            output.positionRWS.xyz = input.positionRWS;
            output.positionPredisplacementRWS.xyz = input.positionPredisplacementRWS;
            output.normalWS.xyz = input.normalWS;
            #if UNITY_ANY_INSTANCING_ENABLED
            output.instanceID = input.instanceID;
            #endif
            return output;
        }
        
        VaryingsMeshToPS UnpackVaryingsMeshToPS (PackedVaryingsMeshToPS input)
        {
            VaryingsMeshToPS output;
            output.positionCS = input.positionCS;
            output.tangentWS = input.tangentWS.xyzw;
            output.texCoord0 = input.texCoord0.xyzw;
            output.texCoord1 = input.texCoord1.xyzw;
            output.texCoord2 = input.texCoord2.xyzw;
            output.texCoord3 = input.texCoord3.xyzw;
            output.color = input.color.xyzw;
            output.positionRWS = input.positionRWS.xyz;
            output.positionPredisplacementRWS = input.positionPredisplacementRWS.xyz;
            output.normalWS = input.normalWS.xyz;
            #if UNITY_ANY_INSTANCING_ENABLED
            output.instanceID = input.instanceID;
            #endif
            return output;
        }
        
        
            // --------------------------------------------------
            // Graph
        
        
            // Graph Functions
            
        void Unity_Combine_float(float R, float G, float B, float A, out float4 RGBA, out float3 RGB, out float2 RG)
        {
            RGBA = float4(R, G, B, A);
            RGB = float3(R, G, B);
            RG = float2(R, G);
        }
        
        void Unity_Divide_float(float A, float B, out float Out)
        {
            Out = A / B;
        }
        
        void Unity_Multiply_float4_float4(float4 A, float4 B, out float4 Out)
        {
        Out = A * B;
        }
        
        void Unity_Branch_float4(float Predicate, float4 True, float4 False, out float4 Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_TilingAndOffset_float(float2 UV, float2 Tiling, float2 Offset, out float2 Out)
        {
            Out = UV * Tiling + Offset;
        }
        
        void Unity_Branch_float2(float Predicate, float2 True, float2 False, out float2 Out)
        {
            Out = Predicate ? True : False;
        }
        
        struct Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float
        {
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_2EBA7A3B, float Boolean_7ABB9909, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float IN, out float4 XZ_2)
        {
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Property_30834f691775a0898a45b1c868520436_Out_0_Boolean = Boolean_7ABB9909;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4 = Vector4_2EBA7A3B;
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[0];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[1];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[2];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[3];
        float _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float;
        Unity_Divide_float(1, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4 = IN.uv0;
        float4 _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4 = IN.uv2;
        float4 _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4;
        Unity_Branch_float4(_Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean, _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4, _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4, _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4);
        float2 _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float);
        float2 _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float);
        float2 _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4.xy), _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2, _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2, _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2);
        float2 _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2;
        Unity_Branch_float2(_Property_30834f691775a0898a45b1c868520436_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2, _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2);
        UnitySamplerState _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2) );
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        XZ_2 = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4;
        }
        
        void Unity_Multiply_float_float(float A, float B, out float Out)
        {
            Out = A * B;
        }
        
        void Unity_Add_float(float A, float B, out float Out)
        {
            Out = A + B;
        }
        
        void Unity_Saturate_float(float In, out float Out)
        {
            Out = saturate(In);
        }
        
        void Unity_Absolute_float(float In, out float Out)
        {
            Out = abs(In);
        }
        
        void Unity_SquareRoot_float4(float4 In, out float4 Out)
        {
            Out = sqrt(In);
        }
        
        void Unity_Sign_float(float In, out float Out)
        {
            Out = sign(In);
        }
        
        void Unity_Ceiling_float(float In, out float Out)
        {
            Out = ceil(In);
        }
        
        void Unity_Lerp_float4(float4 A, float4 B, float4 T, out float4 Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float
        {
        };
        
        void SG_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float(float4 Color_9AA111D3, float Vector1_FBE622A2, float Vector1_8C15C351, Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float IN, out float3 OutVector4_1)
        {
        float4 _Property_012510d774fb7f8b860f5270dca4500f_Out_0_Vector4 = Color_9AA111D3;
        float4 _SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4;
        Unity_SquareRoot_float4(_Property_012510d774fb7f8b860f5270dca4500f_Out_0_Vector4, _SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4);
        float _Property_a00e29241d12f983b30177515b367ec9_Out_0_Float = Vector1_FBE622A2;
        float _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float;
        Unity_Sign_float(_Property_a00e29241d12f983b30177515b367ec9_Out_0_Float, _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float);
        float _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float;
        Unity_Add_float(_Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float, 1, _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float);
        float _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float;
        Unity_Multiply_float_float(_Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float, 0.5, _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float);
        float _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float;
        Unity_Ceiling_float(_Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float);
        float _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float = Vector1_8C15C351;
        float _Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float;
        Unity_Multiply_float_float(_Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float);
        float4 _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4;
        Unity_Lerp_float4(_SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4, (_Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float.xxxx), (_Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float.xxxx), _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4);
        float4 _Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4, _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4, _Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4);
        OutVector4_1 = (_Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4.xyz);
        }
        
        void Unity_Clamp_float(float In, float Min, float Max, out float Out)
        {
            Out = clamp(In, Min, Max);
        }
        
        void Unity_Multiply_float2_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A * B;
        }
        
        void Unity_Add_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A + B;
        }
        
        void Unity_DotProduct_float2(float2 A, float2 B, out float Out)
        {
            Out = dot(A, B);
        }
        
        void Unity_OneMinus_float(float In, out float Out)
        {
            Out = 1 - In;
        }
        
        void Unity_SquareRoot_float(float In, out float Out)
        {
            Out = sqrt(In);
        }
        
        void Unity_Sign_float3(float3 In, out float3 Out)
        {
            Out = sign(In);
        }
        
        void Unity_Normalize_float3(float3 In, out float3 Out)
        {
            Out = normalize(In);
        }
        
        void Unity_Branch_float3(float Predicate, float3 True, float3 False, out float3 Out)
        {
            Out = Predicate ? True : False;
        }
        
        struct Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float
        {
        float3 WorldSpaceNormal;
        float3 WorldSpaceTangent;
        float3 WorldSpaceBiTangent;
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_82674548, float Boolean_9FF42DF6, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float IN, out float4 XZ_2)
        {
        float _Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean = Boolean_9FF42DF6;
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4 = Vector4_82674548;
        float _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[0];
        float _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[1];
        float _Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[2];
        float _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[3];
        float _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float;
        Unity_Divide_float(1, _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4 = IN.uv0;
        float4 _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4 = IN.uv2;
        float4 _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4;
        Unity_Branch_float4(_Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean, _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4, _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4, _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4);
        float2 _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float);
        float2 _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float, _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float);
        float2 _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4.xy), _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2, _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2, _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2);
        float2 _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2;
        Unity_Branch_float2(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2, _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2);
        UnitySamplerState _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2) );
        _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.rgb = UnpackNormal(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4);
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        float2 _Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2 = float2(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float, _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float);
        float3 _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3;
        Unity_Sign_float3(IN.WorldSpaceNormal, _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3);
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_R_1_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[0];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[1];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_B_3_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[2];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_A_4_Float = 0;
        float2 _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2 = float2(_Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float, 1);
        float2 _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2;
        Unity_Multiply_float2_float2(_Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2, _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2, _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2);
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float = IN.WorldSpaceNormal[0];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float = IN.WorldSpaceNormal[1];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float = IN.WorldSpaceNormal[2];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_A_4_Float = 0;
        float2 _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2 = float2(_Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float);
        float2 _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2;
        Unity_Add_float2(_Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2, _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2, _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2);
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[0];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[1];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_B_3_Float = 0;
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_A_4_Float = 0;
        float _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float;
        Unity_Multiply_float_float(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float);
        float3 _Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3 = float3(_Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float, _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float);
        float3 _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3;
        {
        float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
        _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3 = TransformWorldToTangent(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
        }
        float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
        Unity_Normalize_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3);
        float3 _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3;
        Unity_Branch_float3(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3, (_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.xyz), _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3);
        XZ_2 = (float4(_Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3, 1.0));
        }
        
        void Unity_NormalStrength_float(float3 In, float Strength, out float3 Out)
        {
            Out = float3(In.rg * Strength, lerp(1, In.b, saturate(Strength)));
        }
        
        void Unity_NormalBlend_float(float3 A, float3 B, out float3 Out)
        {
            Out = SafeNormalize(float3(A.rg + B.rg, A.b * B.b));
        }
        
        void Unity_Subtract_float(float A, float B, out float Out)
        {
            Out = A - B;
        }
        
        void Unity_Power_float(float A, float B, out float Out)
        {
            Out = pow(A, B);
        }
        
        void Unity_Lerp_float3(float3 A, float3 B, float3 T, out float3 Out)
        {
            Out = lerp(A, B, T);
        }
        
        void Unity_Remap_float(float In, float2 InMinMax, float2 OutMinMax, out float Out)
        {
            Out = OutMinMax.x + (In - InMinMax.x) * (OutMinMax.y - OutMinMax.x) / (InMinMax.y - InMinMax.x);
        }
        
        void Unity_Branch_float(float Predicate, float True, float False, out float Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_Multiply_float3_float3(float3 A, float3 B, out float3 Out)
        {
            Out = A * B;
        }
        
        void Unity_Lerp_float(float A, float B, float T, out float Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float
        {
        };
        
        void SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(float Vector1_32317166, float Vector1_FBE622A2, float Vector1_8C15C351, Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float IN, out float SmoothnessOverlay_1)
        {
        float _Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float = Vector1_32317166;
        float _Property_a00e29241d12f983b30177515b367ec9_Out_0_Float = Vector1_FBE622A2;
        float _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float;
        Unity_Sign_float(_Property_a00e29241d12f983b30177515b367ec9_Out_0_Float, _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float);
        float _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float;
        Unity_Add_float(_Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float, 1, _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float);
        float _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float;
        Unity_Multiply_float_float(_Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float, 0.5, _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float);
        float _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float;
        Unity_Ceiling_float(_Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float);
        float _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float = Vector1_8C15C351;
        float _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        Unity_Lerp_float(_Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float, _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float);
        SmoothnessOverlay_1 = _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        }
        
        void Unity_Lerp_float2(float2 A, float2 B, float2 T, out float2 Out)
        {
            Out = lerp(A, B, T);
        }
        
            // Graph Vertex
            struct VertexDescription
        {
        };
        
        VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
        {
            VertexDescription description = (VertexDescription)0;
            return description;
        }
        
            // Graph Pixel
            struct SurfaceDescription
        {
            float3 BaseColor;
            float3 Emission;
            float Alpha;
            float3 BentNormal;
            float Smoothness;
            float Occlusion;
            float3 NormalTS;
            float3 Specular;
        };
        
        SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
        {
            SurfaceDescription surface = (SurfaceDescription)0;
            UnityTexture2D _Property_9c271219f828108f958217e55cd6dc1d_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseColorMap);
            float4 _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4 = _BaseTilingOffset;
            float _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean = _BaseUsePlanarUV;
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_f392575634df5b86b63ff6e287282b30;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.uv0 = IN.uv0;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.uv2 = IN.uv2;
            float4 _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_9c271219f828108f958217e55cd6dc1d_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_f392575634df5b86b63ff6e287282b30, _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4);
            float4 _Property_4f676fce92c9378db3c3b92ae77fbff9_Out_0_Vector4 = _BaseColor;
            float4 _Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4, _Property_4f676fce92c9378db3c3b92ae77fbff9_Out_0_Vector4, _Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4);
            UnityTexture2D _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_DetailMap);
            float4 _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4 = _DetailTilingOffset;
            float _Split_9fa8573190399e8da2a843a4cab68164_R_1_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[0];
            float _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[1];
            float _Split_9fa8573190399e8da2a843a4cab68164_B_3_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[2];
            float _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[3];
            float2 _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_R_1_Float, _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float);
            float2 _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_B_3_Float, _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float);
            float2 _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2;
            Unity_TilingAndOffset_float(IN.uv0.xy, _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2, _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2, _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2);
            float4 _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.tex, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.samplerstate, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.GetTransformedUV(_TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2) );
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_R_4_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.r;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.g;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.b;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.a;
            float _Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_R_4_Float, 2, _Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float);
            float _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float;
            Unity_Add_float(_Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float, -1, _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float);
            float _Property_7d68da97cd169d8e8649255aec16158a_Out_0_Float = _DetailAlbedoScale;
            float _Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float;
            Unity_Multiply_float_float(_Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float, _Property_7d68da97cd169d8e8649255aec16158a_Out_0_Float, _Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float);
            float _Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float;
            Unity_Saturate_float(_Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float, _Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float);
            float _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float;
            Unity_Absolute_float(_Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float, _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float);
            Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83;
            float3 _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3;
            SG_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float(_Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4, _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float, _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float, _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83, _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3);
            UnityTexture2D _Property_5ca167b35599f78ab3722ec527327841_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverBaseColorMap);
            float4 _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4 = _CoverTilingOffset;
            float _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean = _CoverUsePlanarUV;
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_ad1db3524021ac898447cb6f6daa4180;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.uv0 = IN.uv0;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.uv2 = IN.uv2;
            float4 _PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_5ca167b35599f78ab3722ec527327841_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_ad1db3524021ac898447cb6f6daa4180, _PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4);
            float4 _Property_b34e94e0b1171480b3e35ff7f4793d7c_Out_0_Vector4 = _CoverBaseColor;
            float4 _Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4, _Property_b34e94e0b1171480b3e35ff7f4793d7c_Out_0_Vector4, _Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4);
            float _Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean = _USEDYNAMICCOVERTSTATICMASKF;
            UnityTexture2D _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskA);
            float4 _UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4 = IN.uv0;
            float4 _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.tex, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.samplerstate, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.GetTransformedUV((_UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4.xy)) );
            float _SampleTexture2D_79111e5af287b084822e60563309a632_R_4_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.r;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_G_5_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.g;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_B_6_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.b;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.a;
            float _Property_c022d8255938838aa73170f05c226269_Out_0_Float = _CoverMaskPower;
            float _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float, _Property_c022d8255938838aa73170f05c226269_Out_0_Float, _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float);
            float _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float;
            Unity_Clamp_float(_Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float, 0, 1, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float);
            float2 _Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2 = float2(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float, _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float);
            float2 _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2, float2(2, 2), _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2);
            float2 _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2;
            Unity_Add_float2(_Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2, float2(-1, -1), _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2);
            float _Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float = _DetailNormalScale;
            float2 _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2, (_Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float.xx), _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2);
            float _Split_492de324af96c482b50573c79f9fb6a0_R_1_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[0];
            float _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[1];
            float _Split_492de324af96c482b50573c79f9fb6a0_B_3_Float = 0;
            float _Split_492de324af96c482b50573c79f9fb6a0_A_4_Float = 0;
            float _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float;
            Unity_DotProduct_float2(_Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float);
            float _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float;
            Unity_Saturate_float(_DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float, _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float);
            float _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float;
            Unity_OneMinus_float(_Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float, _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float);
            float _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float;
            Unity_SquareRoot_float(_OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            float3 _Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3 = float3(_Split_492de324af96c482b50573c79f9fb6a0_R_1_Float, _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            UnityTexture2D _Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseNormalMap);
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv0 = IN.uv0;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv2 = IN.uv2;
            float4 _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4);
            float _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float = _BaseNormalScale;
            float3 _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4.xyz), _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3);
            float3 _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3;
            Unity_NormalBlend_float(_Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3, _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3);
            UnityTexture2D _Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverNormalMap);
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv0 = IN.uv0;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv2 = IN.uv2;
            float4 _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4);
            float _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float = _CoverNormalBlendHardness;
            float3 _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3);
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_R_1_Float = IN.WorldSpaceNormal[0];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float = IN.WorldSpaceNormal[1];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_B_3_Float = IN.WorldSpaceNormal[2];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_A_4_Float = 0;
            float _Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float = _Cover_Amount;
            float _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float = _Cover_Amount_Grow_Speed;
            float _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float;
            Unity_Subtract_float(4, _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float);
            float _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float;
            Unity_Divide_float(_Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float);
            float _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float;
            Unity_Absolute_float(_Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float, _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float);
            float _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float;
            Unity_Power_float(_Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float);
            float _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float;
            Unity_Clamp_float(_Power_c11fc5724f830485a9c4df249a854571_Out_2_Float, 0, 2, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float);
            float _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float;
            Unity_Multiply_float_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float);
            float _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float;
            Unity_Saturate_float(_Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float, _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float);
            float _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float;
            Unity_Clamp_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, 0, 0.9999, _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float);
            float _Property_89633a46f34e1f8996557a9178d78478_Out_0_Float = _Cover_Max_Angle;
            float _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float;
            Unity_Divide_float(_Property_89633a46f34e1f8996557a9178d78478_Out_0_Float, 45, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float);
            float _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float;
            Unity_OneMinus_float(_Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float);
            float _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float;
            Unity_Subtract_float(_Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float, _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float);
            float _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float;
            Unity_Clamp_float(_Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float, 0, 2, _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
            float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
            Unity_Divide_float(1, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float);
            float _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_67dcc607b6da848097d3412324311616_Out_3_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float, _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float);
            float _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float;
            Unity_Absolute_float(_Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float, _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float);
            float _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float = _CoverHardness;
            float _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float;
            Unity_Power_float(_Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float);
            float _Property_f8753bb05d835089bda460d144f93c48_Out_0_Float = _Cover_Min_Height;
            float _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float;
            Unity_OneMinus_float(_Property_f8753bb05d835089bda460d144f93c48_Out_0_Float, _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float);
            float _Split_c66e04f85a2a7f87884040056599e65d_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
            float _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
            float _Split_c66e04f85a2a7f87884040056599e65d_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
            float _Split_c66e04f85a2a7f87884040056599e65d_A_4_Float = 0;
            float _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float;
            Unity_Add_float(_OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float, _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float);
            float _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, 1, _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
            float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
            Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, 0, 1, _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float);
            float _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float = _Cover_Min_Height_Blending;
            float _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float, _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float);
            float _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float;
            Unity_Divide_float(_Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float);
            float _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float;
            Unity_OneMinus_float(_Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float, _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float);
            float _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float;
            Unity_Add_float(_OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float, -0.5, _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
            float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
            Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, 0, 1, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float);
            float _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float;
            Unity_Add_float(_Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float, _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float);
            float _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float;
            Unity_Clamp_float(_Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float, 0, 1, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float);
            float _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float;
            Unity_Multiply_float_float(_Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float);
            float _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float;
            Unity_Multiply_float_float(_Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float);
            float3 _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3, (_Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float.xxx), _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3);
            float3 _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3;
            {
                float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
                _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3 = TransformTangentToWorldDir(_Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3.xyz, tangentTransform, false).xyz;
            }
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_R_1_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[0];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[1];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_B_3_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[2];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_A_4_Float = 0;
            float _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float;
            Unity_Multiply_float_float(_Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float);
            float _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float);
            float _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float);
            float _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float, _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float);
            UnityTexture2D _Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_36e64648ad8a6a849bc794b8693519da;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv0 = IN.uv0;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv2 = IN.uv2;
            float4 _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_36e64648ad8a6a849bc794b8693519da, _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4);
            float _Split_198ec92f3e753d8a9ad50db7d6527324_R_1_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[0];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[1];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[2];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[3];
            float _Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float = _CoverHeightMapMin;
            float _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float = _CoverHeightMapMax;
            float2 _Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2 = float2(_Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float, _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float);
            float _Property_277f22c36084858981418fa95133a562_Out_0_Float = _CoverHeightMapOffset;
            float2 _Add_53997153562831859cc7b582f3068877_Out_2_Vector2;
            Unity_Add_float2(_Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2, (_Property_277f22c36084858981418fa95133a562_Out_0_Float.xx), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2);
            float _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float, float2 (0, 1), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float);
            float _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float, _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float);
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float = IN.VertexColor[0];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float = IN.VertexColor[1];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_B_3_Float = IN.VertexColor[2];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_A_4_Float = IN.VertexColor[3];
            float _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float, _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float, _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float);
            float _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float;
            Unity_Saturate_float(_Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float);
            float _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float);
            float _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float;
            Unity_Branch_float(_Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float);
            float3 _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3;
            Unity_Lerp_float3(_BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3, (_Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4.xyz), (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxx), _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3);
            float4 _Property_e687576468764d85b6b46dca96d8a8e3_Out_0_Vector4 = _WetColor;
            float3 _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3;
            Unity_Multiply_float3_float3((_Property_e687576468764d85b6b46dca96d8a8e3_Out_0_Vector4.xyz), _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3, _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3);
            float _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float;
            Unity_OneMinus_float(_Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float);
            float3 _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
            Unity_Lerp_float3(_Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3, _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3, (_OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float.xxx), _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3);
            UnityTexture2D _Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv0 = IN.uv0;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv2 = IN.uv2;
            float4 _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4);
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_R_1_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[0];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[1];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_B_3_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[2];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[3];
            float _Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float = _BaseAORemapMin;
            float _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float = _BaseAORemapMax;
            float2 _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2 = float2(_Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float, _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float);
            float _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float, float2 (0, 1), _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2, _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float);
            float _Property_e353baf414594b8882fb914562e81165_Out_0_Float = _BaseSmoothnessRemapMin;
            float _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float = _BaseSmoothnessRemapMax;
            float2 _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2 = float2(_Property_e353baf414594b8882fb914562e81165_Out_0_Float, _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float);
            float _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float, float2 (0, 1), _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2, _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float);
            float _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float, 2, _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float);
            float _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float;
            Unity_Add_float(_Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float, -1, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float);
            float _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float = _DetailSmoothnessScale;
            float _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float;
            Unity_Multiply_float_float(_Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float, _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float);
            float _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float;
            Unity_Saturate_float(_Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float, _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float);
            float _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float;
            Unity_Absolute_float(_Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float);
            Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da;
            float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float;
            SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(_Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float);
            float _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float;
            Unity_Saturate_float(_BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float2 _Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2 = float2(_Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float _Property_5e08cfb127183a8993376f9087501eee_Out_0_Float = _CoverAORemapMin;
            float _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float = _CoverAORemapMax;
            float2 _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2 = float2(_Property_5e08cfb127183a8993376f9087501eee_Out_0_Float, _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float);
            float _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float, float2 (0, 1), _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2, _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float);
            float _Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float = _CoverSmoothnessRemapMin;
            float _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float = _CoverSmoothnessRemapMax;
            float2 _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2 = float2(_Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float, _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float);
            float _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float, float2 (0, 1), _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2 = float2(_Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2;
            Unity_Lerp_float2(_Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2, _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xx), _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2);
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_R_1_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[0];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[1];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_B_3_Float = 0;
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_A_4_Float = 0;
            float _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float = _WetSmoothness;
            float _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            Unity_Lerp_float(_Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float, _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float, _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float);
            float _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float = _CoverNormalScale;
            float3 _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3);
            float3 _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxx), _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3);
            UnityTexture2D _Property_f617479b11216b84b89956263f8d3c08_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_SpecularColorMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.uv0 = IN.uv0;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.uv2 = IN.uv2;
            float4 _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_f617479b11216b84b89956263f8d3c08_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d, _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4);
            float4 _Property_112303b9c27a1284b20f0a5c49fb436a_Out_0_Vector4 = _SpecularColor;
            float4 _Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4, _Property_112303b9c27a1284b20f0a5c49fb436a_Out_0_Vector4, _Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4);
            UnityTexture2D _Property_0c768f7d1094a8878d837f25970dbd49_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverSpecularColorMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_4b88db16993b7d84a6c9e021b5992a38;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.uv0 = IN.uv0;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.uv2 = IN.uv2;
            float4 _PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_0c768f7d1094a8878d837f25970dbd49_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_4b88db16993b7d84a6c9e021b5992a38, _PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4);
            float4 _Property_51d3c44a7110108d9e8c9a3acf54125f_Out_0_Vector4 = _CoverSpecularColor;
            float4 _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4, _Property_51d3c44a7110108d9e8c9a3acf54125f_Out_0_Vector4, _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4);
            float4 _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4;
            Unity_Lerp_float4(_Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4, _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxxx), _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4);
            surface.BaseColor = _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
            surface.Emission = float3(0, 0, 0);
            surface.Alpha = 1;
            surface.BentNormal = IN.TangentSpaceNormal;
            surface.Smoothness = _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            surface.Occlusion = _Split_beb57fcf05cbb6809f536625bac5fcbc_R_1_Float;
            surface.NormalTS = _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            surface.Specular = (_Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4.xyz);
            return surface;
        }
        
            // --------------------------------------------------
            // Build Graph Inputs
            #ifdef HAVE_VFX_MODIFICATION
            #define VFX_SRP_ATTRIBUTES AttributesMesh
            #define VaryingsMeshType VaryingsMeshToPS
            #define VFX_SRP_VARYINGS VaryingsMeshType
            #define VFX_SRP_SURFACE_INPUTS FragInputs
            #endif
            
        VertexDescriptionInputs AttributesMeshToVertexDescriptionInputs(AttributesMesh input)
        {
            VertexDescriptionInputs output;
            ZERO_INITIALIZE(VertexDescriptionInputs, output);
        
        
            return output;
        }
        
        VertexDescription GetVertexDescription(AttributesMesh input, float3 timeParameters
        #ifdef HAVE_VFX_MODIFICATION
            , AttributesElement element
        #endif
        )
        {
            // build graph inputs
            VertexDescriptionInputs vertexDescriptionInputs = AttributesMeshToVertexDescriptionInputs(input);
            // Override time parameters with used one (This is required to correctly handle motion vectors for vertex animation based on time)
        
            // evaluate vertex graph
        #ifdef HAVE_VFX_MODIFICATION
            GraphProperties properties;
            ZERO_INITIALIZE(GraphProperties, properties);
        
            // Fetch the vertex graph properties for the particle instance.
            GetElementVertexProperties(element, properties);
        
            VertexDescription vertexDescription = VertexDescriptionFunction(vertexDescriptionInputs, properties);
        #else
            VertexDescription vertexDescription = VertexDescriptionFunction(vertexDescriptionInputs);
        #endif
            return vertexDescription;
        
        }
        
        AttributesMesh ApplyMeshModification(AttributesMesh input, float3 timeParameters
        #ifdef USE_CUSTOMINTERP_SUBSTRUCT
            #ifdef TESSELLATION_ON
            , inout VaryingsMeshToDS varyings
            #else
            , inout VaryingsMeshToPS varyings
            #endif
        #endif
        #ifdef HAVE_VFX_MODIFICATION
                , AttributesElement element
        #endif
            )
        {
            VertexDescription vertexDescription = GetVertexDescription(input, timeParameters
        #ifdef HAVE_VFX_MODIFICATION
                , element
        #endif
            );
        
            // copy graph output to the results
        
            /* WARNING: $splice Could not find named fragment 'CustomInterpolatorVertMeshCustomInterpolation' */
        
            return input;
        }
        
        #if defined(_ADD_CUSTOM_VELOCITY) // For shader graph custom velocity
        // Return precomputed Velocity in object space
        float3 GetCustomVelocity(AttributesMesh input
        #ifdef HAVE_VFX_MODIFICATION
            , AttributesElement element
        #endif
        )
        {
            VertexDescription vertexDescription = GetVertexDescription(input, _TimeParameters.xyz
        #ifdef HAVE_VFX_MODIFICATION
                , element
        #endif
            );
            return vertexDescription.CustomVelocity;
        }
        #endif
        
        FragInputs BuildFragInputs(VaryingsMeshToPS input)
        {
            FragInputs output;
            ZERO_INITIALIZE(FragInputs, output);
        
            // Init to some default value to make the computer quiet (else it output 'divide by zero' warning even if value is not used).
            // TODO: this is a really poor workaround, but the variable is used in a bunch of places
            // to compute normals which are then passed on elsewhere to compute other values...
            output.tangentToWorld = k_identity3x3;
            output.positionSS = input.positionCS;       // input.positionCS is SV_Position
        
            output.positionRWS =                input.positionRWS;
            output.positionPredisplacementRWS = input.positionPredisplacementRWS;
            output.tangentToWorld =             BuildTangentToWorld(input.tangentWS, input.normalWS);
            output.texCoord0 =                  input.texCoord0;
            output.texCoord1 =                  input.texCoord1;
            output.texCoord2 =                  input.texCoord2;
            output.texCoord3 =                  input.texCoord3;
            output.color =                      input.color;
        
        #ifdef HAVE_VFX_MODIFICATION
            // FragInputs from VFX come from two places: Interpolator or CBuffer.
        #if VFX_USE_GRAPH_VALUES
            uint instanceActiveIndex = asuint(UNITY_ACCESS_INSTANCED_PROP(PerInstance, _InstanceActiveIndex));
            /* WARNING: $splice Could not find named fragment 'VFXLoadGraphValues' */
        #endif
        
            /* WARNING: $splice Could not find named fragment 'VFXSetFragInputs' */
        
        #endif
        
            // splice point to copy custom interpolator fields from varyings to frag inputs
            /* WARNING: $splice Could not find named fragment 'CustomInterpolatorVaryingsToFragInputs' */
        
            return output;
        }
        
        // existing HDRP code uses the combined function to go directly from packed to frag inputs
        FragInputs UnpackVaryingsMeshToFragInputs(PackedVaryingsMeshToPS input)
        {
            UNITY_SETUP_INSTANCE_ID(input);
        #if defined(HAVE_VFX_MODIFICATION) && defined(UNITY_INSTANCING_ENABLED)
            unity_InstanceID = input.instanceID;
        #endif
            VaryingsMeshToPS unpacked = UnpackVaryingsMeshToPS(input);
            return BuildFragInputs(unpacked);
        }
            SurfaceDescriptionInputs FragInputsToSurfaceDescriptionInputs(FragInputs input, float3 viewWS)
        {
            SurfaceDescriptionInputs output;
            ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
        
            output.WorldSpaceNormal =                           normalize(input.tangentToWorld[2].xyz);
            #if defined(SHADER_STAGE_RAY_TRACING)
            #else
            #endif
            output.TangentSpaceNormal =                         float3(0.0f, 0.0f, 1.0f);
            output.WorldSpaceTangent =                          input.tangentToWorld[0].xyz;
            output.WorldSpaceBiTangent =                        input.tangentToWorld[1].xyz;
            output.AbsoluteWorldSpacePosition =                 GetAbsolutePositionWS(input.positionRWS);
        
        #if UNITY_UV_STARTS_AT_TOP
        #else
        #endif
        
        
            output.uv0 =                                        input.texCoord0;
            output.uv2 =                                        input.texCoord2;
            output.VertexColor =                                input.color;
        
            // splice point to copy frag inputs custom interpolator pack into the SDI
            /* WARNING: $splice Could not find named fragment 'CustomInterpolatorCopyToSDI' */
        
            return output;
        }
        
            // --------------------------------------------------
            // Build Surface Data (Specific Material)
        
        void ApplyDecalToSurfaceDataNoNormal(DecalSurfaceData decalSurfaceData, inout SurfaceData surfaceData);
        
        void ApplyDecalAndGetNormal(FragInputs fragInputs, PositionInputs posInput, SurfaceDescription surfaceDescription,
            inout SurfaceData surfaceData)
        {
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
        #ifdef DECAL_NORMAL_BLENDING
            // SG nodes don't ouptut surface gradients, so if decals require surf grad blending, we have to convert
            // the normal to gradient before applying the decal. We then have to resolve the gradient back to world space
            float3 normalTS;
        
            normalTS = SurfaceGradientFromTangentSpaceNormalAndFromTBN(surfaceDescription.NormalTS,
            fragInputs.tangentToWorld[0], fragInputs.tangentToWorld[1]);
        
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, fragInputs.tangentToWorld[2], normalTS);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        
            GetNormalWS_SG(fragInputs, normalTS, surfaceData.normalWS, doubleSidedConstants);
        #else
            // normal delivered to master node
            GetNormalWS(fragInputs, surfaceDescription.NormalTS, surfaceData.normalWS, doubleSidedConstants);
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                // Both uses and modifies 'surfaceData.normalWS'.
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, surfaceData.normalWS.xyz);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        #endif
        }
        void BuildSurfaceData(FragInputs fragInputs, inout SurfaceDescription surfaceDescription, float3 V, PositionInputs posInput, out SurfaceData surfaceData, out float3 bentNormalWS)
        {
            ZERO_INITIALIZE(SurfaceData, surfaceData);
        
            // specularOcclusion need to be init ahead of decal to quiet the compiler that modify the SurfaceData struct
            // however specularOcclusion can come from the graph, so need to be init here so it can be override.
            surfaceData.specularOcclusion = 1.0;
        
            surfaceData.baseColor =                 surfaceDescription.BaseColor;
            surfaceData.perceptualSmoothness =      surfaceDescription.Smoothness;
            surfaceData.ambientOcclusion =          surfaceDescription.Occlusion;
            surfaceData.specularColor =             surfaceDescription.Specular;
        
            #if defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE) || defined(_REFRACTION_THIN)
                if (_EnableSSRefraction)
                {
        
                    surfaceData.transmittanceMask = (1.0 - surfaceDescription.Alpha);
                    surfaceDescription.Alpha = 1.0;
                }
                else
                {
                    surfaceData.ior = 1.0;
                    surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                    surfaceData.atDistance = 1.0;
                    surfaceData.transmittanceMask = 0.0;
                    surfaceDescription.Alpha = 1.0;
                }
            #else
                surfaceData.ior = 1.0;
                surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                surfaceData.atDistance = 1.0;
                surfaceData.transmittanceMask = 0.0;
            #endif
        
            // These static material feature allow compile time optimization
            surfaceData.materialFeatures = MATERIALFEATUREFLAGS_LIT_STANDARD;
            #ifdef _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SUBSURFACE_SCATTERING;
            #endif
        
            #ifdef _MATERIAL_FEATURE_TRANSMISSION
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
            #endif
        
            #ifdef _MATERIAL_FEATURE_ANISOTROPY
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_ANISOTROPY;
        
                // Initialize the normal to something non-zero to avoid a div-zero warning for anisotropy.
                surfaceData.normalWS = float3(0, 1, 0);
            #endif
        
            #ifdef _MATERIAL_FEATURE_IRIDESCENCE
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_IRIDESCENCE;
            #endif
        
            #ifdef _MATERIAL_FEATURE_SPECULAR_COLOR
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SPECULAR_COLOR;
            #endif
        
            #ifdef _MATERIAL_FEATURE_CLEAR_COAT
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_CLEAR_COAT;
            #endif
        
            #if defined (_MATERIAL_FEATURE_SPECULAR_COLOR) && defined (_ENERGY_CONSERVING_SPECULAR)
                // Require to have setup baseColor
                // Reproduce the energy conservation done in legacy Unity. Not ideal but better for compatibility and users can unchek it
                surfaceData.baseColor *= (1.0 - Max3(surfaceData.specularColor.r, surfaceData.specularColor.g, surfaceData.specularColor.b));
            #endif
        
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
            ApplyDecalAndGetNormal(fragInputs, posInput, surfaceDescription, surfaceData);
        
            surfaceData.geomNormalWS = fragInputs.tangentToWorld[2];
        
            surfaceData.tangentWS = normalize(fragInputs.tangentToWorld[0].xyz);    // The tangent is not normalize in tangentToWorld for mikkt. TODO: Check if it expected that we normalize with Morten. Tag: SURFACE_GRADIENT
        
        
            bentNormalWS = surfaceData.normalWS;
        
            surfaceData.tangentWS = Orthonormalize(surfaceData.tangentWS, surfaceData.normalWS);
        
            #ifdef DEBUG_DISPLAY
                if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
                {
                    // TODO: need to update mip info
                    surfaceData.metallic = 0;
                }
        
                // We need to call ApplyDebugToSurfaceData after filling the surfarcedata and before filling builtinData
                // as it can modify attribute use for static lighting
                ApplyDebugToSurfaceData(fragInputs.tangentToWorld, surfaceData);
            #endif
        
            // By default we use the ambient occlusion with Tri-ace trick (apply outside) for specular occlusion.
            // If user provide bent normal then we process a better term
            #if defined(_SPECULAR_OCCLUSION_CUSTOM)
                // Just use the value passed through via the slot (not active otherwise)
            #elif defined(_SPECULAR_OCCLUSION_FROM_AO_BENT_NORMAL)
                // If we have bent normal and ambient occlusion, process a specular occlusion
                surfaceData.specularOcclusion = GetSpecularOcclusionFromBentAO(V, bentNormalWS, surfaceData.normalWS, surfaceData.ambientOcclusion, PerceptualSmoothnessToPerceptualRoughness(surfaceData.perceptualSmoothness));
            #elif defined(_AMBIENT_OCCLUSION) && defined(_SPECULAR_OCCLUSION_FROM_AO)
                surfaceData.specularOcclusion = GetSpecularOcclusionFromAmbientOcclusion(ClampNdotV(dot(surfaceData.normalWS, V)), surfaceData.ambientOcclusion, PerceptualSmoothnessToRoughness(surfaceData.perceptualSmoothness));
            #endif
        
            #if defined(_ENABLE_GEOMETRIC_SPECULAR_AA) && !defined(SHADER_STAGE_RAY_TRACING)
                surfaceData.perceptualSmoothness = GeometricNormalFiltering(surfaceData.perceptualSmoothness, fragInputs.tangentToWorld[2], surfaceDescription.SpecularAAScreenSpaceVariance, surfaceDescription.SpecularAAThreshold);
            #endif
        }
        
            // --------------------------------------------------
            // Get Surface And BuiltinData
        
            void GetSurfaceAndBuiltinData(FragInputs fragInputs, float3 V, inout PositionInputs posInput, out SurfaceData surfaceData, out BuiltinData builtinData RAY_TRACING_OPTIONAL_PARAMETERS)
            {
                // Don't dither if displaced tessellation (we're fading out the displacement instead to match the next LOD)
                #if !defined(SHADER_STAGE_RAY_TRACING) && !defined(_TESSELLATION_DISPLACEMENT)
                #ifdef LOD_FADE_CROSSFADE // enable dithering LOD transition if user select CrossFade transition in LOD group
                LODDitheringTransition(ComputeFadeMaskSeed(V, posInput.positionSS), unity_LODFade.x);
                #endif
                #endif
        
                #ifndef SHADER_UNLIT
                #ifdef _DOUBLESIDED_ON
                    float3 doubleSidedConstants = _DoubleSidedConstants.xyz;
                #else
                    float3 doubleSidedConstants = float3(1.0, 1.0, 1.0);
                #endif
        
                ApplyDoubleSidedFlipOrMirror(fragInputs, doubleSidedConstants); // Apply double sided flip on the vertex normal
                #endif // SHADER_UNLIT
        
                SurfaceDescriptionInputs surfaceDescriptionInputs = FragInputsToSurfaceDescriptionInputs(fragInputs, V);
        
                #if defined(HAVE_VFX_MODIFICATION)
                GraphProperties properties;
                ZERO_INITIALIZE(GraphProperties, properties);
        
                GetElementPixelProperties(fragInputs, properties);
        
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs, properties);
                #else
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs);
                #endif
        
                // Perform alpha test very early to save performance (a killed pixel will not sample textures)
                // TODO: split graph evaluation to grab just alpha dependencies first? tricky..
                #ifdef _ALPHATEST_ON
                    float alphaCutoff = surfaceDescription.AlphaClipThreshold;
                    #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
                    // The TransparentDepthPrepass is also used with SSR transparent.
                    // If an artists enable transaprent SSR but not the TransparentDepthPrepass itself, then we use AlphaClipThreshold
                    // otherwise if TransparentDepthPrepass is enabled we use AlphaClipThresholdDepthPrepass
                    #elif SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_POSTPASS
                    // DepthPostpass always use its own alpha threshold
                    alphaCutoff = surfaceDescription.AlphaClipThresholdDepthPostpass;
                    #elif (SHADERPASS == SHADERPASS_SHADOWS) || (SHADERPASS == SHADERPASS_RAYTRACING_VISIBILITY)
                    // If use shadow threshold isn't enable we don't allow any test
                    #endif
        
                    GENERIC_ALPHA_TEST(surfaceDescription.Alpha, alphaCutoff);
                #endif
        
                #if !defined(SHADER_STAGE_RAY_TRACING) && _DEPTHOFFSET_ON
                ApplyDepthOffsetPositionInput(V, surfaceDescription.DepthOffset, GetViewForwardDir(), GetWorldToHClipMatrix(), posInput);
                #endif
        
                #ifndef SHADER_UNLIT
                float3 bentNormalWS;
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData, bentNormalWS);
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD1
                    float4 lightmapTexCoord1 = fragInputs.texCoord1;
                #else
                    float4 lightmapTexCoord1 = float4(0,0,0,0);
                #endif
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD2
                    float4 lightmapTexCoord2 = fragInputs.texCoord2;
                #else
                    float4 lightmapTexCoord2 = float4(0,0,0,0);
                #endif
        
                // Builtin Data
                // For back lighting we use the oposite vertex normal
                InitBuiltinData(posInput, surfaceDescription.Alpha, bentNormalWS, -fragInputs.tangentToWorld[2], lightmapTexCoord1, lightmapTexCoord2, builtinData);
        
                #else
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData);
        
                ZERO_BUILTIN_INITIALIZE(builtinData); // No call to InitBuiltinData as we don't have any lighting
                builtinData.opacity = surfaceDescription.Alpha;
        
                #if defined(DEBUG_DISPLAY)
                    // Light Layers are currently not used for the Unlit shader (because it is not lit)
                    // But Unlit objects do cast shadows according to their rendering layer mask, which is what we want to
                    // display in the light layers visualization mode, therefore we need the renderingLayers
                    builtinData.renderingLayers = GetMeshRenderingLightLayer();
                #endif
        
                #endif // SHADER_UNLIT
        
                #ifdef _ALPHATEST_ON
                    // Used for sharpening by alpha to mask - Alpha to covertage is only used with depth only and forward pass (no shadow pass, no transparent pass)
                    builtinData.alphaClipTreshold = alphaCutoff;
                #endif
        
                // override sampleBakedGI - not used by Unlit
        
                builtinData.emissiveColor = surfaceDescription.Emission;
        
                // Note this will not fully work on transparent surfaces (can check with _SURFACE_TYPE_TRANSPARENT define)
                // We will always overwrite vt feeback with the nearest. So behind transparent surfaces vt will not be resolved
                // This is a limitation of the current MRT approach.
                #ifdef UNITY_VIRTUAL_TEXTURING
                #endif
        
                #if _DEPTHOFFSET_ON
                builtinData.depthOffset = surfaceDescription.DepthOffset;
                #endif
        
                // TODO: We should generate distortion / distortionBlur for non distortion pass
                #if (SHADERPASS == SHADERPASS_DISTORTION)
                builtinData.distortion = surfaceDescription.Distortion;
                builtinData.distortionBlur = surfaceDescription.DistortionBlur;
                #endif
        
                #ifndef SHADER_UNLIT
                // PostInitBuiltinData call ApplyDebugToBuiltinData
                PostInitBuiltinData(V, posInput, surfaceData, builtinData);
                #else
                ApplyDebugToBuiltinData(builtinData);
                #endif
        
                RAY_TRACING_OPTIONAL_ALPHA_TEST_PASS
            }
        
            // --------------------------------------------------
            // Main
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassLightTransport.hlsl"
        
            // --------------------------------------------------
            // Visual Effect Vertex Invocations
        
        	#ifdef HAVE_VFX_MODIFICATION
        	#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
        	#endif
        
            ENDHLSL
        }
        Pass
        {
            Name "ScenePickingPass"
            Tags
            {
                "LightMode" = "Picking"
            }
        
            // Render State
            Cull [_CullMode]
        
            // Debug
            // <None>
        
            // --------------------------------------------------
            // Pass
        
            HLSLPROGRAM
        
            // Pragmas
            #pragma multi_compile _ DOTS_INSTANCING_ON
        #pragma editor_sync_compilation
        #pragma instancing_options renderinglayer
        #pragma target 4.5
        #pragma vertex Vert
        #pragma fragment Frag
        #pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal switch
        #pragma multi_compile_instancing
        
            // Keywords
            #pragma shader_feature _ _SURFACE_TYPE_TRANSPARENT
        #pragma shader_feature_local _ _DOUBLESIDED_ON
        #pragma shader_feature_local _ _ADD_PRECOMPUTED_VELOCITY
        #pragma shader_feature_local _ _TRANSPARENT_WRITES_MOTION_VEC
        #pragma shader_feature_local_fragment _ _ENABLE_FOG_ON_TRANSPARENT
        #pragma multi_compile _ LOD_FADE_CROSSFADE
        #pragma shader_feature_local_fragment _ _DISABLE_DECALS
        #pragma shader_feature_local_raytracing _ _DISABLE_DECALS
        #pragma shader_feature_local_fragment _ _DISABLE_SSR
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR
        #pragma shader_feature_local_fragment _ _DISABLE_SSR_TRANSPARENT
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR_TRANSPARENT
        #pragma shader_feature_local _ _REFRACTION_PLANE _REFRACTION_SPHERE _REFRACTION_THIN
            // GraphKeywords: <None>
        
            // For custom interpolators to inject a substruct definition before FragInputs definition,
            // allowing for FragInputs to capture CI's intended for ShaderGraph's SDI.
            struct CustomInterpolators
        {
        };
        #define USE_CUSTOMINTERP_SUBSTRUCT
        
        
        
            // TODO: Merge FragInputsVFX substruct with CustomInterpolators.
        	#ifdef HAVE_VFX_MODIFICATION
        	struct FragInputsVFX
            {
                /* WARNING: $splice Could not find named fragment 'FragInputsVFX' */
            };
            #endif
        
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/GeometricTools.hlsl" // Required by Tessellation.hlsl
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Tessellation.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl" // Required to be include before we include properties as it define DECLARE_STACK_CB
            // Always include Shader Graph version
            // Always include last to avoid double macros
            #include "Packages/com.unity.shadergraph/ShaderGraphLibrary/Functions.hlsl" // Need to be here for Gradient struct definition
        
            // --------------------------------------------------
            // Defines
        
            // Attribute
            #define ATTRIBUTES_NEED_NORMAL
            #define ATTRIBUTES_NEED_TANGENT
            #define ATTRIBUTES_NEED_TEXCOORD0
            #define ATTRIBUTES_NEED_TEXCOORD2
            #define ATTRIBUTES_NEED_COLOR
            #define VARYINGS_NEED_POSITION_WS
            #define VARYINGS_NEED_TANGENT_TO_WORLD
            #define VARYINGS_NEED_TEXCOORD0
            #define VARYINGS_NEED_TEXCOORD2
            #define VARYINGS_NEED_COLOR
        
            #define HAVE_MESH_MODIFICATION
        
            //Strip down the FragInputs.hlsl (on graphics), so we can only optimize the interpolators we use.
            //if by accident something requests contents of FragInputs.hlsl, it will be caught as a compiler error
            //Frag inputs stripping is only enabled when FRAG_INPUTS_ENABLE_STRIPPING is set
            #if !defined(SHADER_STAGE_RAY_TRACING) && SHADERPASS != SHADERPASS_RAYTRACING_GBUFFER && SHADERPASS != SHADERPASS_FULL_SCREEN_DEBUG
            #define FRAG_INPUTS_ENABLE_STRIPPING
            #endif
            #define FRAG_INPUTS_USE_TEXCOORD0
            #define FRAG_INPUTS_USE_TEXCOORD2
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/FragInputs.hlsl"
        
        
        
            #define SHADERPASS SHADERPASS_DEPTH_ONLY
        #define SCENEPICKINGPASS 1
        
        
            // Following two define are a workaround introduce in 10.1.x for RaytracingQualityNode
            // The ShaderGraph don't support correctly migration of this node as it serialize all the node data
            // in the json file making it impossible to uprgrade. Until we get a fix, we do a workaround here
            // to still allow us to rename the field and keyword of this node without breaking existing code.
            #ifdef RAYTRACING_SHADER_GRAPH_DEFAULT
            #define RAYTRACING_SHADER_GRAPH_HIGH
            #endif
        
            #ifdef RAYTRACING_SHADER_GRAPH_RAYTRACED
            #define RAYTRACING_SHADER_GRAPH_LOW
            #endif
            // end
        
            #ifndef SHADER_UNLIT
            // We need isFrontFace when using double sided - it is not required for unlit as in case of unlit double sided only drive the cullmode
            // VARYINGS_NEED_CULLFACE can be define by VaryingsMeshToPS.FaceSign input if a IsFrontFace Node is included in the shader graph.
            #if defined(_DOUBLESIDED_ON) && !defined(VARYINGS_NEED_CULLFACE)
                #define VARYINGS_NEED_CULLFACE
            #endif
            #endif
        
            // Specific Material Define
        #define _MATERIAL_FEATURE_SPECULAR_COLOR 1
        #define _AMBIENT_OCCLUSION 1
        #define _SPECULAR_OCCLUSION_FROM_AO 1
        #define _ENERGY_CONSERVING_SPECULAR 1
        
        // If we use subsurface scattering, enable output split lighting (for forward pass)
        #if defined(_MATERIAL_FEATURE_SUBSURFACE_SCATTERING) && !defined(_SURFACE_TYPE_TRANSPARENT)
            #define OUTPUT_SPLIT_LIGHTING
        #endif
        
        // This shader support recursive rendering for raytracing
        #define HAVE_RECURSIVE_RENDERING
        
        // In Path Tracing, For all single-sided, refractive materials, we want to force a thin refraction model
        #if (SHADERPASS == SHADERPASS_PATH_TRACING) && !defined(_DOUBLESIDED_ON) && (defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE))
            #undef  _REFRACTION_PLANE
            #undef  _REFRACTION_SPHERE
            #define _REFRACTION_THIN
        #endif
            // Caution: we can use the define SHADER_UNLIT onlit after the above Material include as it is the Unlit template who define it
        
            // To handle SSR on transparent correctly with a possibility to enable/disable it per framesettings
            // we should have a code like this:
            // if !defined(_DISABLE_SSR_TRANSPARENT)
            // pragma multi_compile _ WRITE_NORMAL_BUFFER
            // endif
            // i.e we enable the multicompile only if we can receive SSR or not, and then C# code drive
            // it based on if SSR transparent in frame settings and not (and stripper can strip it).
            // this is currently not possible with our current preprocessor as _DISABLE_SSR_TRANSPARENT is a keyword not a define
            // so instead we used this and chose to pay the extra cost of normal write even if SSR transaprent is disabled.
            // Ideally the shader graph generator should handle it but condition below can't be handle correctly for now.
            #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
            #if !defined(_DISABLE_SSR_TRANSPARENT) && !defined(SHADER_UNLIT)
                #define WRITE_NORMAL_BUFFER
            #endif
            #endif
        
            #ifndef DEBUG_DISPLAY
                // In case of opaque we don't want to perform the alpha test, it is done in depth prepass and we use depth equal for ztest (setup from UI)
                // Don't do it with debug display mode as it is possible there is no depth prepass in this case
                #if !defined(_SURFACE_TYPE_TRANSPARENT)
                    #if SHADERPASS == SHADERPASS_FORWARD
                    #define SHADERPASS_FORWARD_BYPASS_ALPHA_TEST
                    #elif SHADERPASS == SHADERPASS_GBUFFER
                    #define SHADERPASS_GBUFFER_BYPASS_ALPHA_TEST
                    #endif
                #endif
            #endif
        
            // Define _DEFERRED_CAPABLE_MATERIAL for shader capable to run in deferred pass
            #if defined(SHADER_LIT) && !defined(_SURFACE_TYPE_TRANSPARENT)
                #define _DEFERRED_CAPABLE_MATERIAL
            #endif
        
            // Translate transparent motion vector define
            #if defined(_TRANSPARENT_WRITES_MOTION_VEC) && defined(_SURFACE_TYPE_TRANSPARENT)
                #define _WRITE_TRANSPARENT_MOTION_VECTOR
            #endif
        
            // -- Graph Properties
            CBUFFER_START(UnityPerMaterial)
        float4 _BaseColor;
        float4 _BaseColorMap_TexelSize;
        float _BaseUsePlanarUV;
        float4 _BaseTilingOffset;
        float4 _SpecularColor;
        float4 _SpecularColorMap_TexelSize;
        float4 _BaseNormalMap_TexelSize;
        float _BaseNormalScale;
        float4 _BaseMaskMap_TexelSize;
        float _BaseAORemapMin;
        float _BaseAORemapMax;
        float _BaseSmoothnessRemapMin;
        float _BaseSmoothnessRemapMax;
        float _USEDYNAMICCOVERTSTATICMASKF;
        float4 _CoverMaskA_TexelSize;
        float _CoverMaskPower;
        float _Cover_Amount;
        float _Cover_Amount_Grow_Speed;
        float _Cover_Max_Angle;
        float _Cover_Min_Height;
        float _Cover_Min_Height_Blending;
        float4 _CoverBaseColor;
        float4 _CoverBaseColorMap_TexelSize;
        float _CoverUsePlanarUV;
        float4 _CoverTilingOffset;
        float4 _CoverSpecularColor;
        float4 _CoverSpecularColorMap_TexelSize;
        float4 _CoverNormalMap_TexelSize;
        float _CoverNormalScale;
        float _CoverNormalBlendHardness;
        float _CoverHardness;
        float _CoverHeightMapMin;
        float _CoverHeightMapMax;
        float _CoverHeightMapOffset;
        float4 _CoverMaskMap_TexelSize;
        float _CoverAORemapMin;
        float _CoverAORemapMax;
        float _CoverSmoothnessRemapMin;
        float _CoverSmoothnessRemapMax;
        float4 _DetailMap_TexelSize;
        float4 _DetailTilingOffset;
        float _DetailAlbedoScale;
        float _DetailNormalScale;
        float _DetailSmoothnessScale;
        float4 _WetColor;
        float _WetSmoothness;
        float4 _EmissionColor;
        float _UseShadowThreshold;
        float4 _DoubleSidedConstants;
        float _BlendMode;
        float _EnableBlendModePreserveSpecularLighting;
        float _RayTracing;
        float _RefractionModel;
        CBUFFER_END
        
        
        // Object and Global properties
        SAMPLER(SamplerState_Linear_Repeat);
        SAMPLER(SamplerState_Linear_Repeat_Aniso8);
        TEXTURE2D(_BaseColorMap);
        SAMPLER(sampler_BaseColorMap);
        TEXTURE2D(_SpecularColorMap);
        SAMPLER(sampler_SpecularColorMap);
        TEXTURE2D(_BaseNormalMap);
        SAMPLER(sampler_BaseNormalMap);
        TEXTURE2D(_BaseMaskMap);
        SAMPLER(sampler_BaseMaskMap);
        TEXTURE2D(_CoverMaskA);
        SAMPLER(sampler_CoverMaskA);
        TEXTURE2D(_CoverBaseColorMap);
        SAMPLER(sampler_CoverBaseColorMap);
        TEXTURE2D(_CoverSpecularColorMap);
        SAMPLER(sampler_CoverSpecularColorMap);
        TEXTURE2D(_CoverNormalMap);
        SAMPLER(sampler_CoverNormalMap);
        TEXTURE2D(_CoverMaskMap);
        SAMPLER(sampler_CoverMaskMap);
        TEXTURE2D(_DetailMap);
        SAMPLER(sampler_DetailMap);
        
            // -- Property used by ScenePickingPass
            #ifdef SCENEPICKINGPASS
            float4 _SelectionID;
            #endif
        
            // -- Properties used by SceneSelectionPass
            #ifdef SCENESELECTIONPASS
            int _ObjectId;
            int _PassValue;
            #endif
        
            // Includes
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/PickingSpaceTransforms.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl"
        #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/NormalSurfaceGradient.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/BuiltinUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/DecalUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderGraphFunctions.hlsl"
        	#include "./NM_Object_VSPro_Indirect.cginc"
        
            // --------------------------------------------------
            // Structs and Packing
        
            struct AttributesMesh
        {
             float3 positionOS : POSITION;
             float3 normalOS : NORMAL;
             float4 tangentOS : TANGENT;
             float4 uv0 : TEXCOORD0;
             float4 uv2 : TEXCOORD2;
             float4 color : COLOR;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : INSTANCEID_SEMANTIC;
            #endif
        };
        struct VaryingsMeshToPS
        {
            SV_POSITION_QUALIFIERS float4 positionCS : SV_POSITION;
             float3 positionRWS;
             float3 normalWS;
             float4 tangentWS;
             float4 texCoord0;
             float4 texCoord2;
             float4 color;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : CUSTOM_INSTANCE_ID;
            #endif
        };
        struct VertexDescriptionInputs
        {
             float3 ObjectSpaceNormal;
             float3 ObjectSpaceTangent;
             float3 ObjectSpacePosition;
        };
        struct SurfaceDescriptionInputs
        {
             float3 WorldSpaceNormal;
             float3 TangentSpaceNormal;
             float3 WorldSpaceTangent;
             float3 WorldSpaceBiTangent;
             float3 AbsoluteWorldSpacePosition;
             float4 uv0;
             float4 uv2;
             float4 VertexColor;
        };
        struct PackedVaryingsMeshToPS
        {
            SV_POSITION_QUALIFIERS float4 positionCS : SV_POSITION;
             float4 tangentWS : INTERP0;
             float4 texCoord0 : INTERP1;
             float4 texCoord2 : INTERP2;
             float4 color : INTERP3;
             float3 positionRWS : INTERP4;
             float3 normalWS : INTERP5;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : CUSTOM_INSTANCE_ID;
            #endif
        };
        
            PackedVaryingsMeshToPS PackVaryingsMeshToPS (VaryingsMeshToPS input)
        {
            PackedVaryingsMeshToPS output;
            ZERO_INITIALIZE(PackedVaryingsMeshToPS, output);
            output.positionCS = input.positionCS;
            output.tangentWS.xyzw = input.tangentWS;
            output.texCoord0.xyzw = input.texCoord0;
            output.texCoord2.xyzw = input.texCoord2;
            output.color.xyzw = input.color;
            output.positionRWS.xyz = input.positionRWS;
            output.normalWS.xyz = input.normalWS;
            #if UNITY_ANY_INSTANCING_ENABLED
            output.instanceID = input.instanceID;
            #endif
            return output;
        }
        
        VaryingsMeshToPS UnpackVaryingsMeshToPS (PackedVaryingsMeshToPS input)
        {
            VaryingsMeshToPS output;
            output.positionCS = input.positionCS;
            output.tangentWS = input.tangentWS.xyzw;
            output.texCoord0 = input.texCoord0.xyzw;
            output.texCoord2 = input.texCoord2.xyzw;
            output.color = input.color.xyzw;
            output.positionRWS = input.positionRWS.xyz;
            output.normalWS = input.normalWS.xyz;
            #if UNITY_ANY_INSTANCING_ENABLED
            output.instanceID = input.instanceID;
            #endif
            return output;
        }
        
        
            // --------------------------------------------------
            // Graph
        
        
            // Graph Functions
            
        void AddPragma_float(float3 A, out float3 Out){
        #pragma instancing_options procedural:setupVSPro
        Out = A;
        }
        
        struct Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float
        {
        };
        
        void SG_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float(float3 Vector3_314C8600, Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float IN, out float3 ObjectSpacePosition_1)
        {
        float3 _Property_5ec158abd968858c9d31ab40df5e9e6f_Out_0_Vector3 = Vector3_314C8600;
        float3 _InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3;
        InjectSetup_float(_Property_5ec158abd968858c9d31ab40df5e9e6f_Out_0_Vector3, _InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3);
        float3 _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3;
        AddPragma_float(_InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3, _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3);
        ObjectSpacePosition_1 = _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3;
        }
        
        void Unity_Combine_float(float R, float G, float B, float A, out float4 RGBA, out float3 RGB, out float2 RG)
        {
            RGBA = float4(R, G, B, A);
            RGB = float3(R, G, B);
            RG = float2(R, G);
        }
        
        void Unity_Divide_float(float A, float B, out float Out)
        {
            Out = A / B;
        }
        
        void Unity_Multiply_float4_float4(float4 A, float4 B, out float4 Out)
        {
        Out = A * B;
        }
        
        void Unity_Branch_float4(float Predicate, float4 True, float4 False, out float4 Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_TilingAndOffset_float(float2 UV, float2 Tiling, float2 Offset, out float2 Out)
        {
            Out = UV * Tiling + Offset;
        }
        
        void Unity_Branch_float2(float Predicate, float2 True, float2 False, out float2 Out)
        {
            Out = Predicate ? True : False;
        }
        
        struct Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float
        {
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_2EBA7A3B, float Boolean_7ABB9909, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float IN, out float4 XZ_2)
        {
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Property_30834f691775a0898a45b1c868520436_Out_0_Boolean = Boolean_7ABB9909;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4 = Vector4_2EBA7A3B;
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[0];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[1];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[2];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[3];
        float _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float;
        Unity_Divide_float(1, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4 = IN.uv0;
        float4 _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4 = IN.uv2;
        float4 _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4;
        Unity_Branch_float4(_Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean, _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4, _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4, _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4);
        float2 _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float);
        float2 _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float);
        float2 _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4.xy), _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2, _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2, _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2);
        float2 _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2;
        Unity_Branch_float2(_Property_30834f691775a0898a45b1c868520436_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2, _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2);
        UnitySamplerState _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2) );
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        XZ_2 = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4;
        }
        
        void Unity_Multiply_float_float(float A, float B, out float Out)
        {
            Out = A * B;
        }
        
        void Unity_Add_float(float A, float B, out float Out)
        {
            Out = A + B;
        }
        
        void Unity_Saturate_float(float In, out float Out)
        {
            Out = saturate(In);
        }
        
        void Unity_Absolute_float(float In, out float Out)
        {
            Out = abs(In);
        }
        
        void Unity_SquareRoot_float4(float4 In, out float4 Out)
        {
            Out = sqrt(In);
        }
        
        void Unity_Sign_float(float In, out float Out)
        {
            Out = sign(In);
        }
        
        void Unity_Ceiling_float(float In, out float Out)
        {
            Out = ceil(In);
        }
        
        void Unity_Lerp_float4(float4 A, float4 B, float4 T, out float4 Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float
        {
        };
        
        void SG_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float(float4 Color_9AA111D3, float Vector1_FBE622A2, float Vector1_8C15C351, Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float IN, out float3 OutVector4_1)
        {
        float4 _Property_012510d774fb7f8b860f5270dca4500f_Out_0_Vector4 = Color_9AA111D3;
        float4 _SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4;
        Unity_SquareRoot_float4(_Property_012510d774fb7f8b860f5270dca4500f_Out_0_Vector4, _SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4);
        float _Property_a00e29241d12f983b30177515b367ec9_Out_0_Float = Vector1_FBE622A2;
        float _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float;
        Unity_Sign_float(_Property_a00e29241d12f983b30177515b367ec9_Out_0_Float, _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float);
        float _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float;
        Unity_Add_float(_Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float, 1, _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float);
        float _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float;
        Unity_Multiply_float_float(_Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float, 0.5, _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float);
        float _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float;
        Unity_Ceiling_float(_Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float);
        float _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float = Vector1_8C15C351;
        float _Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float;
        Unity_Multiply_float_float(_Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float);
        float4 _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4;
        Unity_Lerp_float4(_SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4, (_Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float.xxxx), (_Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float.xxxx), _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4);
        float4 _Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4, _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4, _Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4);
        OutVector4_1 = (_Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4.xyz);
        }
        
        void Unity_Clamp_float(float In, float Min, float Max, out float Out)
        {
            Out = clamp(In, Min, Max);
        }
        
        void Unity_Multiply_float2_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A * B;
        }
        
        void Unity_Add_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A + B;
        }
        
        void Unity_DotProduct_float2(float2 A, float2 B, out float Out)
        {
            Out = dot(A, B);
        }
        
        void Unity_OneMinus_float(float In, out float Out)
        {
            Out = 1 - In;
        }
        
        void Unity_SquareRoot_float(float In, out float Out)
        {
            Out = sqrt(In);
        }
        
        void Unity_Sign_float3(float3 In, out float3 Out)
        {
            Out = sign(In);
        }
        
        void Unity_Normalize_float3(float3 In, out float3 Out)
        {
            Out = normalize(In);
        }
        
        void Unity_Branch_float3(float Predicate, float3 True, float3 False, out float3 Out)
        {
            Out = Predicate ? True : False;
        }
        
        struct Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float
        {
        float3 WorldSpaceNormal;
        float3 WorldSpaceTangent;
        float3 WorldSpaceBiTangent;
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_82674548, float Boolean_9FF42DF6, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float IN, out float4 XZ_2)
        {
        float _Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean = Boolean_9FF42DF6;
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4 = Vector4_82674548;
        float _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[0];
        float _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[1];
        float _Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[2];
        float _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[3];
        float _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float;
        Unity_Divide_float(1, _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4 = IN.uv0;
        float4 _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4 = IN.uv2;
        float4 _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4;
        Unity_Branch_float4(_Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean, _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4, _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4, _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4);
        float2 _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float);
        float2 _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float, _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float);
        float2 _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4.xy), _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2, _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2, _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2);
        float2 _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2;
        Unity_Branch_float2(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2, _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2);
        UnitySamplerState _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2) );
        _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.rgb = UnpackNormal(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4);
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        float2 _Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2 = float2(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float, _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float);
        float3 _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3;
        Unity_Sign_float3(IN.WorldSpaceNormal, _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3);
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_R_1_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[0];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[1];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_B_3_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[2];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_A_4_Float = 0;
        float2 _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2 = float2(_Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float, 1);
        float2 _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2;
        Unity_Multiply_float2_float2(_Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2, _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2, _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2);
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float = IN.WorldSpaceNormal[0];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float = IN.WorldSpaceNormal[1];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float = IN.WorldSpaceNormal[2];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_A_4_Float = 0;
        float2 _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2 = float2(_Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float);
        float2 _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2;
        Unity_Add_float2(_Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2, _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2, _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2);
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[0];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[1];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_B_3_Float = 0;
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_A_4_Float = 0;
        float _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float;
        Unity_Multiply_float_float(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float);
        float3 _Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3 = float3(_Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float, _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float);
        float3 _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3;
        {
        float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
        _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3 = TransformWorldToTangent(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
        }
        float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
        Unity_Normalize_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3);
        float3 _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3;
        Unity_Branch_float3(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3, (_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.xyz), _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3);
        XZ_2 = (float4(_Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3, 1.0));
        }
        
        void Unity_NormalStrength_float(float3 In, float Strength, out float3 Out)
        {
            Out = float3(In.rg * Strength, lerp(1, In.b, saturate(Strength)));
        }
        
        void Unity_NormalBlend_float(float3 A, float3 B, out float3 Out)
        {
            Out = SafeNormalize(float3(A.rg + B.rg, A.b * B.b));
        }
        
        void Unity_Subtract_float(float A, float B, out float Out)
        {
            Out = A - B;
        }
        
        void Unity_Power_float(float A, float B, out float Out)
        {
            Out = pow(A, B);
        }
        
        void Unity_Lerp_float3(float3 A, float3 B, float3 T, out float3 Out)
        {
            Out = lerp(A, B, T);
        }
        
        void Unity_Remap_float(float In, float2 InMinMax, float2 OutMinMax, out float Out)
        {
            Out = OutMinMax.x + (In - InMinMax.x) * (OutMinMax.y - OutMinMax.x) / (InMinMax.y - InMinMax.x);
        }
        
        void Unity_Branch_float(float Predicate, float True, float False, out float Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_Multiply_float3_float3(float3 A, float3 B, out float3 Out)
        {
            Out = A * B;
        }
        
        void Unity_Lerp_float(float A, float B, float T, out float Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float
        {
        };
        
        void SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(float Vector1_32317166, float Vector1_FBE622A2, float Vector1_8C15C351, Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float IN, out float SmoothnessOverlay_1)
        {
        float _Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float = Vector1_32317166;
        float _Property_a00e29241d12f983b30177515b367ec9_Out_0_Float = Vector1_FBE622A2;
        float _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float;
        Unity_Sign_float(_Property_a00e29241d12f983b30177515b367ec9_Out_0_Float, _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float);
        float _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float;
        Unity_Add_float(_Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float, 1, _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float);
        float _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float;
        Unity_Multiply_float_float(_Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float, 0.5, _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float);
        float _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float;
        Unity_Ceiling_float(_Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float);
        float _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float = Vector1_8C15C351;
        float _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        Unity_Lerp_float(_Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float, _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float);
        SmoothnessOverlay_1 = _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        }
        
        void Unity_Lerp_float2(float2 A, float2 B, float2 T, out float2 Out)
        {
            Out = lerp(A, B, T);
        }
        
            // Graph Vertex
            struct VertexDescription
        {
            float3 Position;
            float3 Normal;
            float3 Tangent;
        };
        
        VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
        {
            VertexDescription description = (VertexDescription)0;
            Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430;
            float3 _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3;
            SG_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float(IN.ObjectSpacePosition, _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430, _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3);
            description.Position = _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3;
            description.Normal = IN.ObjectSpaceNormal;
            description.Tangent = IN.ObjectSpaceTangent;
            return description;
        }
        
            // Graph Pixel
            struct SurfaceDescription
        {
            float3 BaseColor;
            float3 Emission;
            float Alpha;
            float3 BentNormal;
            float Smoothness;
            float Occlusion;
            float3 NormalTS;
            float3 Specular;
        };
        
        SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
        {
            SurfaceDescription surface = (SurfaceDescription)0;
            UnityTexture2D _Property_9c271219f828108f958217e55cd6dc1d_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseColorMap);
            float4 _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4 = _BaseTilingOffset;
            float _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean = _BaseUsePlanarUV;
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_f392575634df5b86b63ff6e287282b30;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.uv0 = IN.uv0;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.uv2 = IN.uv2;
            float4 _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_9c271219f828108f958217e55cd6dc1d_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_f392575634df5b86b63ff6e287282b30, _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4);
            float4 _Property_4f676fce92c9378db3c3b92ae77fbff9_Out_0_Vector4 = _BaseColor;
            float4 _Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4, _Property_4f676fce92c9378db3c3b92ae77fbff9_Out_0_Vector4, _Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4);
            UnityTexture2D _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_DetailMap);
            float4 _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4 = _DetailTilingOffset;
            float _Split_9fa8573190399e8da2a843a4cab68164_R_1_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[0];
            float _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[1];
            float _Split_9fa8573190399e8da2a843a4cab68164_B_3_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[2];
            float _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[3];
            float2 _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_R_1_Float, _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float);
            float2 _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_B_3_Float, _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float);
            float2 _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2;
            Unity_TilingAndOffset_float(IN.uv0.xy, _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2, _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2, _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2);
            float4 _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.tex, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.samplerstate, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.GetTransformedUV(_TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2) );
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_R_4_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.r;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.g;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.b;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.a;
            float _Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_R_4_Float, 2, _Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float);
            float _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float;
            Unity_Add_float(_Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float, -1, _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float);
            float _Property_7d68da97cd169d8e8649255aec16158a_Out_0_Float = _DetailAlbedoScale;
            float _Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float;
            Unity_Multiply_float_float(_Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float, _Property_7d68da97cd169d8e8649255aec16158a_Out_0_Float, _Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float);
            float _Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float;
            Unity_Saturate_float(_Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float, _Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float);
            float _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float;
            Unity_Absolute_float(_Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float, _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float);
            Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83;
            float3 _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3;
            SG_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float(_Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4, _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float, _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float, _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83, _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3);
            UnityTexture2D _Property_5ca167b35599f78ab3722ec527327841_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverBaseColorMap);
            float4 _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4 = _CoverTilingOffset;
            float _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean = _CoverUsePlanarUV;
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_ad1db3524021ac898447cb6f6daa4180;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.uv0 = IN.uv0;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.uv2 = IN.uv2;
            float4 _PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_5ca167b35599f78ab3722ec527327841_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_ad1db3524021ac898447cb6f6daa4180, _PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4);
            float4 _Property_b34e94e0b1171480b3e35ff7f4793d7c_Out_0_Vector4 = _CoverBaseColor;
            float4 _Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4, _Property_b34e94e0b1171480b3e35ff7f4793d7c_Out_0_Vector4, _Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4);
            float _Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean = _USEDYNAMICCOVERTSTATICMASKF;
            UnityTexture2D _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskA);
            float4 _UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4 = IN.uv0;
            float4 _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.tex, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.samplerstate, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.GetTransformedUV((_UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4.xy)) );
            float _SampleTexture2D_79111e5af287b084822e60563309a632_R_4_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.r;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_G_5_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.g;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_B_6_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.b;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.a;
            float _Property_c022d8255938838aa73170f05c226269_Out_0_Float = _CoverMaskPower;
            float _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float, _Property_c022d8255938838aa73170f05c226269_Out_0_Float, _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float);
            float _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float;
            Unity_Clamp_float(_Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float, 0, 1, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float);
            float2 _Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2 = float2(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float, _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float);
            float2 _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2, float2(2, 2), _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2);
            float2 _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2;
            Unity_Add_float2(_Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2, float2(-1, -1), _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2);
            float _Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float = _DetailNormalScale;
            float2 _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2, (_Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float.xx), _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2);
            float _Split_492de324af96c482b50573c79f9fb6a0_R_1_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[0];
            float _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[1];
            float _Split_492de324af96c482b50573c79f9fb6a0_B_3_Float = 0;
            float _Split_492de324af96c482b50573c79f9fb6a0_A_4_Float = 0;
            float _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float;
            Unity_DotProduct_float2(_Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float);
            float _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float;
            Unity_Saturate_float(_DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float, _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float);
            float _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float;
            Unity_OneMinus_float(_Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float, _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float);
            float _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float;
            Unity_SquareRoot_float(_OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            float3 _Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3 = float3(_Split_492de324af96c482b50573c79f9fb6a0_R_1_Float, _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            UnityTexture2D _Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseNormalMap);
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv0 = IN.uv0;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv2 = IN.uv2;
            float4 _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4);
            float _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float = _BaseNormalScale;
            float3 _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4.xyz), _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3);
            float3 _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3;
            Unity_NormalBlend_float(_Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3, _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3);
            UnityTexture2D _Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverNormalMap);
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv0 = IN.uv0;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv2 = IN.uv2;
            float4 _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4);
            float _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float = _CoverNormalBlendHardness;
            float3 _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3);
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_R_1_Float = IN.WorldSpaceNormal[0];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float = IN.WorldSpaceNormal[1];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_B_3_Float = IN.WorldSpaceNormal[2];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_A_4_Float = 0;
            float _Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float = _Cover_Amount;
            float _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float = _Cover_Amount_Grow_Speed;
            float _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float;
            Unity_Subtract_float(4, _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float);
            float _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float;
            Unity_Divide_float(_Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float);
            float _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float;
            Unity_Absolute_float(_Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float, _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float);
            float _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float;
            Unity_Power_float(_Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float);
            float _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float;
            Unity_Clamp_float(_Power_c11fc5724f830485a9c4df249a854571_Out_2_Float, 0, 2, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float);
            float _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float;
            Unity_Multiply_float_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float);
            float _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float;
            Unity_Saturate_float(_Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float, _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float);
            float _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float;
            Unity_Clamp_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, 0, 0.9999, _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float);
            float _Property_89633a46f34e1f8996557a9178d78478_Out_0_Float = _Cover_Max_Angle;
            float _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float;
            Unity_Divide_float(_Property_89633a46f34e1f8996557a9178d78478_Out_0_Float, 45, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float);
            float _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float;
            Unity_OneMinus_float(_Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float);
            float _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float;
            Unity_Subtract_float(_Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float, _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float);
            float _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float;
            Unity_Clamp_float(_Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float, 0, 2, _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
            float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
            Unity_Divide_float(1, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float);
            float _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_67dcc607b6da848097d3412324311616_Out_3_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float, _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float);
            float _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float;
            Unity_Absolute_float(_Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float, _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float);
            float _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float = _CoverHardness;
            float _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float;
            Unity_Power_float(_Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float);
            float _Property_f8753bb05d835089bda460d144f93c48_Out_0_Float = _Cover_Min_Height;
            float _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float;
            Unity_OneMinus_float(_Property_f8753bb05d835089bda460d144f93c48_Out_0_Float, _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float);
            float _Split_c66e04f85a2a7f87884040056599e65d_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
            float _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
            float _Split_c66e04f85a2a7f87884040056599e65d_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
            float _Split_c66e04f85a2a7f87884040056599e65d_A_4_Float = 0;
            float _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float;
            Unity_Add_float(_OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float, _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float);
            float _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, 1, _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
            float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
            Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, 0, 1, _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float);
            float _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float = _Cover_Min_Height_Blending;
            float _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float, _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float);
            float _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float;
            Unity_Divide_float(_Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float);
            float _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float;
            Unity_OneMinus_float(_Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float, _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float);
            float _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float;
            Unity_Add_float(_OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float, -0.5, _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
            float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
            Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, 0, 1, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float);
            float _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float;
            Unity_Add_float(_Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float, _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float);
            float _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float;
            Unity_Clamp_float(_Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float, 0, 1, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float);
            float _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float;
            Unity_Multiply_float_float(_Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float);
            float _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float;
            Unity_Multiply_float_float(_Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float);
            float3 _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3, (_Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float.xxx), _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3);
            float3 _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3;
            {
                float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
                _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3 = TransformTangentToWorldDir(_Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3.xyz, tangentTransform, false).xyz;
            }
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_R_1_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[0];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[1];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_B_3_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[2];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_A_4_Float = 0;
            float _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float;
            Unity_Multiply_float_float(_Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float);
            float _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float);
            float _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float);
            float _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float, _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float);
            UnityTexture2D _Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_36e64648ad8a6a849bc794b8693519da;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv0 = IN.uv0;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv2 = IN.uv2;
            float4 _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_36e64648ad8a6a849bc794b8693519da, _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4);
            float _Split_198ec92f3e753d8a9ad50db7d6527324_R_1_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[0];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[1];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[2];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[3];
            float _Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float = _CoverHeightMapMin;
            float _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float = _CoverHeightMapMax;
            float2 _Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2 = float2(_Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float, _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float);
            float _Property_277f22c36084858981418fa95133a562_Out_0_Float = _CoverHeightMapOffset;
            float2 _Add_53997153562831859cc7b582f3068877_Out_2_Vector2;
            Unity_Add_float2(_Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2, (_Property_277f22c36084858981418fa95133a562_Out_0_Float.xx), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2);
            float _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float, float2 (0, 1), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float);
            float _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float, _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float);
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float = IN.VertexColor[0];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float = IN.VertexColor[1];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_B_3_Float = IN.VertexColor[2];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_A_4_Float = IN.VertexColor[3];
            float _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float, _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float, _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float);
            float _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float;
            Unity_Saturate_float(_Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float);
            float _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float);
            float _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float;
            Unity_Branch_float(_Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float);
            float3 _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3;
            Unity_Lerp_float3(_BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3, (_Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4.xyz), (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxx), _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3);
            float4 _Property_e687576468764d85b6b46dca96d8a8e3_Out_0_Vector4 = _WetColor;
            float3 _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3;
            Unity_Multiply_float3_float3((_Property_e687576468764d85b6b46dca96d8a8e3_Out_0_Vector4.xyz), _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3, _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3);
            float _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float;
            Unity_OneMinus_float(_Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float);
            float3 _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
            Unity_Lerp_float3(_Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3, _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3, (_OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float.xxx), _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3);
            UnityTexture2D _Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv0 = IN.uv0;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv2 = IN.uv2;
            float4 _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4);
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_R_1_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[0];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[1];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_B_3_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[2];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[3];
            float _Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float = _BaseAORemapMin;
            float _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float = _BaseAORemapMax;
            float2 _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2 = float2(_Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float, _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float);
            float _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float, float2 (0, 1), _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2, _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float);
            float _Property_e353baf414594b8882fb914562e81165_Out_0_Float = _BaseSmoothnessRemapMin;
            float _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float = _BaseSmoothnessRemapMax;
            float2 _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2 = float2(_Property_e353baf414594b8882fb914562e81165_Out_0_Float, _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float);
            float _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float, float2 (0, 1), _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2, _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float);
            float _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float, 2, _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float);
            float _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float;
            Unity_Add_float(_Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float, -1, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float);
            float _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float = _DetailSmoothnessScale;
            float _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float;
            Unity_Multiply_float_float(_Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float, _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float);
            float _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float;
            Unity_Saturate_float(_Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float, _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float);
            float _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float;
            Unity_Absolute_float(_Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float);
            Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da;
            float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float;
            SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(_Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float);
            float _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float;
            Unity_Saturate_float(_BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float2 _Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2 = float2(_Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float _Property_5e08cfb127183a8993376f9087501eee_Out_0_Float = _CoverAORemapMin;
            float _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float = _CoverAORemapMax;
            float2 _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2 = float2(_Property_5e08cfb127183a8993376f9087501eee_Out_0_Float, _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float);
            float _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float, float2 (0, 1), _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2, _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float);
            float _Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float = _CoverSmoothnessRemapMin;
            float _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float = _CoverSmoothnessRemapMax;
            float2 _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2 = float2(_Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float, _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float);
            float _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float, float2 (0, 1), _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2 = float2(_Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2;
            Unity_Lerp_float2(_Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2, _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xx), _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2);
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_R_1_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[0];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[1];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_B_3_Float = 0;
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_A_4_Float = 0;
            float _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float = _WetSmoothness;
            float _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            Unity_Lerp_float(_Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float, _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float, _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float);
            float _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float = _CoverNormalScale;
            float3 _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3);
            float3 _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxx), _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3);
            UnityTexture2D _Property_f617479b11216b84b89956263f8d3c08_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_SpecularColorMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.uv0 = IN.uv0;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.uv2 = IN.uv2;
            float4 _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_f617479b11216b84b89956263f8d3c08_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d, _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4);
            float4 _Property_112303b9c27a1284b20f0a5c49fb436a_Out_0_Vector4 = _SpecularColor;
            float4 _Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4, _Property_112303b9c27a1284b20f0a5c49fb436a_Out_0_Vector4, _Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4);
            UnityTexture2D _Property_0c768f7d1094a8878d837f25970dbd49_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverSpecularColorMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_4b88db16993b7d84a6c9e021b5992a38;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.uv0 = IN.uv0;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.uv2 = IN.uv2;
            float4 _PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_0c768f7d1094a8878d837f25970dbd49_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_4b88db16993b7d84a6c9e021b5992a38, _PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4);
            float4 _Property_51d3c44a7110108d9e8c9a3acf54125f_Out_0_Vector4 = _CoverSpecularColor;
            float4 _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4, _Property_51d3c44a7110108d9e8c9a3acf54125f_Out_0_Vector4, _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4);
            float4 _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4;
            Unity_Lerp_float4(_Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4, _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxxx), _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4);
            surface.BaseColor = _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
            surface.Emission = float3(0, 0, 0);
            surface.Alpha = 1;
            surface.BentNormal = IN.TangentSpaceNormal;
            surface.Smoothness = _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            surface.Occlusion = _Split_beb57fcf05cbb6809f536625bac5fcbc_R_1_Float;
            surface.NormalTS = _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            surface.Specular = (_Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4.xyz);
            return surface;
        }
        
            // --------------------------------------------------
            // Build Graph Inputs
            #ifdef HAVE_VFX_MODIFICATION
            #define VFX_SRP_ATTRIBUTES AttributesMesh
            #define VaryingsMeshType VaryingsMeshToPS
            #define VFX_SRP_VARYINGS VaryingsMeshType
            #define VFX_SRP_SURFACE_INPUTS FragInputs
            #endif
            
        VertexDescriptionInputs AttributesMeshToVertexDescriptionInputs(AttributesMesh input)
        {
            VertexDescriptionInputs output;
            ZERO_INITIALIZE(VertexDescriptionInputs, output);
        
            output.ObjectSpaceNormal =                          input.normalOS;
            output.ObjectSpaceTangent =                         input.tangentOS.xyz;
            output.ObjectSpacePosition =                        input.positionOS;
        
            return output;
        }
        
        VertexDescription GetVertexDescription(AttributesMesh input, float3 timeParameters
        #ifdef HAVE_VFX_MODIFICATION
            , AttributesElement element
        #endif
        )
        {
            // build graph inputs
            VertexDescriptionInputs vertexDescriptionInputs = AttributesMeshToVertexDescriptionInputs(input);
            // Override time parameters with used one (This is required to correctly handle motion vectors for vertex animation based on time)
        
            // evaluate vertex graph
        #ifdef HAVE_VFX_MODIFICATION
            GraphProperties properties;
            ZERO_INITIALIZE(GraphProperties, properties);
        
            // Fetch the vertex graph properties for the particle instance.
            GetElementVertexProperties(element, properties);
        
            VertexDescription vertexDescription = VertexDescriptionFunction(vertexDescriptionInputs, properties);
        #else
            VertexDescription vertexDescription = VertexDescriptionFunction(vertexDescriptionInputs);
        #endif
            return vertexDescription;
        
        }
        
        AttributesMesh ApplyMeshModification(AttributesMesh input, float3 timeParameters
        #ifdef USE_CUSTOMINTERP_SUBSTRUCT
            #ifdef TESSELLATION_ON
            , inout VaryingsMeshToDS varyings
            #else
            , inout VaryingsMeshToPS varyings
            #endif
        #endif
        #ifdef HAVE_VFX_MODIFICATION
                , AttributesElement element
        #endif
            )
        {
            VertexDescription vertexDescription = GetVertexDescription(input, timeParameters
        #ifdef HAVE_VFX_MODIFICATION
                , element
        #endif
            );
        
            // copy graph output to the results
            input.positionOS = vertexDescription.Position;
            input.normalOS = vertexDescription.Normal;
            input.tangentOS.xyz = vertexDescription.Tangent;
        
            
        
            return input;
        }
        
        #if defined(_ADD_CUSTOM_VELOCITY) // For shader graph custom velocity
        // Return precomputed Velocity in object space
        float3 GetCustomVelocity(AttributesMesh input
        #ifdef HAVE_VFX_MODIFICATION
            , AttributesElement element
        #endif
        )
        {
            VertexDescription vertexDescription = GetVertexDescription(input, _TimeParameters.xyz
        #ifdef HAVE_VFX_MODIFICATION
                , element
        #endif
            );
            return vertexDescription.CustomVelocity;
        }
        #endif
        
        FragInputs BuildFragInputs(VaryingsMeshToPS input)
        {
            FragInputs output;
            ZERO_INITIALIZE(FragInputs, output);
        
            // Init to some default value to make the computer quiet (else it output 'divide by zero' warning even if value is not used).
            // TODO: this is a really poor workaround, but the variable is used in a bunch of places
            // to compute normals which are then passed on elsewhere to compute other values...
            output.tangentToWorld = k_identity3x3;
            output.positionSS = input.positionCS;       // input.positionCS is SV_Position
        
            output.positionRWS =                input.positionRWS;
            output.tangentToWorld =             BuildTangentToWorld(input.tangentWS, input.normalWS);
            output.texCoord0 =                  input.texCoord0;
            output.texCoord2 =                  input.texCoord2;
            output.color =                      input.color;
        
        #ifdef HAVE_VFX_MODIFICATION
            // FragInputs from VFX come from two places: Interpolator or CBuffer.
        #if VFX_USE_GRAPH_VALUES
            uint instanceActiveIndex = asuint(UNITY_ACCESS_INSTANCED_PROP(PerInstance, _InstanceActiveIndex));
            /* WARNING: $splice Could not find named fragment 'VFXLoadGraphValues' */
        #endif
        
            /* WARNING: $splice Could not find named fragment 'VFXSetFragInputs' */
        
        #endif
        
            // splice point to copy custom interpolator fields from varyings to frag inputs
            
        
            return output;
        }
        
        // existing HDRP code uses the combined function to go directly from packed to frag inputs
        FragInputs UnpackVaryingsMeshToFragInputs(PackedVaryingsMeshToPS input)
        {
            UNITY_SETUP_INSTANCE_ID(input);
        #if defined(HAVE_VFX_MODIFICATION) && defined(UNITY_INSTANCING_ENABLED)
            unity_InstanceID = input.instanceID;
        #endif
            VaryingsMeshToPS unpacked = UnpackVaryingsMeshToPS(input);
            return BuildFragInputs(unpacked);
        }
            SurfaceDescriptionInputs FragInputsToSurfaceDescriptionInputs(FragInputs input, float3 viewWS)
        {
            SurfaceDescriptionInputs output;
            ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
        
            output.WorldSpaceNormal =                           normalize(input.tangentToWorld[2].xyz);
            #if defined(SHADER_STAGE_RAY_TRACING)
            #else
            #endif
            output.TangentSpaceNormal =                         float3(0.0f, 0.0f, 1.0f);
            output.WorldSpaceTangent =                          input.tangentToWorld[0].xyz;
            output.WorldSpaceBiTangent =                        input.tangentToWorld[1].xyz;
            output.AbsoluteWorldSpacePosition =                 GetAbsolutePositionWS(input.positionRWS);
        
        #if UNITY_UV_STARTS_AT_TOP
        #else
        #endif
        
        
            output.uv0 =                                        input.texCoord0;
            output.uv2 =                                        input.texCoord2;
            output.VertexColor =                                input.color;
        
            // splice point to copy frag inputs custom interpolator pack into the SDI
            
        
            return output;
        }
        
            // --------------------------------------------------
            // Build Surface Data (Specific Material)
        
        void ApplyDecalToSurfaceDataNoNormal(DecalSurfaceData decalSurfaceData, inout SurfaceData surfaceData);
        
        void ApplyDecalAndGetNormal(FragInputs fragInputs, PositionInputs posInput, SurfaceDescription surfaceDescription,
            inout SurfaceData surfaceData)
        {
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
        #ifdef DECAL_NORMAL_BLENDING
            // SG nodes don't ouptut surface gradients, so if decals require surf grad blending, we have to convert
            // the normal to gradient before applying the decal. We then have to resolve the gradient back to world space
            float3 normalTS;
        
            normalTS = SurfaceGradientFromTangentSpaceNormalAndFromTBN(surfaceDescription.NormalTS,
            fragInputs.tangentToWorld[0], fragInputs.tangentToWorld[1]);
        
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, fragInputs.tangentToWorld[2], normalTS);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        
            GetNormalWS_SG(fragInputs, normalTS, surfaceData.normalWS, doubleSidedConstants);
        #else
            // normal delivered to master node
            GetNormalWS(fragInputs, surfaceDescription.NormalTS, surfaceData.normalWS, doubleSidedConstants);
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                // Both uses and modifies 'surfaceData.normalWS'.
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, surfaceData.normalWS.xyz);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        #endif
        }
        void BuildSurfaceData(FragInputs fragInputs, inout SurfaceDescription surfaceDescription, float3 V, PositionInputs posInput, out SurfaceData surfaceData, out float3 bentNormalWS)
        {
            ZERO_INITIALIZE(SurfaceData, surfaceData);
        
            // specularOcclusion need to be init ahead of decal to quiet the compiler that modify the SurfaceData struct
            // however specularOcclusion can come from the graph, so need to be init here so it can be override.
            surfaceData.specularOcclusion = 1.0;
        
            surfaceData.baseColor =                 surfaceDescription.BaseColor;
            surfaceData.perceptualSmoothness =      surfaceDescription.Smoothness;
            surfaceData.ambientOcclusion =          surfaceDescription.Occlusion;
            surfaceData.specularColor =             surfaceDescription.Specular;
        
            #if defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE) || defined(_REFRACTION_THIN)
                if (_EnableSSRefraction)
                {
        
                    surfaceData.transmittanceMask = (1.0 - surfaceDescription.Alpha);
                    surfaceDescription.Alpha = 1.0;
                }
                else
                {
                    surfaceData.ior = 1.0;
                    surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                    surfaceData.atDistance = 1.0;
                    surfaceData.transmittanceMask = 0.0;
                    surfaceDescription.Alpha = 1.0;
                }
            #else
                surfaceData.ior = 1.0;
                surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                surfaceData.atDistance = 1.0;
                surfaceData.transmittanceMask = 0.0;
            #endif
        
            // These static material feature allow compile time optimization
            surfaceData.materialFeatures = MATERIALFEATUREFLAGS_LIT_STANDARD;
            #ifdef _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SUBSURFACE_SCATTERING;
            #endif
        
            #ifdef _MATERIAL_FEATURE_TRANSMISSION
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
            #endif
        
            #ifdef _MATERIAL_FEATURE_ANISOTROPY
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_ANISOTROPY;
        
                // Initialize the normal to something non-zero to avoid a div-zero warning for anisotropy.
                surfaceData.normalWS = float3(0, 1, 0);
            #endif
        
            #ifdef _MATERIAL_FEATURE_IRIDESCENCE
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_IRIDESCENCE;
            #endif
        
            #ifdef _MATERIAL_FEATURE_SPECULAR_COLOR
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SPECULAR_COLOR;
            #endif
        
            #ifdef _MATERIAL_FEATURE_CLEAR_COAT
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_CLEAR_COAT;
            #endif
        
            #if defined (_MATERIAL_FEATURE_SPECULAR_COLOR) && defined (_ENERGY_CONSERVING_SPECULAR)
                // Require to have setup baseColor
                // Reproduce the energy conservation done in legacy Unity. Not ideal but better for compatibility and users can unchek it
                surfaceData.baseColor *= (1.0 - Max3(surfaceData.specularColor.r, surfaceData.specularColor.g, surfaceData.specularColor.b));
            #endif
        
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
            ApplyDecalAndGetNormal(fragInputs, posInput, surfaceDescription, surfaceData);
        
            surfaceData.geomNormalWS = fragInputs.tangentToWorld[2];
        
            surfaceData.tangentWS = normalize(fragInputs.tangentToWorld[0].xyz);    // The tangent is not normalize in tangentToWorld for mikkt. TODO: Check if it expected that we normalize with Morten. Tag: SURFACE_GRADIENT
        
        
            bentNormalWS = surfaceData.normalWS;
        
            surfaceData.tangentWS = Orthonormalize(surfaceData.tangentWS, surfaceData.normalWS);
        
            #ifdef DEBUG_DISPLAY
                if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
                {
                    // TODO: need to update mip info
                    surfaceData.metallic = 0;
                }
        
                // We need to call ApplyDebugToSurfaceData after filling the surfarcedata and before filling builtinData
                // as it can modify attribute use for static lighting
                ApplyDebugToSurfaceData(fragInputs.tangentToWorld, surfaceData);
            #endif
        
            // By default we use the ambient occlusion with Tri-ace trick (apply outside) for specular occlusion.
            // If user provide bent normal then we process a better term
            #if defined(_SPECULAR_OCCLUSION_CUSTOM)
                // Just use the value passed through via the slot (not active otherwise)
            #elif defined(_SPECULAR_OCCLUSION_FROM_AO_BENT_NORMAL)
                // If we have bent normal and ambient occlusion, process a specular occlusion
                surfaceData.specularOcclusion = GetSpecularOcclusionFromBentAO(V, bentNormalWS, surfaceData.normalWS, surfaceData.ambientOcclusion, PerceptualSmoothnessToPerceptualRoughness(surfaceData.perceptualSmoothness));
            #elif defined(_AMBIENT_OCCLUSION) && defined(_SPECULAR_OCCLUSION_FROM_AO)
                surfaceData.specularOcclusion = GetSpecularOcclusionFromAmbientOcclusion(ClampNdotV(dot(surfaceData.normalWS, V)), surfaceData.ambientOcclusion, PerceptualSmoothnessToRoughness(surfaceData.perceptualSmoothness));
            #endif
        
            #if defined(_ENABLE_GEOMETRIC_SPECULAR_AA) && !defined(SHADER_STAGE_RAY_TRACING)
                surfaceData.perceptualSmoothness = GeometricNormalFiltering(surfaceData.perceptualSmoothness, fragInputs.tangentToWorld[2], surfaceDescription.SpecularAAScreenSpaceVariance, surfaceDescription.SpecularAAThreshold);
            #endif
        }
        
            // --------------------------------------------------
            // Get Surface And BuiltinData
        
            void GetSurfaceAndBuiltinData(FragInputs fragInputs, float3 V, inout PositionInputs posInput, out SurfaceData surfaceData, out BuiltinData builtinData RAY_TRACING_OPTIONAL_PARAMETERS)
            {
                // Don't dither if displaced tessellation (we're fading out the displacement instead to match the next LOD)
                #if !defined(SHADER_STAGE_RAY_TRACING) && !defined(_TESSELLATION_DISPLACEMENT)
                #ifdef LOD_FADE_CROSSFADE // enable dithering LOD transition if user select CrossFade transition in LOD group
                LODDitheringTransition(ComputeFadeMaskSeed(V, posInput.positionSS), unity_LODFade.x);
                #endif
                #endif
        
                #ifndef SHADER_UNLIT
                #ifdef _DOUBLESIDED_ON
                    float3 doubleSidedConstants = _DoubleSidedConstants.xyz;
                #else
                    float3 doubleSidedConstants = float3(1.0, 1.0, 1.0);
                #endif
        
                ApplyDoubleSidedFlipOrMirror(fragInputs, doubleSidedConstants); // Apply double sided flip on the vertex normal
                #endif // SHADER_UNLIT
        
                SurfaceDescriptionInputs surfaceDescriptionInputs = FragInputsToSurfaceDescriptionInputs(fragInputs, V);
        
                #if defined(HAVE_VFX_MODIFICATION)
                GraphProperties properties;
                ZERO_INITIALIZE(GraphProperties, properties);
        
                GetElementPixelProperties(fragInputs, properties);
        
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs, properties);
                #else
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs);
                #endif
        
                // Perform alpha test very early to save performance (a killed pixel will not sample textures)
                // TODO: split graph evaluation to grab just alpha dependencies first? tricky..
                #ifdef _ALPHATEST_ON
                    float alphaCutoff = surfaceDescription.AlphaClipThreshold;
                    #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
                    // The TransparentDepthPrepass is also used with SSR transparent.
                    // If an artists enable transaprent SSR but not the TransparentDepthPrepass itself, then we use AlphaClipThreshold
                    // otherwise if TransparentDepthPrepass is enabled we use AlphaClipThresholdDepthPrepass
                    #elif SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_POSTPASS
                    // DepthPostpass always use its own alpha threshold
                    alphaCutoff = surfaceDescription.AlphaClipThresholdDepthPostpass;
                    #elif (SHADERPASS == SHADERPASS_SHADOWS) || (SHADERPASS == SHADERPASS_RAYTRACING_VISIBILITY)
                    // If use shadow threshold isn't enable we don't allow any test
                    #endif
        
                    GENERIC_ALPHA_TEST(surfaceDescription.Alpha, alphaCutoff);
                #endif
        
                #if !defined(SHADER_STAGE_RAY_TRACING) && _DEPTHOFFSET_ON
                ApplyDepthOffsetPositionInput(V, surfaceDescription.DepthOffset, GetViewForwardDir(), GetWorldToHClipMatrix(), posInput);
                #endif
        
                #ifndef SHADER_UNLIT
                float3 bentNormalWS;
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData, bentNormalWS);
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD1
                    float4 lightmapTexCoord1 = fragInputs.texCoord1;
                #else
                    float4 lightmapTexCoord1 = float4(0,0,0,0);
                #endif
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD2
                    float4 lightmapTexCoord2 = fragInputs.texCoord2;
                #else
                    float4 lightmapTexCoord2 = float4(0,0,0,0);
                #endif
        
                // Builtin Data
                // For back lighting we use the oposite vertex normal
                InitBuiltinData(posInput, surfaceDescription.Alpha, bentNormalWS, -fragInputs.tangentToWorld[2], lightmapTexCoord1, lightmapTexCoord2, builtinData);
        
                #else
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData);
        
                ZERO_BUILTIN_INITIALIZE(builtinData); // No call to InitBuiltinData as we don't have any lighting
                builtinData.opacity = surfaceDescription.Alpha;
        
                #if defined(DEBUG_DISPLAY)
                    // Light Layers are currently not used for the Unlit shader (because it is not lit)
                    // But Unlit objects do cast shadows according to their rendering layer mask, which is what we want to
                    // display in the light layers visualization mode, therefore we need the renderingLayers
                    builtinData.renderingLayers = GetMeshRenderingLightLayer();
                #endif
        
                #endif // SHADER_UNLIT
        
                #ifdef _ALPHATEST_ON
                    // Used for sharpening by alpha to mask - Alpha to covertage is only used with depth only and forward pass (no shadow pass, no transparent pass)
                    builtinData.alphaClipTreshold = alphaCutoff;
                #endif
        
                // override sampleBakedGI - not used by Unlit
        
                builtinData.emissiveColor = surfaceDescription.Emission;
        
                // Note this will not fully work on transparent surfaces (can check with _SURFACE_TYPE_TRANSPARENT define)
                // We will always overwrite vt feeback with the nearest. So behind transparent surfaces vt will not be resolved
                // This is a limitation of the current MRT approach.
                #ifdef UNITY_VIRTUAL_TEXTURING
                #endif
        
                #if _DEPTHOFFSET_ON
                builtinData.depthOffset = surfaceDescription.DepthOffset;
                #endif
        
                // TODO: We should generate distortion / distortionBlur for non distortion pass
                #if (SHADERPASS == SHADERPASS_DISTORTION)
                builtinData.distortion = surfaceDescription.Distortion;
                builtinData.distortionBlur = surfaceDescription.DistortionBlur;
                #endif
        
                #ifndef SHADER_UNLIT
                // PostInitBuiltinData call ApplyDebugToBuiltinData
                PostInitBuiltinData(V, posInput, surfaceData, builtinData);
                #else
                ApplyDebugToBuiltinData(builtinData);
                #endif
        
                RAY_TRACING_OPTIONAL_ALPHA_TEST_PASS
            }
        
            // --------------------------------------------------
            // Main
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassDepthOnly.hlsl"
        
            // --------------------------------------------------
            // Visual Effect Vertex Invocations
        
        	#ifdef HAVE_VFX_MODIFICATION
        	#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
        	#endif
        
            ENDHLSL
        }
        Pass
        {
            Name "SceneSelectionPass"
            Tags
            {
                "LightMode" = "SceneSelectionPass"
            }
        
            // Render State
            Cull Off
        
            // Debug
            // <None>
        
            // --------------------------------------------------
            // Pass
        
            HLSLPROGRAM
        
            // Pragmas
            #pragma multi_compile _ DOTS_INSTANCING_ON
        #pragma editor_sync_compilation
        #pragma instancing_options renderinglayer
        #pragma target 4.5
        #pragma vertex Vert
        #pragma fragment Frag
        #pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal switch
        #pragma multi_compile_instancing
        
            // Keywords
            #pragma shader_feature _ _SURFACE_TYPE_TRANSPARENT
        #pragma shader_feature_local _ _DOUBLESIDED_ON
        #pragma shader_feature_local _ _ADD_PRECOMPUTED_VELOCITY
        #pragma shader_feature_local _ _TRANSPARENT_WRITES_MOTION_VEC
        #pragma shader_feature_local_fragment _ _ENABLE_FOG_ON_TRANSPARENT
        #pragma multi_compile _ LOD_FADE_CROSSFADE
        #pragma shader_feature_local_fragment _ _DISABLE_DECALS
        #pragma shader_feature_local_raytracing _ _DISABLE_DECALS
        #pragma shader_feature_local_fragment _ _DISABLE_SSR
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR
        #pragma shader_feature_local_fragment _ _DISABLE_SSR_TRANSPARENT
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR_TRANSPARENT
        #pragma shader_feature_local _ _REFRACTION_PLANE _REFRACTION_SPHERE _REFRACTION_THIN
            // GraphKeywords: <None>
        
            // For custom interpolators to inject a substruct definition before FragInputs definition,
            // allowing for FragInputs to capture CI's intended for ShaderGraph's SDI.
            struct CustomInterpolators
        {
        };
        #define USE_CUSTOMINTERP_SUBSTRUCT
        
        
        
            // TODO: Merge FragInputsVFX substruct with CustomInterpolators.
        	#ifdef HAVE_VFX_MODIFICATION
        	struct FragInputsVFX
            {
                /* WARNING: $splice Could not find named fragment 'FragInputsVFX' */
            };
            #endif
        
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/GeometricTools.hlsl" // Required by Tessellation.hlsl
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Tessellation.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl" // Required to be include before we include properties as it define DECLARE_STACK_CB
            // Always include Shader Graph version
            // Always include last to avoid double macros
            #include "Packages/com.unity.shadergraph/ShaderGraphLibrary/Functions.hlsl" // Need to be here for Gradient struct definition
        
            // --------------------------------------------------
            // Defines
        
            // Attribute
            #define ATTRIBUTES_NEED_NORMAL
            #define ATTRIBUTES_NEED_TANGENT
            #define ATTRIBUTES_NEED_TEXCOORD0
            #define ATTRIBUTES_NEED_TEXCOORD2
            #define ATTRIBUTES_NEED_COLOR
            #define VARYINGS_NEED_POSITION_WS
            #define VARYINGS_NEED_TANGENT_TO_WORLD
            #define VARYINGS_NEED_TEXCOORD0
            #define VARYINGS_NEED_TEXCOORD2
            #define VARYINGS_NEED_COLOR
        
            #define HAVE_MESH_MODIFICATION
        
            //Strip down the FragInputs.hlsl (on graphics), so we can only optimize the interpolators we use.
            //if by accident something requests contents of FragInputs.hlsl, it will be caught as a compiler error
            //Frag inputs stripping is only enabled when FRAG_INPUTS_ENABLE_STRIPPING is set
            #if !defined(SHADER_STAGE_RAY_TRACING) && SHADERPASS != SHADERPASS_RAYTRACING_GBUFFER && SHADERPASS != SHADERPASS_FULL_SCREEN_DEBUG
            #define FRAG_INPUTS_ENABLE_STRIPPING
            #endif
            #define FRAG_INPUTS_USE_TEXCOORD0
            #define FRAG_INPUTS_USE_TEXCOORD2
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/FragInputs.hlsl"
        
        
        
            #define SHADERPASS SHADERPASS_DEPTH_ONLY
        #define RAYTRACING_SHADER_GRAPH_DEFAULT
        #define SCENESELECTIONPASS 1
        
        
            // Following two define are a workaround introduce in 10.1.x for RaytracingQualityNode
            // The ShaderGraph don't support correctly migration of this node as it serialize all the node data
            // in the json file making it impossible to uprgrade. Until we get a fix, we do a workaround here
            // to still allow us to rename the field and keyword of this node without breaking existing code.
            #ifdef RAYTRACING_SHADER_GRAPH_DEFAULT
            #define RAYTRACING_SHADER_GRAPH_HIGH
            #endif
        
            #ifdef RAYTRACING_SHADER_GRAPH_RAYTRACED
            #define RAYTRACING_SHADER_GRAPH_LOW
            #endif
            // end
        
            #ifndef SHADER_UNLIT
            // We need isFrontFace when using double sided - it is not required for unlit as in case of unlit double sided only drive the cullmode
            // VARYINGS_NEED_CULLFACE can be define by VaryingsMeshToPS.FaceSign input if a IsFrontFace Node is included in the shader graph.
            #if defined(_DOUBLESIDED_ON) && !defined(VARYINGS_NEED_CULLFACE)
                #define VARYINGS_NEED_CULLFACE
            #endif
            #endif
        
            // Specific Material Define
        #define _MATERIAL_FEATURE_SPECULAR_COLOR 1
        #define _AMBIENT_OCCLUSION 1
        #define _SPECULAR_OCCLUSION_FROM_AO 1
        #define _ENERGY_CONSERVING_SPECULAR 1
        
        // If we use subsurface scattering, enable output split lighting (for forward pass)
        #if defined(_MATERIAL_FEATURE_SUBSURFACE_SCATTERING) && !defined(_SURFACE_TYPE_TRANSPARENT)
            #define OUTPUT_SPLIT_LIGHTING
        #endif
        
        // This shader support recursive rendering for raytracing
        #define HAVE_RECURSIVE_RENDERING
        
        // In Path Tracing, For all single-sided, refractive materials, we want to force a thin refraction model
        #if (SHADERPASS == SHADERPASS_PATH_TRACING) && !defined(_DOUBLESIDED_ON) && (defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE))
            #undef  _REFRACTION_PLANE
            #undef  _REFRACTION_SPHERE
            #define _REFRACTION_THIN
        #endif
            // Caution: we can use the define SHADER_UNLIT onlit after the above Material include as it is the Unlit template who define it
        
            // To handle SSR on transparent correctly with a possibility to enable/disable it per framesettings
            // we should have a code like this:
            // if !defined(_DISABLE_SSR_TRANSPARENT)
            // pragma multi_compile _ WRITE_NORMAL_BUFFER
            // endif
            // i.e we enable the multicompile only if we can receive SSR or not, and then C# code drive
            // it based on if SSR transparent in frame settings and not (and stripper can strip it).
            // this is currently not possible with our current preprocessor as _DISABLE_SSR_TRANSPARENT is a keyword not a define
            // so instead we used this and chose to pay the extra cost of normal write even if SSR transaprent is disabled.
            // Ideally the shader graph generator should handle it but condition below can't be handle correctly for now.
            #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
            #if !defined(_DISABLE_SSR_TRANSPARENT) && !defined(SHADER_UNLIT)
                #define WRITE_NORMAL_BUFFER
            #endif
            #endif
        
            #ifndef DEBUG_DISPLAY
                // In case of opaque we don't want to perform the alpha test, it is done in depth prepass and we use depth equal for ztest (setup from UI)
                // Don't do it with debug display mode as it is possible there is no depth prepass in this case
                #if !defined(_SURFACE_TYPE_TRANSPARENT)
                    #if SHADERPASS == SHADERPASS_FORWARD
                    #define SHADERPASS_FORWARD_BYPASS_ALPHA_TEST
                    #elif SHADERPASS == SHADERPASS_GBUFFER
                    #define SHADERPASS_GBUFFER_BYPASS_ALPHA_TEST
                    #endif
                #endif
            #endif
        
            // Define _DEFERRED_CAPABLE_MATERIAL for shader capable to run in deferred pass
            #if defined(SHADER_LIT) && !defined(_SURFACE_TYPE_TRANSPARENT)
                #define _DEFERRED_CAPABLE_MATERIAL
            #endif
        
            // Translate transparent motion vector define
            #if defined(_TRANSPARENT_WRITES_MOTION_VEC) && defined(_SURFACE_TYPE_TRANSPARENT)
                #define _WRITE_TRANSPARENT_MOTION_VECTOR
            #endif
        
            // -- Graph Properties
            CBUFFER_START(UnityPerMaterial)
        float4 _BaseColor;
        float4 _BaseColorMap_TexelSize;
        float _BaseUsePlanarUV;
        float4 _BaseTilingOffset;
        float4 _SpecularColor;
        float4 _SpecularColorMap_TexelSize;
        float4 _BaseNormalMap_TexelSize;
        float _BaseNormalScale;
        float4 _BaseMaskMap_TexelSize;
        float _BaseAORemapMin;
        float _BaseAORemapMax;
        float _BaseSmoothnessRemapMin;
        float _BaseSmoothnessRemapMax;
        float _USEDYNAMICCOVERTSTATICMASKF;
        float4 _CoverMaskA_TexelSize;
        float _CoverMaskPower;
        float _Cover_Amount;
        float _Cover_Amount_Grow_Speed;
        float _Cover_Max_Angle;
        float _Cover_Min_Height;
        float _Cover_Min_Height_Blending;
        float4 _CoverBaseColor;
        float4 _CoverBaseColorMap_TexelSize;
        float _CoverUsePlanarUV;
        float4 _CoverTilingOffset;
        float4 _CoverSpecularColor;
        float4 _CoverSpecularColorMap_TexelSize;
        float4 _CoverNormalMap_TexelSize;
        float _CoverNormalScale;
        float _CoverNormalBlendHardness;
        float _CoverHardness;
        float _CoverHeightMapMin;
        float _CoverHeightMapMax;
        float _CoverHeightMapOffset;
        float4 _CoverMaskMap_TexelSize;
        float _CoverAORemapMin;
        float _CoverAORemapMax;
        float _CoverSmoothnessRemapMin;
        float _CoverSmoothnessRemapMax;
        float4 _DetailMap_TexelSize;
        float4 _DetailTilingOffset;
        float _DetailAlbedoScale;
        float _DetailNormalScale;
        float _DetailSmoothnessScale;
        float4 _WetColor;
        float _WetSmoothness;
        float4 _EmissionColor;
        float _UseShadowThreshold;
        float4 _DoubleSidedConstants;
        float _BlendMode;
        float _EnableBlendModePreserveSpecularLighting;
        float _RayTracing;
        float _RefractionModel;
        CBUFFER_END
        
        
        // Object and Global properties
        SAMPLER(SamplerState_Linear_Repeat);
        SAMPLER(SamplerState_Linear_Repeat_Aniso8);
        TEXTURE2D(_BaseColorMap);
        SAMPLER(sampler_BaseColorMap);
        TEXTURE2D(_SpecularColorMap);
        SAMPLER(sampler_SpecularColorMap);
        TEXTURE2D(_BaseNormalMap);
        SAMPLER(sampler_BaseNormalMap);
        TEXTURE2D(_BaseMaskMap);
        SAMPLER(sampler_BaseMaskMap);
        TEXTURE2D(_CoverMaskA);
        SAMPLER(sampler_CoverMaskA);
        TEXTURE2D(_CoverBaseColorMap);
        SAMPLER(sampler_CoverBaseColorMap);
        TEXTURE2D(_CoverSpecularColorMap);
        SAMPLER(sampler_CoverSpecularColorMap);
        TEXTURE2D(_CoverNormalMap);
        SAMPLER(sampler_CoverNormalMap);
        TEXTURE2D(_CoverMaskMap);
        SAMPLER(sampler_CoverMaskMap);
        TEXTURE2D(_DetailMap);
        SAMPLER(sampler_DetailMap);
        
            // -- Property used by ScenePickingPass
            #ifdef SCENEPICKINGPASS
            float4 _SelectionID;
            #endif
        
            // -- Properties used by SceneSelectionPass
            #ifdef SCENESELECTIONPASS
            int _ObjectId;
            int _PassValue;
            #endif
        
            // Includes
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/PickingSpaceTransforms.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl"
        #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/NormalSurfaceGradient.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/BuiltinUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/DecalUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitDecalData.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderGraphFunctions.hlsl"
        	#include "./NM_Object_VSPro_Indirect.cginc"
        
            // --------------------------------------------------
            // Structs and Packing
        
            struct AttributesMesh
        {
             float3 positionOS : POSITION;
             float3 normalOS : NORMAL;
             float4 tangentOS : TANGENT;
             float4 uv0 : TEXCOORD0;
             float4 uv2 : TEXCOORD2;
             float4 color : COLOR;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : INSTANCEID_SEMANTIC;
            #endif
        };
        struct VaryingsMeshToPS
        {
            SV_POSITION_QUALIFIERS float4 positionCS : SV_POSITION;
             float3 positionRWS;
             float3 normalWS;
             float4 tangentWS;
             float4 texCoord0;
             float4 texCoord2;
             float4 color;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : CUSTOM_INSTANCE_ID;
            #endif
        };
        struct VertexDescriptionInputs
        {
             float3 ObjectSpaceNormal;
             float3 ObjectSpaceTangent;
             float3 ObjectSpacePosition;
        };
        struct SurfaceDescriptionInputs
        {
             float3 WorldSpaceNormal;
             float3 TangentSpaceNormal;
             float3 WorldSpaceTangent;
             float3 WorldSpaceBiTangent;
             float3 AbsoluteWorldSpacePosition;
             float4 uv0;
             float4 uv2;
             float4 VertexColor;
        };
        struct PackedVaryingsMeshToPS
        {
            SV_POSITION_QUALIFIERS float4 positionCS : SV_POSITION;
             float4 tangentWS : INTERP0;
             float4 texCoord0 : INTERP1;
             float4 texCoord2 : INTERP2;
             float4 color : INTERP3;
             float3 positionRWS : INTERP4;
             float3 normalWS : INTERP5;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : CUSTOM_INSTANCE_ID;
            #endif
        };
        
            PackedVaryingsMeshToPS PackVaryingsMeshToPS (VaryingsMeshToPS input)
        {
            PackedVaryingsMeshToPS output;
            ZERO_INITIALIZE(PackedVaryingsMeshToPS, output);
            output.positionCS = input.positionCS;
            output.tangentWS.xyzw = input.tangentWS;
            output.texCoord0.xyzw = input.texCoord0;
            output.texCoord2.xyzw = input.texCoord2;
            output.color.xyzw = input.color;
            output.positionRWS.xyz = input.positionRWS;
            output.normalWS.xyz = input.normalWS;
            #if UNITY_ANY_INSTANCING_ENABLED
            output.instanceID = input.instanceID;
            #endif
            return output;
        }
        
        VaryingsMeshToPS UnpackVaryingsMeshToPS (PackedVaryingsMeshToPS input)
        {
            VaryingsMeshToPS output;
            output.positionCS = input.positionCS;
            output.tangentWS = input.tangentWS.xyzw;
            output.texCoord0 = input.texCoord0.xyzw;
            output.texCoord2 = input.texCoord2.xyzw;
            output.color = input.color.xyzw;
            output.positionRWS = input.positionRWS.xyz;
            output.normalWS = input.normalWS.xyz;
            #if UNITY_ANY_INSTANCING_ENABLED
            output.instanceID = input.instanceID;
            #endif
            return output;
        }
        
        
            // --------------------------------------------------
            // Graph
        
        
            // Graph Functions
            
        void AddPragma_float(float3 A, out float3 Out){
        #pragma instancing_options procedural:setupVSPro
        Out = A;
        }
        
        struct Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float
        {
        };
        
        void SG_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float(float3 Vector3_314C8600, Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float IN, out float3 ObjectSpacePosition_1)
        {
        float3 _Property_5ec158abd968858c9d31ab40df5e9e6f_Out_0_Vector3 = Vector3_314C8600;
        float3 _InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3;
        InjectSetup_float(_Property_5ec158abd968858c9d31ab40df5e9e6f_Out_0_Vector3, _InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3);
        float3 _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3;
        AddPragma_float(_InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3, _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3);
        ObjectSpacePosition_1 = _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3;
        }
        
        void Unity_Combine_float(float R, float G, float B, float A, out float4 RGBA, out float3 RGB, out float2 RG)
        {
            RGBA = float4(R, G, B, A);
            RGB = float3(R, G, B);
            RG = float2(R, G);
        }
        
        void Unity_Divide_float(float A, float B, out float Out)
        {
            Out = A / B;
        }
        
        void Unity_Multiply_float4_float4(float4 A, float4 B, out float4 Out)
        {
        Out = A * B;
        }
        
        void Unity_Branch_float4(float Predicate, float4 True, float4 False, out float4 Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_TilingAndOffset_float(float2 UV, float2 Tiling, float2 Offset, out float2 Out)
        {
            Out = UV * Tiling + Offset;
        }
        
        void Unity_Branch_float2(float Predicate, float2 True, float2 False, out float2 Out)
        {
            Out = Predicate ? True : False;
        }
        
        struct Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float
        {
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_2EBA7A3B, float Boolean_7ABB9909, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float IN, out float4 XZ_2)
        {
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Property_30834f691775a0898a45b1c868520436_Out_0_Boolean = Boolean_7ABB9909;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4 = Vector4_2EBA7A3B;
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[0];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[1];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[2];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[3];
        float _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float;
        Unity_Divide_float(1, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4 = IN.uv0;
        float4 _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4 = IN.uv2;
        float4 _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4;
        Unity_Branch_float4(_Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean, _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4, _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4, _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4);
        float2 _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float);
        float2 _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float);
        float2 _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4.xy), _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2, _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2, _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2);
        float2 _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2;
        Unity_Branch_float2(_Property_30834f691775a0898a45b1c868520436_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2, _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2);
        UnitySamplerState _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2) );
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        XZ_2 = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4;
        }
        
        void Unity_Multiply_float_float(float A, float B, out float Out)
        {
            Out = A * B;
        }
        
        void Unity_Add_float(float A, float B, out float Out)
        {
            Out = A + B;
        }
        
        void Unity_Saturate_float(float In, out float Out)
        {
            Out = saturate(In);
        }
        
        void Unity_Absolute_float(float In, out float Out)
        {
            Out = abs(In);
        }
        
        void Unity_SquareRoot_float4(float4 In, out float4 Out)
        {
            Out = sqrt(In);
        }
        
        void Unity_Sign_float(float In, out float Out)
        {
            Out = sign(In);
        }
        
        void Unity_Ceiling_float(float In, out float Out)
        {
            Out = ceil(In);
        }
        
        void Unity_Lerp_float4(float4 A, float4 B, float4 T, out float4 Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float
        {
        };
        
        void SG_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float(float4 Color_9AA111D3, float Vector1_FBE622A2, float Vector1_8C15C351, Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float IN, out float3 OutVector4_1)
        {
        float4 _Property_012510d774fb7f8b860f5270dca4500f_Out_0_Vector4 = Color_9AA111D3;
        float4 _SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4;
        Unity_SquareRoot_float4(_Property_012510d774fb7f8b860f5270dca4500f_Out_0_Vector4, _SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4);
        float _Property_a00e29241d12f983b30177515b367ec9_Out_0_Float = Vector1_FBE622A2;
        float _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float;
        Unity_Sign_float(_Property_a00e29241d12f983b30177515b367ec9_Out_0_Float, _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float);
        float _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float;
        Unity_Add_float(_Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float, 1, _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float);
        float _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float;
        Unity_Multiply_float_float(_Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float, 0.5, _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float);
        float _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float;
        Unity_Ceiling_float(_Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float);
        float _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float = Vector1_8C15C351;
        float _Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float;
        Unity_Multiply_float_float(_Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float);
        float4 _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4;
        Unity_Lerp_float4(_SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4, (_Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float.xxxx), (_Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float.xxxx), _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4);
        float4 _Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4, _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4, _Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4);
        OutVector4_1 = (_Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4.xyz);
        }
        
        void Unity_Clamp_float(float In, float Min, float Max, out float Out)
        {
            Out = clamp(In, Min, Max);
        }
        
        void Unity_Multiply_float2_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A * B;
        }
        
        void Unity_Add_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A + B;
        }
        
        void Unity_DotProduct_float2(float2 A, float2 B, out float Out)
        {
            Out = dot(A, B);
        }
        
        void Unity_OneMinus_float(float In, out float Out)
        {
            Out = 1 - In;
        }
        
        void Unity_SquareRoot_float(float In, out float Out)
        {
            Out = sqrt(In);
        }
        
        void Unity_Sign_float3(float3 In, out float3 Out)
        {
            Out = sign(In);
        }
        
        void Unity_Normalize_float3(float3 In, out float3 Out)
        {
            Out = normalize(In);
        }
        
        void Unity_Branch_float3(float Predicate, float3 True, float3 False, out float3 Out)
        {
            Out = Predicate ? True : False;
        }
        
        struct Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float
        {
        float3 WorldSpaceNormal;
        float3 WorldSpaceTangent;
        float3 WorldSpaceBiTangent;
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_82674548, float Boolean_9FF42DF6, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float IN, out float4 XZ_2)
        {
        float _Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean = Boolean_9FF42DF6;
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4 = Vector4_82674548;
        float _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[0];
        float _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[1];
        float _Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[2];
        float _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[3];
        float _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float;
        Unity_Divide_float(1, _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4 = IN.uv0;
        float4 _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4 = IN.uv2;
        float4 _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4;
        Unity_Branch_float4(_Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean, _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4, _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4, _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4);
        float2 _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float);
        float2 _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float, _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float);
        float2 _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4.xy), _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2, _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2, _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2);
        float2 _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2;
        Unity_Branch_float2(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2, _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2);
        UnitySamplerState _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2) );
        _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.rgb = UnpackNormal(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4);
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        float2 _Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2 = float2(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float, _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float);
        float3 _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3;
        Unity_Sign_float3(IN.WorldSpaceNormal, _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3);
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_R_1_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[0];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[1];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_B_3_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[2];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_A_4_Float = 0;
        float2 _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2 = float2(_Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float, 1);
        float2 _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2;
        Unity_Multiply_float2_float2(_Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2, _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2, _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2);
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float = IN.WorldSpaceNormal[0];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float = IN.WorldSpaceNormal[1];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float = IN.WorldSpaceNormal[2];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_A_4_Float = 0;
        float2 _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2 = float2(_Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float);
        float2 _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2;
        Unity_Add_float2(_Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2, _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2, _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2);
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[0];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[1];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_B_3_Float = 0;
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_A_4_Float = 0;
        float _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float;
        Unity_Multiply_float_float(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float);
        float3 _Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3 = float3(_Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float, _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float);
        float3 _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3;
        {
        float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
        _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3 = TransformWorldToTangent(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
        }
        float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
        Unity_Normalize_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3);
        float3 _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3;
        Unity_Branch_float3(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3, (_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.xyz), _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3);
        XZ_2 = (float4(_Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3, 1.0));
        }
        
        void Unity_NormalStrength_float(float3 In, float Strength, out float3 Out)
        {
            Out = float3(In.rg * Strength, lerp(1, In.b, saturate(Strength)));
        }
        
        void Unity_NormalBlend_float(float3 A, float3 B, out float3 Out)
        {
            Out = SafeNormalize(float3(A.rg + B.rg, A.b * B.b));
        }
        
        void Unity_Subtract_float(float A, float B, out float Out)
        {
            Out = A - B;
        }
        
        void Unity_Power_float(float A, float B, out float Out)
        {
            Out = pow(A, B);
        }
        
        void Unity_Lerp_float3(float3 A, float3 B, float3 T, out float3 Out)
        {
            Out = lerp(A, B, T);
        }
        
        void Unity_Remap_float(float In, float2 InMinMax, float2 OutMinMax, out float Out)
        {
            Out = OutMinMax.x + (In - InMinMax.x) * (OutMinMax.y - OutMinMax.x) / (InMinMax.y - InMinMax.x);
        }
        
        void Unity_Branch_float(float Predicate, float True, float False, out float Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_Multiply_float3_float3(float3 A, float3 B, out float3 Out)
        {
            Out = A * B;
        }
        
        void Unity_Lerp_float(float A, float B, float T, out float Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float
        {
        };
        
        void SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(float Vector1_32317166, float Vector1_FBE622A2, float Vector1_8C15C351, Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float IN, out float SmoothnessOverlay_1)
        {
        float _Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float = Vector1_32317166;
        float _Property_a00e29241d12f983b30177515b367ec9_Out_0_Float = Vector1_FBE622A2;
        float _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float;
        Unity_Sign_float(_Property_a00e29241d12f983b30177515b367ec9_Out_0_Float, _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float);
        float _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float;
        Unity_Add_float(_Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float, 1, _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float);
        float _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float;
        Unity_Multiply_float_float(_Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float, 0.5, _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float);
        float _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float;
        Unity_Ceiling_float(_Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float);
        float _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float = Vector1_8C15C351;
        float _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        Unity_Lerp_float(_Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float, _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float);
        SmoothnessOverlay_1 = _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        }
        
        void Unity_Lerp_float2(float2 A, float2 B, float2 T, out float2 Out)
        {
            Out = lerp(A, B, T);
        }
        
            // Graph Vertex
            struct VertexDescription
        {
            float3 Position;
            float3 Normal;
            float3 Tangent;
        };
        
        VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
        {
            VertexDescription description = (VertexDescription)0;
            Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430;
            float3 _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3;
            SG_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float(IN.ObjectSpacePosition, _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430, _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3);
            description.Position = _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3;
            description.Normal = IN.ObjectSpaceNormal;
            description.Tangent = IN.ObjectSpaceTangent;
            return description;
        }
        
            // Graph Pixel
            struct SurfaceDescription
        {
            float3 BaseColor;
            float3 Emission;
            float Alpha;
            float3 BentNormal;
            float Smoothness;
            float Occlusion;
            float3 NormalTS;
            float3 Specular;
        };
        
        SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
        {
            SurfaceDescription surface = (SurfaceDescription)0;
            UnityTexture2D _Property_9c271219f828108f958217e55cd6dc1d_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseColorMap);
            float4 _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4 = _BaseTilingOffset;
            float _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean = _BaseUsePlanarUV;
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_f392575634df5b86b63ff6e287282b30;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.uv0 = IN.uv0;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.uv2 = IN.uv2;
            float4 _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_9c271219f828108f958217e55cd6dc1d_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_f392575634df5b86b63ff6e287282b30, _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4);
            float4 _Property_4f676fce92c9378db3c3b92ae77fbff9_Out_0_Vector4 = _BaseColor;
            float4 _Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4, _Property_4f676fce92c9378db3c3b92ae77fbff9_Out_0_Vector4, _Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4);
            UnityTexture2D _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_DetailMap);
            float4 _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4 = _DetailTilingOffset;
            float _Split_9fa8573190399e8da2a843a4cab68164_R_1_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[0];
            float _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[1];
            float _Split_9fa8573190399e8da2a843a4cab68164_B_3_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[2];
            float _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[3];
            float2 _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_R_1_Float, _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float);
            float2 _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_B_3_Float, _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float);
            float2 _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2;
            Unity_TilingAndOffset_float(IN.uv0.xy, _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2, _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2, _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2);
            float4 _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.tex, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.samplerstate, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.GetTransformedUV(_TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2) );
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_R_4_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.r;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.g;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.b;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.a;
            float _Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_R_4_Float, 2, _Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float);
            float _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float;
            Unity_Add_float(_Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float, -1, _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float);
            float _Property_7d68da97cd169d8e8649255aec16158a_Out_0_Float = _DetailAlbedoScale;
            float _Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float;
            Unity_Multiply_float_float(_Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float, _Property_7d68da97cd169d8e8649255aec16158a_Out_0_Float, _Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float);
            float _Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float;
            Unity_Saturate_float(_Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float, _Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float);
            float _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float;
            Unity_Absolute_float(_Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float, _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float);
            Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83;
            float3 _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3;
            SG_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float(_Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4, _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float, _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float, _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83, _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3);
            UnityTexture2D _Property_5ca167b35599f78ab3722ec527327841_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverBaseColorMap);
            float4 _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4 = _CoverTilingOffset;
            float _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean = _CoverUsePlanarUV;
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_ad1db3524021ac898447cb6f6daa4180;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.uv0 = IN.uv0;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.uv2 = IN.uv2;
            float4 _PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_5ca167b35599f78ab3722ec527327841_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_ad1db3524021ac898447cb6f6daa4180, _PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4);
            float4 _Property_b34e94e0b1171480b3e35ff7f4793d7c_Out_0_Vector4 = _CoverBaseColor;
            float4 _Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4, _Property_b34e94e0b1171480b3e35ff7f4793d7c_Out_0_Vector4, _Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4);
            float _Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean = _USEDYNAMICCOVERTSTATICMASKF;
            UnityTexture2D _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskA);
            float4 _UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4 = IN.uv0;
            float4 _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.tex, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.samplerstate, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.GetTransformedUV((_UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4.xy)) );
            float _SampleTexture2D_79111e5af287b084822e60563309a632_R_4_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.r;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_G_5_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.g;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_B_6_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.b;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.a;
            float _Property_c022d8255938838aa73170f05c226269_Out_0_Float = _CoverMaskPower;
            float _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float, _Property_c022d8255938838aa73170f05c226269_Out_0_Float, _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float);
            float _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float;
            Unity_Clamp_float(_Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float, 0, 1, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float);
            float2 _Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2 = float2(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float, _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float);
            float2 _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2, float2(2, 2), _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2);
            float2 _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2;
            Unity_Add_float2(_Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2, float2(-1, -1), _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2);
            float _Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float = _DetailNormalScale;
            float2 _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2, (_Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float.xx), _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2);
            float _Split_492de324af96c482b50573c79f9fb6a0_R_1_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[0];
            float _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[1];
            float _Split_492de324af96c482b50573c79f9fb6a0_B_3_Float = 0;
            float _Split_492de324af96c482b50573c79f9fb6a0_A_4_Float = 0;
            float _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float;
            Unity_DotProduct_float2(_Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float);
            float _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float;
            Unity_Saturate_float(_DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float, _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float);
            float _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float;
            Unity_OneMinus_float(_Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float, _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float);
            float _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float;
            Unity_SquareRoot_float(_OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            float3 _Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3 = float3(_Split_492de324af96c482b50573c79f9fb6a0_R_1_Float, _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            UnityTexture2D _Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseNormalMap);
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv0 = IN.uv0;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv2 = IN.uv2;
            float4 _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4);
            float _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float = _BaseNormalScale;
            float3 _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4.xyz), _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3);
            float3 _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3;
            Unity_NormalBlend_float(_Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3, _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3);
            UnityTexture2D _Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverNormalMap);
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv0 = IN.uv0;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv2 = IN.uv2;
            float4 _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4);
            float _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float = _CoverNormalBlendHardness;
            float3 _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3);
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_R_1_Float = IN.WorldSpaceNormal[0];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float = IN.WorldSpaceNormal[1];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_B_3_Float = IN.WorldSpaceNormal[2];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_A_4_Float = 0;
            float _Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float = _Cover_Amount;
            float _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float = _Cover_Amount_Grow_Speed;
            float _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float;
            Unity_Subtract_float(4, _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float);
            float _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float;
            Unity_Divide_float(_Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float);
            float _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float;
            Unity_Absolute_float(_Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float, _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float);
            float _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float;
            Unity_Power_float(_Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float);
            float _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float;
            Unity_Clamp_float(_Power_c11fc5724f830485a9c4df249a854571_Out_2_Float, 0, 2, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float);
            float _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float;
            Unity_Multiply_float_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float);
            float _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float;
            Unity_Saturate_float(_Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float, _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float);
            float _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float;
            Unity_Clamp_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, 0, 0.9999, _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float);
            float _Property_89633a46f34e1f8996557a9178d78478_Out_0_Float = _Cover_Max_Angle;
            float _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float;
            Unity_Divide_float(_Property_89633a46f34e1f8996557a9178d78478_Out_0_Float, 45, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float);
            float _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float;
            Unity_OneMinus_float(_Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float);
            float _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float;
            Unity_Subtract_float(_Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float, _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float);
            float _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float;
            Unity_Clamp_float(_Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float, 0, 2, _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
            float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
            Unity_Divide_float(1, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float);
            float _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_67dcc607b6da848097d3412324311616_Out_3_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float, _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float);
            float _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float;
            Unity_Absolute_float(_Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float, _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float);
            float _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float = _CoverHardness;
            float _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float;
            Unity_Power_float(_Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float);
            float _Property_f8753bb05d835089bda460d144f93c48_Out_0_Float = _Cover_Min_Height;
            float _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float;
            Unity_OneMinus_float(_Property_f8753bb05d835089bda460d144f93c48_Out_0_Float, _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float);
            float _Split_c66e04f85a2a7f87884040056599e65d_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
            float _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
            float _Split_c66e04f85a2a7f87884040056599e65d_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
            float _Split_c66e04f85a2a7f87884040056599e65d_A_4_Float = 0;
            float _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float;
            Unity_Add_float(_OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float, _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float);
            float _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, 1, _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
            float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
            Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, 0, 1, _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float);
            float _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float = _Cover_Min_Height_Blending;
            float _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float, _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float);
            float _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float;
            Unity_Divide_float(_Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float);
            float _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float;
            Unity_OneMinus_float(_Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float, _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float);
            float _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float;
            Unity_Add_float(_OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float, -0.5, _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
            float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
            Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, 0, 1, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float);
            float _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float;
            Unity_Add_float(_Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float, _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float);
            float _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float;
            Unity_Clamp_float(_Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float, 0, 1, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float);
            float _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float;
            Unity_Multiply_float_float(_Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float);
            float _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float;
            Unity_Multiply_float_float(_Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float);
            float3 _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3, (_Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float.xxx), _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3);
            float3 _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3;
            {
                float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
                _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3 = TransformTangentToWorldDir(_Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3.xyz, tangentTransform, false).xyz;
            }
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_R_1_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[0];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[1];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_B_3_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[2];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_A_4_Float = 0;
            float _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float;
            Unity_Multiply_float_float(_Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float);
            float _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float);
            float _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float);
            float _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float, _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float);
            UnityTexture2D _Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_36e64648ad8a6a849bc794b8693519da;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv0 = IN.uv0;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv2 = IN.uv2;
            float4 _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_36e64648ad8a6a849bc794b8693519da, _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4);
            float _Split_198ec92f3e753d8a9ad50db7d6527324_R_1_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[0];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[1];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[2];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[3];
            float _Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float = _CoverHeightMapMin;
            float _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float = _CoverHeightMapMax;
            float2 _Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2 = float2(_Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float, _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float);
            float _Property_277f22c36084858981418fa95133a562_Out_0_Float = _CoverHeightMapOffset;
            float2 _Add_53997153562831859cc7b582f3068877_Out_2_Vector2;
            Unity_Add_float2(_Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2, (_Property_277f22c36084858981418fa95133a562_Out_0_Float.xx), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2);
            float _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float, float2 (0, 1), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float);
            float _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float, _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float);
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float = IN.VertexColor[0];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float = IN.VertexColor[1];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_B_3_Float = IN.VertexColor[2];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_A_4_Float = IN.VertexColor[3];
            float _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float, _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float, _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float);
            float _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float;
            Unity_Saturate_float(_Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float);
            float _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float);
            float _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float;
            Unity_Branch_float(_Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float);
            float3 _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3;
            Unity_Lerp_float3(_BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3, (_Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4.xyz), (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxx), _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3);
            float4 _Property_e687576468764d85b6b46dca96d8a8e3_Out_0_Vector4 = _WetColor;
            float3 _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3;
            Unity_Multiply_float3_float3((_Property_e687576468764d85b6b46dca96d8a8e3_Out_0_Vector4.xyz), _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3, _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3);
            float _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float;
            Unity_OneMinus_float(_Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float);
            float3 _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
            Unity_Lerp_float3(_Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3, _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3, (_OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float.xxx), _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3);
            UnityTexture2D _Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv0 = IN.uv0;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv2 = IN.uv2;
            float4 _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4);
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_R_1_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[0];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[1];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_B_3_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[2];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[3];
            float _Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float = _BaseAORemapMin;
            float _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float = _BaseAORemapMax;
            float2 _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2 = float2(_Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float, _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float);
            float _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float, float2 (0, 1), _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2, _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float);
            float _Property_e353baf414594b8882fb914562e81165_Out_0_Float = _BaseSmoothnessRemapMin;
            float _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float = _BaseSmoothnessRemapMax;
            float2 _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2 = float2(_Property_e353baf414594b8882fb914562e81165_Out_0_Float, _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float);
            float _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float, float2 (0, 1), _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2, _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float);
            float _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float, 2, _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float);
            float _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float;
            Unity_Add_float(_Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float, -1, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float);
            float _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float = _DetailSmoothnessScale;
            float _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float;
            Unity_Multiply_float_float(_Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float, _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float);
            float _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float;
            Unity_Saturate_float(_Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float, _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float);
            float _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float;
            Unity_Absolute_float(_Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float);
            Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da;
            float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float;
            SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(_Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float);
            float _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float;
            Unity_Saturate_float(_BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float2 _Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2 = float2(_Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float _Property_5e08cfb127183a8993376f9087501eee_Out_0_Float = _CoverAORemapMin;
            float _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float = _CoverAORemapMax;
            float2 _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2 = float2(_Property_5e08cfb127183a8993376f9087501eee_Out_0_Float, _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float);
            float _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float, float2 (0, 1), _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2, _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float);
            float _Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float = _CoverSmoothnessRemapMin;
            float _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float = _CoverSmoothnessRemapMax;
            float2 _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2 = float2(_Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float, _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float);
            float _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float, float2 (0, 1), _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2 = float2(_Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2;
            Unity_Lerp_float2(_Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2, _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xx), _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2);
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_R_1_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[0];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[1];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_B_3_Float = 0;
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_A_4_Float = 0;
            float _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float = _WetSmoothness;
            float _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            Unity_Lerp_float(_Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float, _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float, _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float);
            float _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float = _CoverNormalScale;
            float3 _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3);
            float3 _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxx), _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3);
            UnityTexture2D _Property_f617479b11216b84b89956263f8d3c08_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_SpecularColorMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.uv0 = IN.uv0;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.uv2 = IN.uv2;
            float4 _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_f617479b11216b84b89956263f8d3c08_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d, _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4);
            float4 _Property_112303b9c27a1284b20f0a5c49fb436a_Out_0_Vector4 = _SpecularColor;
            float4 _Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4, _Property_112303b9c27a1284b20f0a5c49fb436a_Out_0_Vector4, _Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4);
            UnityTexture2D _Property_0c768f7d1094a8878d837f25970dbd49_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverSpecularColorMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_4b88db16993b7d84a6c9e021b5992a38;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.uv0 = IN.uv0;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.uv2 = IN.uv2;
            float4 _PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_0c768f7d1094a8878d837f25970dbd49_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_4b88db16993b7d84a6c9e021b5992a38, _PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4);
            float4 _Property_51d3c44a7110108d9e8c9a3acf54125f_Out_0_Vector4 = _CoverSpecularColor;
            float4 _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4, _Property_51d3c44a7110108d9e8c9a3acf54125f_Out_0_Vector4, _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4);
            float4 _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4;
            Unity_Lerp_float4(_Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4, _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxxx), _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4);
            surface.BaseColor = _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
            surface.Emission = float3(0, 0, 0);
            surface.Alpha = 1;
            surface.BentNormal = IN.TangentSpaceNormal;
            surface.Smoothness = _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            surface.Occlusion = _Split_beb57fcf05cbb6809f536625bac5fcbc_R_1_Float;
            surface.NormalTS = _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            surface.Specular = (_Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4.xyz);
            return surface;
        }
        
            // --------------------------------------------------
            // Build Graph Inputs
            #ifdef HAVE_VFX_MODIFICATION
            #define VFX_SRP_ATTRIBUTES AttributesMesh
            #define VaryingsMeshType VaryingsMeshToPS
            #define VFX_SRP_VARYINGS VaryingsMeshType
            #define VFX_SRP_SURFACE_INPUTS FragInputs
            #endif
            
        VertexDescriptionInputs AttributesMeshToVertexDescriptionInputs(AttributesMesh input)
        {
            VertexDescriptionInputs output;
            ZERO_INITIALIZE(VertexDescriptionInputs, output);
        
            output.ObjectSpaceNormal =                          input.normalOS;
            output.ObjectSpaceTangent =                         input.tangentOS.xyz;
            output.ObjectSpacePosition =                        input.positionOS;
        
            return output;
        }
        
        VertexDescription GetVertexDescription(AttributesMesh input, float3 timeParameters
        #ifdef HAVE_VFX_MODIFICATION
            , AttributesElement element
        #endif
        )
        {
            // build graph inputs
            VertexDescriptionInputs vertexDescriptionInputs = AttributesMeshToVertexDescriptionInputs(input);
            // Override time parameters with used one (This is required to correctly handle motion vectors for vertex animation based on time)
        
            // evaluate vertex graph
        #ifdef HAVE_VFX_MODIFICATION
            GraphProperties properties;
            ZERO_INITIALIZE(GraphProperties, properties);
        
            // Fetch the vertex graph properties for the particle instance.
            GetElementVertexProperties(element, properties);
        
            VertexDescription vertexDescription = VertexDescriptionFunction(vertexDescriptionInputs, properties);
        #else
            VertexDescription vertexDescription = VertexDescriptionFunction(vertexDescriptionInputs);
        #endif
            return vertexDescription;
        
        }
        
        AttributesMesh ApplyMeshModification(AttributesMesh input, float3 timeParameters
        #ifdef USE_CUSTOMINTERP_SUBSTRUCT
            #ifdef TESSELLATION_ON
            , inout VaryingsMeshToDS varyings
            #else
            , inout VaryingsMeshToPS varyings
            #endif
        #endif
        #ifdef HAVE_VFX_MODIFICATION
                , AttributesElement element
        #endif
            )
        {
            VertexDescription vertexDescription = GetVertexDescription(input, timeParameters
        #ifdef HAVE_VFX_MODIFICATION
                , element
        #endif
            );
        
            // copy graph output to the results
            input.positionOS = vertexDescription.Position;
            input.normalOS = vertexDescription.Normal;
            input.tangentOS.xyz = vertexDescription.Tangent;
        
            
        
            return input;
        }
        
        #if defined(_ADD_CUSTOM_VELOCITY) // For shader graph custom velocity
        // Return precomputed Velocity in object space
        float3 GetCustomVelocity(AttributesMesh input
        #ifdef HAVE_VFX_MODIFICATION
            , AttributesElement element
        #endif
        )
        {
            VertexDescription vertexDescription = GetVertexDescription(input, _TimeParameters.xyz
        #ifdef HAVE_VFX_MODIFICATION
                , element
        #endif
            );
            return vertexDescription.CustomVelocity;
        }
        #endif
        
        FragInputs BuildFragInputs(VaryingsMeshToPS input)
        {
            FragInputs output;
            ZERO_INITIALIZE(FragInputs, output);
        
            // Init to some default value to make the computer quiet (else it output 'divide by zero' warning even if value is not used).
            // TODO: this is a really poor workaround, but the variable is used in a bunch of places
            // to compute normals which are then passed on elsewhere to compute other values...
            output.tangentToWorld = k_identity3x3;
            output.positionSS = input.positionCS;       // input.positionCS is SV_Position
        
            output.positionRWS =                input.positionRWS;
            output.tangentToWorld =             BuildTangentToWorld(input.tangentWS, input.normalWS);
            output.texCoord0 =                  input.texCoord0;
            output.texCoord2 =                  input.texCoord2;
            output.color =                      input.color;
        
        #ifdef HAVE_VFX_MODIFICATION
            // FragInputs from VFX come from two places: Interpolator or CBuffer.
        #if VFX_USE_GRAPH_VALUES
            uint instanceActiveIndex = asuint(UNITY_ACCESS_INSTANCED_PROP(PerInstance, _InstanceActiveIndex));
            /* WARNING: $splice Could not find named fragment 'VFXLoadGraphValues' */
        #endif
        
            /* WARNING: $splice Could not find named fragment 'VFXSetFragInputs' */
        
        #endif
        
            // splice point to copy custom interpolator fields from varyings to frag inputs
            
        
            return output;
        }
        
        // existing HDRP code uses the combined function to go directly from packed to frag inputs
        FragInputs UnpackVaryingsMeshToFragInputs(PackedVaryingsMeshToPS input)
        {
            UNITY_SETUP_INSTANCE_ID(input);
        #if defined(HAVE_VFX_MODIFICATION) && defined(UNITY_INSTANCING_ENABLED)
            unity_InstanceID = input.instanceID;
        #endif
            VaryingsMeshToPS unpacked = UnpackVaryingsMeshToPS(input);
            return BuildFragInputs(unpacked);
        }
            SurfaceDescriptionInputs FragInputsToSurfaceDescriptionInputs(FragInputs input, float3 viewWS)
        {
            SurfaceDescriptionInputs output;
            ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
        
            output.WorldSpaceNormal =                           normalize(input.tangentToWorld[2].xyz);
            #if defined(SHADER_STAGE_RAY_TRACING)
            #else
            #endif
            output.TangentSpaceNormal =                         float3(0.0f, 0.0f, 1.0f);
            output.WorldSpaceTangent =                          input.tangentToWorld[0].xyz;
            output.WorldSpaceBiTangent =                        input.tangentToWorld[1].xyz;
            output.AbsoluteWorldSpacePosition =                 GetAbsolutePositionWS(input.positionRWS);
        
        #if UNITY_UV_STARTS_AT_TOP
        #else
        #endif
        
        
            output.uv0 =                                        input.texCoord0;
            output.uv2 =                                        input.texCoord2;
            output.VertexColor =                                input.color;
        
            // splice point to copy frag inputs custom interpolator pack into the SDI
            
        
            return output;
        }
        
            // --------------------------------------------------
            // Build Surface Data (Specific Material)
        
        void ApplyDecalToSurfaceDataNoNormal(DecalSurfaceData decalSurfaceData, inout SurfaceData surfaceData);
        
        void ApplyDecalAndGetNormal(FragInputs fragInputs, PositionInputs posInput, SurfaceDescription surfaceDescription,
            inout SurfaceData surfaceData)
        {
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
        #ifdef DECAL_NORMAL_BLENDING
            // SG nodes don't ouptut surface gradients, so if decals require surf grad blending, we have to convert
            // the normal to gradient before applying the decal. We then have to resolve the gradient back to world space
            float3 normalTS;
        
            normalTS = SurfaceGradientFromTangentSpaceNormalAndFromTBN(surfaceDescription.NormalTS,
            fragInputs.tangentToWorld[0], fragInputs.tangentToWorld[1]);
        
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, fragInputs.tangentToWorld[2], normalTS);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        
            GetNormalWS_SG(fragInputs, normalTS, surfaceData.normalWS, doubleSidedConstants);
        #else
            // normal delivered to master node
            GetNormalWS(fragInputs, surfaceDescription.NormalTS, surfaceData.normalWS, doubleSidedConstants);
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                // Both uses and modifies 'surfaceData.normalWS'.
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, surfaceData.normalWS.xyz);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        #endif
        }
        void BuildSurfaceData(FragInputs fragInputs, inout SurfaceDescription surfaceDescription, float3 V, PositionInputs posInput, out SurfaceData surfaceData, out float3 bentNormalWS)
        {
            ZERO_INITIALIZE(SurfaceData, surfaceData);
        
            // specularOcclusion need to be init ahead of decal to quiet the compiler that modify the SurfaceData struct
            // however specularOcclusion can come from the graph, so need to be init here so it can be override.
            surfaceData.specularOcclusion = 1.0;
        
            surfaceData.baseColor =                 surfaceDescription.BaseColor;
            surfaceData.perceptualSmoothness =      surfaceDescription.Smoothness;
            surfaceData.ambientOcclusion =          surfaceDescription.Occlusion;
            surfaceData.specularColor =             surfaceDescription.Specular;
        
            #if defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE) || defined(_REFRACTION_THIN)
                if (_EnableSSRefraction)
                {
        
                    surfaceData.transmittanceMask = (1.0 - surfaceDescription.Alpha);
                    surfaceDescription.Alpha = 1.0;
                }
                else
                {
                    surfaceData.ior = 1.0;
                    surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                    surfaceData.atDistance = 1.0;
                    surfaceData.transmittanceMask = 0.0;
                    surfaceDescription.Alpha = 1.0;
                }
            #else
                surfaceData.ior = 1.0;
                surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                surfaceData.atDistance = 1.0;
                surfaceData.transmittanceMask = 0.0;
            #endif
        
            // These static material feature allow compile time optimization
            surfaceData.materialFeatures = MATERIALFEATUREFLAGS_LIT_STANDARD;
            #ifdef _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SUBSURFACE_SCATTERING;
            #endif
        
            #ifdef _MATERIAL_FEATURE_TRANSMISSION
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
            #endif
        
            #ifdef _MATERIAL_FEATURE_ANISOTROPY
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_ANISOTROPY;
        
                // Initialize the normal to something non-zero to avoid a div-zero warning for anisotropy.
                surfaceData.normalWS = float3(0, 1, 0);
            #endif
        
            #ifdef _MATERIAL_FEATURE_IRIDESCENCE
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_IRIDESCENCE;
            #endif
        
            #ifdef _MATERIAL_FEATURE_SPECULAR_COLOR
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SPECULAR_COLOR;
            #endif
        
            #ifdef _MATERIAL_FEATURE_CLEAR_COAT
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_CLEAR_COAT;
            #endif
        
            #if defined (_MATERIAL_FEATURE_SPECULAR_COLOR) && defined (_ENERGY_CONSERVING_SPECULAR)
                // Require to have setup baseColor
                // Reproduce the energy conservation done in legacy Unity. Not ideal but better for compatibility and users can unchek it
                surfaceData.baseColor *= (1.0 - Max3(surfaceData.specularColor.r, surfaceData.specularColor.g, surfaceData.specularColor.b));
            #endif
        
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
            ApplyDecalAndGetNormal(fragInputs, posInput, surfaceDescription, surfaceData);
        
            surfaceData.geomNormalWS = fragInputs.tangentToWorld[2];
        
            surfaceData.tangentWS = normalize(fragInputs.tangentToWorld[0].xyz);    // The tangent is not normalize in tangentToWorld for mikkt. TODO: Check if it expected that we normalize with Morten. Tag: SURFACE_GRADIENT
        
        
            bentNormalWS = surfaceData.normalWS;
        
            surfaceData.tangentWS = Orthonormalize(surfaceData.tangentWS, surfaceData.normalWS);
        
            #ifdef DEBUG_DISPLAY
                if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
                {
                    // TODO: need to update mip info
                    surfaceData.metallic = 0;
                }
        
                // We need to call ApplyDebugToSurfaceData after filling the surfarcedata and before filling builtinData
                // as it can modify attribute use for static lighting
                ApplyDebugToSurfaceData(fragInputs.tangentToWorld, surfaceData);
            #endif
        
            // By default we use the ambient occlusion with Tri-ace trick (apply outside) for specular occlusion.
            // If user provide bent normal then we process a better term
            #if defined(_SPECULAR_OCCLUSION_CUSTOM)
                // Just use the value passed through via the slot (not active otherwise)
            #elif defined(_SPECULAR_OCCLUSION_FROM_AO_BENT_NORMAL)
                // If we have bent normal and ambient occlusion, process a specular occlusion
                surfaceData.specularOcclusion = GetSpecularOcclusionFromBentAO(V, bentNormalWS, surfaceData.normalWS, surfaceData.ambientOcclusion, PerceptualSmoothnessToPerceptualRoughness(surfaceData.perceptualSmoothness));
            #elif defined(_AMBIENT_OCCLUSION) && defined(_SPECULAR_OCCLUSION_FROM_AO)
                surfaceData.specularOcclusion = GetSpecularOcclusionFromAmbientOcclusion(ClampNdotV(dot(surfaceData.normalWS, V)), surfaceData.ambientOcclusion, PerceptualSmoothnessToRoughness(surfaceData.perceptualSmoothness));
            #endif
        
            #if defined(_ENABLE_GEOMETRIC_SPECULAR_AA) && !defined(SHADER_STAGE_RAY_TRACING)
                surfaceData.perceptualSmoothness = GeometricNormalFiltering(surfaceData.perceptualSmoothness, fragInputs.tangentToWorld[2], surfaceDescription.SpecularAAScreenSpaceVariance, surfaceDescription.SpecularAAThreshold);
            #endif
        }
        
            // --------------------------------------------------
            // Get Surface And BuiltinData
        
            void GetSurfaceAndBuiltinData(FragInputs fragInputs, float3 V, inout PositionInputs posInput, out SurfaceData surfaceData, out BuiltinData builtinData RAY_TRACING_OPTIONAL_PARAMETERS)
            {
                // Don't dither if displaced tessellation (we're fading out the displacement instead to match the next LOD)
                #if !defined(SHADER_STAGE_RAY_TRACING) && !defined(_TESSELLATION_DISPLACEMENT)
                #ifdef LOD_FADE_CROSSFADE // enable dithering LOD transition if user select CrossFade transition in LOD group
                LODDitheringTransition(ComputeFadeMaskSeed(V, posInput.positionSS), unity_LODFade.x);
                #endif
                #endif
        
                #ifndef SHADER_UNLIT
                #ifdef _DOUBLESIDED_ON
                    float3 doubleSidedConstants = _DoubleSidedConstants.xyz;
                #else
                    float3 doubleSidedConstants = float3(1.0, 1.0, 1.0);
                #endif
        
                ApplyDoubleSidedFlipOrMirror(fragInputs, doubleSidedConstants); // Apply double sided flip on the vertex normal
                #endif // SHADER_UNLIT
        
                SurfaceDescriptionInputs surfaceDescriptionInputs = FragInputsToSurfaceDescriptionInputs(fragInputs, V);
        
                #if defined(HAVE_VFX_MODIFICATION)
                GraphProperties properties;
                ZERO_INITIALIZE(GraphProperties, properties);
        
                GetElementPixelProperties(fragInputs, properties);
        
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs, properties);
                #else
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs);
                #endif
        
                // Perform alpha test very early to save performance (a killed pixel will not sample textures)
                // TODO: split graph evaluation to grab just alpha dependencies first? tricky..
                #ifdef _ALPHATEST_ON
                    float alphaCutoff = surfaceDescription.AlphaClipThreshold;
                    #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
                    // The TransparentDepthPrepass is also used with SSR transparent.
                    // If an artists enable transaprent SSR but not the TransparentDepthPrepass itself, then we use AlphaClipThreshold
                    // otherwise if TransparentDepthPrepass is enabled we use AlphaClipThresholdDepthPrepass
                    #elif SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_POSTPASS
                    // DepthPostpass always use its own alpha threshold
                    alphaCutoff = surfaceDescription.AlphaClipThresholdDepthPostpass;
                    #elif (SHADERPASS == SHADERPASS_SHADOWS) || (SHADERPASS == SHADERPASS_RAYTRACING_VISIBILITY)
                    // If use shadow threshold isn't enable we don't allow any test
                    #endif
        
                    GENERIC_ALPHA_TEST(surfaceDescription.Alpha, alphaCutoff);
                #endif
        
                #if !defined(SHADER_STAGE_RAY_TRACING) && _DEPTHOFFSET_ON
                ApplyDepthOffsetPositionInput(V, surfaceDescription.DepthOffset, GetViewForwardDir(), GetWorldToHClipMatrix(), posInput);
                #endif
        
                #ifndef SHADER_UNLIT
                float3 bentNormalWS;
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData, bentNormalWS);
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD1
                    float4 lightmapTexCoord1 = fragInputs.texCoord1;
                #else
                    float4 lightmapTexCoord1 = float4(0,0,0,0);
                #endif
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD2
                    float4 lightmapTexCoord2 = fragInputs.texCoord2;
                #else
                    float4 lightmapTexCoord2 = float4(0,0,0,0);
                #endif
        
                // Builtin Data
                // For back lighting we use the oposite vertex normal
                InitBuiltinData(posInput, surfaceDescription.Alpha, bentNormalWS, -fragInputs.tangentToWorld[2], lightmapTexCoord1, lightmapTexCoord2, builtinData);
        
                #else
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData);
        
                ZERO_BUILTIN_INITIALIZE(builtinData); // No call to InitBuiltinData as we don't have any lighting
                builtinData.opacity = surfaceDescription.Alpha;
        
                #if defined(DEBUG_DISPLAY)
                    // Light Layers are currently not used for the Unlit shader (because it is not lit)
                    // But Unlit objects do cast shadows according to their rendering layer mask, which is what we want to
                    // display in the light layers visualization mode, therefore we need the renderingLayers
                    builtinData.renderingLayers = GetMeshRenderingLightLayer();
                #endif
        
                #endif // SHADER_UNLIT
        
                #ifdef _ALPHATEST_ON
                    // Used for sharpening by alpha to mask - Alpha to covertage is only used with depth only and forward pass (no shadow pass, no transparent pass)
                    builtinData.alphaClipTreshold = alphaCutoff;
                #endif
        
                // override sampleBakedGI - not used by Unlit
        
                builtinData.emissiveColor = surfaceDescription.Emission;
        
                // Note this will not fully work on transparent surfaces (can check with _SURFACE_TYPE_TRANSPARENT define)
                // We will always overwrite vt feeback with the nearest. So behind transparent surfaces vt will not be resolved
                // This is a limitation of the current MRT approach.
                #ifdef UNITY_VIRTUAL_TEXTURING
                #endif
        
                #if _DEPTHOFFSET_ON
                builtinData.depthOffset = surfaceDescription.DepthOffset;
                #endif
        
                // TODO: We should generate distortion / distortionBlur for non distortion pass
                #if (SHADERPASS == SHADERPASS_DISTORTION)
                builtinData.distortion = surfaceDescription.Distortion;
                builtinData.distortionBlur = surfaceDescription.DistortionBlur;
                #endif
        
                #ifndef SHADER_UNLIT
                // PostInitBuiltinData call ApplyDebugToBuiltinData
                PostInitBuiltinData(V, posInput, surfaceData, builtinData);
                #else
                ApplyDebugToBuiltinData(builtinData);
                #endif
        
                RAY_TRACING_OPTIONAL_ALPHA_TEST_PASS
            }
        
            // --------------------------------------------------
            // Main
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassDepthOnly.hlsl"
        
            // --------------------------------------------------
            // Visual Effect Vertex Invocations
        
        	#ifdef HAVE_VFX_MODIFICATION
        	#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
        	#endif
        
            ENDHLSL
        }
        Pass
        {
            Name "MotionVectors"
            Tags
            {
                "LightMode" = "MotionVectors"
            }
        
            // Render State
            Cull [_CullMode]
        ZWrite On
        Stencil
        {
        WriteMask [_StencilWriteMaskMV]
        Ref [_StencilRefMV]
        CompFront Always
        PassFront Replace
        CompBack Always
        PassBack Replace
        }
        
            // Debug
            // <None>
        
            // --------------------------------------------------
            // Pass
        
            HLSLPROGRAM
        
            // Pragmas
            #pragma multi_compile _ DOTS_INSTANCING_ON
        #pragma instancing_options renderinglayer
        #pragma target 4.5
        #pragma vertex Vert
        #pragma fragment Frag
        #pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal switch
        #pragma multi_compile_instancing
        
            // Keywords
            #pragma multi_compile_fragment _ WRITE_MSAA_DEPTH
        #pragma shader_feature _ _SURFACE_TYPE_TRANSPARENT
        #pragma shader_feature_local _ _DOUBLESIDED_ON
        #pragma shader_feature_local _ _ADD_PRECOMPUTED_VELOCITY
        #pragma shader_feature_local _ _TRANSPARENT_WRITES_MOTION_VEC
        #pragma shader_feature_local_fragment _ _ENABLE_FOG_ON_TRANSPARENT
        #pragma multi_compile _ LOD_FADE_CROSSFADE
        #pragma multi_compile _ WRITE_NORMAL_BUFFER
        #pragma shader_feature_local_fragment _ _DISABLE_DECALS
        #pragma shader_feature_local_raytracing _ _DISABLE_DECALS
        #pragma shader_feature_local_fragment _ _DISABLE_SSR
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR
        #pragma shader_feature_local_fragment _ _DISABLE_SSR_TRANSPARENT
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR_TRANSPARENT
        #pragma multi_compile _ WRITE_DECAL_BUFFER
        #pragma shader_feature_local _ _REFRACTION_PLANE _REFRACTION_SPHERE _REFRACTION_THIN
            // GraphKeywords: <None>
        
            // For custom interpolators to inject a substruct definition before FragInputs definition,
            // allowing for FragInputs to capture CI's intended for ShaderGraph's SDI.
            struct CustomInterpolators
        {
        };
        #define USE_CUSTOMINTERP_SUBSTRUCT
        
        
        
            // TODO: Merge FragInputsVFX substruct with CustomInterpolators.
        	#ifdef HAVE_VFX_MODIFICATION
        	struct FragInputsVFX
            {
                /* WARNING: $splice Could not find named fragment 'FragInputsVFX' */
            };
            #endif
        
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/GeometricTools.hlsl" // Required by Tessellation.hlsl
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Tessellation.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl" // Required to be include before we include properties as it define DECLARE_STACK_CB
            // Always include Shader Graph version
            // Always include last to avoid double macros
            #include "Packages/com.unity.shadergraph/ShaderGraphLibrary/Functions.hlsl" // Need to be here for Gradient struct definition
        
            // --------------------------------------------------
            // Defines
        
            // Attribute
            #define ATTRIBUTES_NEED_NORMAL
            #define ATTRIBUTES_NEED_TANGENT
            #define ATTRIBUTES_NEED_TEXCOORD0
            #define ATTRIBUTES_NEED_TEXCOORD2
            #define ATTRIBUTES_NEED_COLOR
            #define VARYINGS_NEED_POSITION_WS
            #define VARYINGS_NEED_TANGENT_TO_WORLD
            #define VARYINGS_NEED_TEXCOORD0
            #define VARYINGS_NEED_TEXCOORD2
            #define VARYINGS_NEED_COLOR
        
            #define HAVE_MESH_MODIFICATION
        
            //Strip down the FragInputs.hlsl (on graphics), so we can only optimize the interpolators we use.
            //if by accident something requests contents of FragInputs.hlsl, it will be caught as a compiler error
            //Frag inputs stripping is only enabled when FRAG_INPUTS_ENABLE_STRIPPING is set
            #if !defined(SHADER_STAGE_RAY_TRACING) && SHADERPASS != SHADERPASS_RAYTRACING_GBUFFER && SHADERPASS != SHADERPASS_FULL_SCREEN_DEBUG
            #define FRAG_INPUTS_ENABLE_STRIPPING
            #endif
            #define FRAG_INPUTS_USE_TEXCOORD0
            #define FRAG_INPUTS_USE_TEXCOORD2
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/FragInputs.hlsl"
        
        
        
            #define SHADERPASS SHADERPASS_MOTION_VECTORS
        
        
            // Following two define are a workaround introduce in 10.1.x for RaytracingQualityNode
            // The ShaderGraph don't support correctly migration of this node as it serialize all the node data
            // in the json file making it impossible to uprgrade. Until we get a fix, we do a workaround here
            // to still allow us to rename the field and keyword of this node without breaking existing code.
            #ifdef RAYTRACING_SHADER_GRAPH_DEFAULT
            #define RAYTRACING_SHADER_GRAPH_HIGH
            #endif
        
            #ifdef RAYTRACING_SHADER_GRAPH_RAYTRACED
            #define RAYTRACING_SHADER_GRAPH_LOW
            #endif
            // end
        
            #ifndef SHADER_UNLIT
            // We need isFrontFace when using double sided - it is not required for unlit as in case of unlit double sided only drive the cullmode
            // VARYINGS_NEED_CULLFACE can be define by VaryingsMeshToPS.FaceSign input if a IsFrontFace Node is included in the shader graph.
            #if defined(_DOUBLESIDED_ON) && !defined(VARYINGS_NEED_CULLFACE)
                #define VARYINGS_NEED_CULLFACE
            #endif
            #endif
        
            // Specific Material Define
        #define _MATERIAL_FEATURE_SPECULAR_COLOR 1
        #define _AMBIENT_OCCLUSION 1
        #define _SPECULAR_OCCLUSION_FROM_AO 1
        #define _ENERGY_CONSERVING_SPECULAR 1
        
        // If we use subsurface scattering, enable output split lighting (for forward pass)
        #if defined(_MATERIAL_FEATURE_SUBSURFACE_SCATTERING) && !defined(_SURFACE_TYPE_TRANSPARENT)
            #define OUTPUT_SPLIT_LIGHTING
        #endif
        
        // This shader support recursive rendering for raytracing
        #define HAVE_RECURSIVE_RENDERING
        
        // In Path Tracing, For all single-sided, refractive materials, we want to force a thin refraction model
        #if (SHADERPASS == SHADERPASS_PATH_TRACING) && !defined(_DOUBLESIDED_ON) && (defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE))
            #undef  _REFRACTION_PLANE
            #undef  _REFRACTION_SPHERE
            #define _REFRACTION_THIN
        #endif
            // Caution: we can use the define SHADER_UNLIT onlit after the above Material include as it is the Unlit template who define it
        
            // To handle SSR on transparent correctly with a possibility to enable/disable it per framesettings
            // we should have a code like this:
            // if !defined(_DISABLE_SSR_TRANSPARENT)
            // pragma multi_compile _ WRITE_NORMAL_BUFFER
            // endif
            // i.e we enable the multicompile only if we can receive SSR or not, and then C# code drive
            // it based on if SSR transparent in frame settings and not (and stripper can strip it).
            // this is currently not possible with our current preprocessor as _DISABLE_SSR_TRANSPARENT is a keyword not a define
            // so instead we used this and chose to pay the extra cost of normal write even if SSR transaprent is disabled.
            // Ideally the shader graph generator should handle it but condition below can't be handle correctly for now.
            #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
            #if !defined(_DISABLE_SSR_TRANSPARENT) && !defined(SHADER_UNLIT)
                #define WRITE_NORMAL_BUFFER
            #endif
            #endif
        
            #ifndef DEBUG_DISPLAY
                // In case of opaque we don't want to perform the alpha test, it is done in depth prepass and we use depth equal for ztest (setup from UI)
                // Don't do it with debug display mode as it is possible there is no depth prepass in this case
                #if !defined(_SURFACE_TYPE_TRANSPARENT)
                    #if SHADERPASS == SHADERPASS_FORWARD
                    #define SHADERPASS_FORWARD_BYPASS_ALPHA_TEST
                    #elif SHADERPASS == SHADERPASS_GBUFFER
                    #define SHADERPASS_GBUFFER_BYPASS_ALPHA_TEST
                    #endif
                #endif
            #endif
        
            // Define _DEFERRED_CAPABLE_MATERIAL for shader capable to run in deferred pass
            #if defined(SHADER_LIT) && !defined(_SURFACE_TYPE_TRANSPARENT)
                #define _DEFERRED_CAPABLE_MATERIAL
            #endif
        
            // Translate transparent motion vector define
            #if defined(_TRANSPARENT_WRITES_MOTION_VEC) && defined(_SURFACE_TYPE_TRANSPARENT)
                #define _WRITE_TRANSPARENT_MOTION_VECTOR
            #endif
        
            // -- Graph Properties
            CBUFFER_START(UnityPerMaterial)
        float4 _BaseColor;
        float4 _BaseColorMap_TexelSize;
        float _BaseUsePlanarUV;
        float4 _BaseTilingOffset;
        float4 _SpecularColor;
        float4 _SpecularColorMap_TexelSize;
        float4 _BaseNormalMap_TexelSize;
        float _BaseNormalScale;
        float4 _BaseMaskMap_TexelSize;
        float _BaseAORemapMin;
        float _BaseAORemapMax;
        float _BaseSmoothnessRemapMin;
        float _BaseSmoothnessRemapMax;
        float _USEDYNAMICCOVERTSTATICMASKF;
        float4 _CoverMaskA_TexelSize;
        float _CoverMaskPower;
        float _Cover_Amount;
        float _Cover_Amount_Grow_Speed;
        float _Cover_Max_Angle;
        float _Cover_Min_Height;
        float _Cover_Min_Height_Blending;
        float4 _CoverBaseColor;
        float4 _CoverBaseColorMap_TexelSize;
        float _CoverUsePlanarUV;
        float4 _CoverTilingOffset;
        float4 _CoverSpecularColor;
        float4 _CoverSpecularColorMap_TexelSize;
        float4 _CoverNormalMap_TexelSize;
        float _CoverNormalScale;
        float _CoverNormalBlendHardness;
        float _CoverHardness;
        float _CoverHeightMapMin;
        float _CoverHeightMapMax;
        float _CoverHeightMapOffset;
        float4 _CoverMaskMap_TexelSize;
        float _CoverAORemapMin;
        float _CoverAORemapMax;
        float _CoverSmoothnessRemapMin;
        float _CoverSmoothnessRemapMax;
        float4 _DetailMap_TexelSize;
        float4 _DetailTilingOffset;
        float _DetailAlbedoScale;
        float _DetailNormalScale;
        float _DetailSmoothnessScale;
        float4 _WetColor;
        float _WetSmoothness;
        float4 _EmissionColor;
        float _UseShadowThreshold;
        float4 _DoubleSidedConstants;
        float _BlendMode;
        float _EnableBlendModePreserveSpecularLighting;
        float _RayTracing;
        float _RefractionModel;
        CBUFFER_END
        
        
        // Object and Global properties
        SAMPLER(SamplerState_Linear_Repeat);
        SAMPLER(SamplerState_Linear_Repeat_Aniso8);
        TEXTURE2D(_BaseColorMap);
        SAMPLER(sampler_BaseColorMap);
        TEXTURE2D(_SpecularColorMap);
        SAMPLER(sampler_SpecularColorMap);
        TEXTURE2D(_BaseNormalMap);
        SAMPLER(sampler_BaseNormalMap);
        TEXTURE2D(_BaseMaskMap);
        SAMPLER(sampler_BaseMaskMap);
        TEXTURE2D(_CoverMaskA);
        SAMPLER(sampler_CoverMaskA);
        TEXTURE2D(_CoverBaseColorMap);
        SAMPLER(sampler_CoverBaseColorMap);
        TEXTURE2D(_CoverSpecularColorMap);
        SAMPLER(sampler_CoverSpecularColorMap);
        TEXTURE2D(_CoverNormalMap);
        SAMPLER(sampler_CoverNormalMap);
        TEXTURE2D(_CoverMaskMap);
        SAMPLER(sampler_CoverMaskMap);
        TEXTURE2D(_DetailMap);
        SAMPLER(sampler_DetailMap);
        
            // -- Property used by ScenePickingPass
            #ifdef SCENEPICKINGPASS
            float4 _SelectionID;
            #endif
        
            // -- Properties used by SceneSelectionPass
            #ifdef SCENESELECTIONPASS
            int _ObjectId;
            int _PassValue;
            #endif
        
            // Includes
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl"
        #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/NormalSurfaceGradient.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/BuiltinUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/DecalUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitDecalData.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderGraphFunctions.hlsl"
        	#include "./NM_Object_VSPro_Indirect.cginc"
        
            // --------------------------------------------------
            // Structs and Packing
        
            struct AttributesMesh
        {
             float3 positionOS : POSITION;
             float3 normalOS : NORMAL;
             float4 tangentOS : TANGENT;
             float4 uv0 : TEXCOORD0;
             float4 uv2 : TEXCOORD2;
             float4 color : COLOR;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : INSTANCEID_SEMANTIC;
            #endif
        };
        struct VaryingsMeshToPS
        {
            SV_POSITION_QUALIFIERS float4 positionCS : SV_POSITION;
             float3 positionRWS;
             float3 normalWS;
             float4 tangentWS;
             float4 texCoord0;
             float4 texCoord2;
             float4 color;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : CUSTOM_INSTANCE_ID;
            #endif
        };
        struct VertexDescriptionInputs
        {
             float3 ObjectSpaceNormal;
             float3 ObjectSpaceTangent;
             float3 ObjectSpacePosition;
        };
        struct SurfaceDescriptionInputs
        {
             float3 WorldSpaceNormal;
             float3 TangentSpaceNormal;
             float3 WorldSpaceTangent;
             float3 WorldSpaceBiTangent;
             float3 AbsoluteWorldSpacePosition;
             float4 uv0;
             float4 uv2;
             float4 VertexColor;
        };
        struct PackedVaryingsMeshToPS
        {
            SV_POSITION_QUALIFIERS float4 positionCS : SV_POSITION;
             float4 tangentWS : INTERP0;
             float4 texCoord0 : INTERP1;
             float4 texCoord2 : INTERP2;
             float4 color : INTERP3;
             float3 positionRWS : INTERP4;
             float3 normalWS : INTERP5;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : CUSTOM_INSTANCE_ID;
            #endif
        };
        
            PackedVaryingsMeshToPS PackVaryingsMeshToPS (VaryingsMeshToPS input)
        {
            PackedVaryingsMeshToPS output;
            ZERO_INITIALIZE(PackedVaryingsMeshToPS, output);
            output.positionCS = input.positionCS;
            output.tangentWS.xyzw = input.tangentWS;
            output.texCoord0.xyzw = input.texCoord0;
            output.texCoord2.xyzw = input.texCoord2;
            output.color.xyzw = input.color;
            output.positionRWS.xyz = input.positionRWS;
            output.normalWS.xyz = input.normalWS;
            #if UNITY_ANY_INSTANCING_ENABLED
            output.instanceID = input.instanceID;
            #endif
            return output;
        }
        
        VaryingsMeshToPS UnpackVaryingsMeshToPS (PackedVaryingsMeshToPS input)
        {
            VaryingsMeshToPS output;
            output.positionCS = input.positionCS;
            output.tangentWS = input.tangentWS.xyzw;
            output.texCoord0 = input.texCoord0.xyzw;
            output.texCoord2 = input.texCoord2.xyzw;
            output.color = input.color.xyzw;
            output.positionRWS = input.positionRWS.xyz;
            output.normalWS = input.normalWS.xyz;
            #if UNITY_ANY_INSTANCING_ENABLED
            output.instanceID = input.instanceID;
            #endif
            return output;
        }
        
        
            // --------------------------------------------------
            // Graph
        
        
            // Graph Functions
            
        void AddPragma_float(float3 A, out float3 Out){
        #pragma instancing_options procedural:setupVSPro
        Out = A;
        }
        
        struct Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float
        {
        };
        
        void SG_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float(float3 Vector3_314C8600, Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float IN, out float3 ObjectSpacePosition_1)
        {
        float3 _Property_5ec158abd968858c9d31ab40df5e9e6f_Out_0_Vector3 = Vector3_314C8600;
        float3 _InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3;
        InjectSetup_float(_Property_5ec158abd968858c9d31ab40df5e9e6f_Out_0_Vector3, _InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3);
        float3 _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3;
        AddPragma_float(_InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3, _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3);
        ObjectSpacePosition_1 = _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3;
        }
        
        void Unity_Combine_float(float R, float G, float B, float A, out float4 RGBA, out float3 RGB, out float2 RG)
        {
            RGBA = float4(R, G, B, A);
            RGB = float3(R, G, B);
            RG = float2(R, G);
        }
        
        void Unity_Divide_float(float A, float B, out float Out)
        {
            Out = A / B;
        }
        
        void Unity_Multiply_float4_float4(float4 A, float4 B, out float4 Out)
        {
        Out = A * B;
        }
        
        void Unity_Branch_float4(float Predicate, float4 True, float4 False, out float4 Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_TilingAndOffset_float(float2 UV, float2 Tiling, float2 Offset, out float2 Out)
        {
            Out = UV * Tiling + Offset;
        }
        
        void Unity_Branch_float2(float Predicate, float2 True, float2 False, out float2 Out)
        {
            Out = Predicate ? True : False;
        }
        
        struct Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float
        {
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_2EBA7A3B, float Boolean_7ABB9909, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float IN, out float4 XZ_2)
        {
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Property_30834f691775a0898a45b1c868520436_Out_0_Boolean = Boolean_7ABB9909;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4 = Vector4_2EBA7A3B;
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[0];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[1];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[2];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[3];
        float _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float;
        Unity_Divide_float(1, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4 = IN.uv0;
        float4 _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4 = IN.uv2;
        float4 _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4;
        Unity_Branch_float4(_Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean, _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4, _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4, _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4);
        float2 _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float);
        float2 _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float);
        float2 _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4.xy), _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2, _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2, _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2);
        float2 _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2;
        Unity_Branch_float2(_Property_30834f691775a0898a45b1c868520436_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2, _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2);
        UnitySamplerState _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2) );
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        XZ_2 = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4;
        }
        
        void Unity_Multiply_float_float(float A, float B, out float Out)
        {
            Out = A * B;
        }
        
        void Unity_Add_float(float A, float B, out float Out)
        {
            Out = A + B;
        }
        
        void Unity_Saturate_float(float In, out float Out)
        {
            Out = saturate(In);
        }
        
        void Unity_Absolute_float(float In, out float Out)
        {
            Out = abs(In);
        }
        
        void Unity_SquareRoot_float4(float4 In, out float4 Out)
        {
            Out = sqrt(In);
        }
        
        void Unity_Sign_float(float In, out float Out)
        {
            Out = sign(In);
        }
        
        void Unity_Ceiling_float(float In, out float Out)
        {
            Out = ceil(In);
        }
        
        void Unity_Lerp_float4(float4 A, float4 B, float4 T, out float4 Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float
        {
        };
        
        void SG_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float(float4 Color_9AA111D3, float Vector1_FBE622A2, float Vector1_8C15C351, Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float IN, out float3 OutVector4_1)
        {
        float4 _Property_012510d774fb7f8b860f5270dca4500f_Out_0_Vector4 = Color_9AA111D3;
        float4 _SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4;
        Unity_SquareRoot_float4(_Property_012510d774fb7f8b860f5270dca4500f_Out_0_Vector4, _SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4);
        float _Property_a00e29241d12f983b30177515b367ec9_Out_0_Float = Vector1_FBE622A2;
        float _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float;
        Unity_Sign_float(_Property_a00e29241d12f983b30177515b367ec9_Out_0_Float, _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float);
        float _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float;
        Unity_Add_float(_Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float, 1, _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float);
        float _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float;
        Unity_Multiply_float_float(_Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float, 0.5, _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float);
        float _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float;
        Unity_Ceiling_float(_Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float);
        float _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float = Vector1_8C15C351;
        float _Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float;
        Unity_Multiply_float_float(_Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float);
        float4 _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4;
        Unity_Lerp_float4(_SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4, (_Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float.xxxx), (_Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float.xxxx), _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4);
        float4 _Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4, _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4, _Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4);
        OutVector4_1 = (_Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4.xyz);
        }
        
        void Unity_Clamp_float(float In, float Min, float Max, out float Out)
        {
            Out = clamp(In, Min, Max);
        }
        
        void Unity_Multiply_float2_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A * B;
        }
        
        void Unity_Add_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A + B;
        }
        
        void Unity_DotProduct_float2(float2 A, float2 B, out float Out)
        {
            Out = dot(A, B);
        }
        
        void Unity_OneMinus_float(float In, out float Out)
        {
            Out = 1 - In;
        }
        
        void Unity_SquareRoot_float(float In, out float Out)
        {
            Out = sqrt(In);
        }
        
        void Unity_Sign_float3(float3 In, out float3 Out)
        {
            Out = sign(In);
        }
        
        void Unity_Normalize_float3(float3 In, out float3 Out)
        {
            Out = normalize(In);
        }
        
        void Unity_Branch_float3(float Predicate, float3 True, float3 False, out float3 Out)
        {
            Out = Predicate ? True : False;
        }
        
        struct Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float
        {
        float3 WorldSpaceNormal;
        float3 WorldSpaceTangent;
        float3 WorldSpaceBiTangent;
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_82674548, float Boolean_9FF42DF6, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float IN, out float4 XZ_2)
        {
        float _Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean = Boolean_9FF42DF6;
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4 = Vector4_82674548;
        float _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[0];
        float _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[1];
        float _Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[2];
        float _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[3];
        float _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float;
        Unity_Divide_float(1, _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4 = IN.uv0;
        float4 _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4 = IN.uv2;
        float4 _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4;
        Unity_Branch_float4(_Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean, _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4, _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4, _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4);
        float2 _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float);
        float2 _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float, _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float);
        float2 _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4.xy), _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2, _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2, _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2);
        float2 _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2;
        Unity_Branch_float2(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2, _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2);
        UnitySamplerState _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2) );
        _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.rgb = UnpackNormal(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4);
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        float2 _Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2 = float2(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float, _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float);
        float3 _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3;
        Unity_Sign_float3(IN.WorldSpaceNormal, _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3);
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_R_1_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[0];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[1];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_B_3_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[2];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_A_4_Float = 0;
        float2 _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2 = float2(_Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float, 1);
        float2 _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2;
        Unity_Multiply_float2_float2(_Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2, _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2, _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2);
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float = IN.WorldSpaceNormal[0];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float = IN.WorldSpaceNormal[1];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float = IN.WorldSpaceNormal[2];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_A_4_Float = 0;
        float2 _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2 = float2(_Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float);
        float2 _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2;
        Unity_Add_float2(_Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2, _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2, _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2);
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[0];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[1];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_B_3_Float = 0;
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_A_4_Float = 0;
        float _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float;
        Unity_Multiply_float_float(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float);
        float3 _Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3 = float3(_Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float, _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float);
        float3 _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3;
        {
        float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
        _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3 = TransformWorldToTangent(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
        }
        float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
        Unity_Normalize_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3);
        float3 _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3;
        Unity_Branch_float3(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3, (_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.xyz), _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3);
        XZ_2 = (float4(_Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3, 1.0));
        }
        
        void Unity_NormalStrength_float(float3 In, float Strength, out float3 Out)
        {
            Out = float3(In.rg * Strength, lerp(1, In.b, saturate(Strength)));
        }
        
        void Unity_NormalBlend_float(float3 A, float3 B, out float3 Out)
        {
            Out = SafeNormalize(float3(A.rg + B.rg, A.b * B.b));
        }
        
        void Unity_Subtract_float(float A, float B, out float Out)
        {
            Out = A - B;
        }
        
        void Unity_Power_float(float A, float B, out float Out)
        {
            Out = pow(A, B);
        }
        
        void Unity_Lerp_float3(float3 A, float3 B, float3 T, out float3 Out)
        {
            Out = lerp(A, B, T);
        }
        
        void Unity_Remap_float(float In, float2 InMinMax, float2 OutMinMax, out float Out)
        {
            Out = OutMinMax.x + (In - InMinMax.x) * (OutMinMax.y - OutMinMax.x) / (InMinMax.y - InMinMax.x);
        }
        
        void Unity_Branch_float(float Predicate, float True, float False, out float Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_Multiply_float3_float3(float3 A, float3 B, out float3 Out)
        {
            Out = A * B;
        }
        
        void Unity_Lerp_float(float A, float B, float T, out float Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float
        {
        };
        
        void SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(float Vector1_32317166, float Vector1_FBE622A2, float Vector1_8C15C351, Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float IN, out float SmoothnessOverlay_1)
        {
        float _Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float = Vector1_32317166;
        float _Property_a00e29241d12f983b30177515b367ec9_Out_0_Float = Vector1_FBE622A2;
        float _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float;
        Unity_Sign_float(_Property_a00e29241d12f983b30177515b367ec9_Out_0_Float, _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float);
        float _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float;
        Unity_Add_float(_Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float, 1, _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float);
        float _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float;
        Unity_Multiply_float_float(_Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float, 0.5, _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float);
        float _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float;
        Unity_Ceiling_float(_Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float);
        float _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float = Vector1_8C15C351;
        float _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        Unity_Lerp_float(_Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float, _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float);
        SmoothnessOverlay_1 = _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        }
        
        void Unity_Lerp_float2(float2 A, float2 B, float2 T, out float2 Out)
        {
            Out = lerp(A, B, T);
        }
        
            // Graph Vertex
            struct VertexDescription
        {
            float3 Position;
            float3 Normal;
            float3 Tangent;
        };
        
        VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
        {
            VertexDescription description = (VertexDescription)0;
            Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430;
            float3 _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3;
            SG_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float(IN.ObjectSpacePosition, _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430, _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3);
            description.Position = _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3;
            description.Normal = IN.ObjectSpaceNormal;
            description.Tangent = IN.ObjectSpaceTangent;
            return description;
        }
        
            // Graph Pixel
            struct SurfaceDescription
        {
            float3 BaseColor;
            float3 Emission;
            float Alpha;
            float3 BentNormal;
            float Smoothness;
            float Occlusion;
            float3 NormalTS;
            float3 Specular;
        };
        
        SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
        {
            SurfaceDescription surface = (SurfaceDescription)0;
            UnityTexture2D _Property_9c271219f828108f958217e55cd6dc1d_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseColorMap);
            float4 _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4 = _BaseTilingOffset;
            float _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean = _BaseUsePlanarUV;
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_f392575634df5b86b63ff6e287282b30;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.uv0 = IN.uv0;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.uv2 = IN.uv2;
            float4 _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_9c271219f828108f958217e55cd6dc1d_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_f392575634df5b86b63ff6e287282b30, _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4);
            float4 _Property_4f676fce92c9378db3c3b92ae77fbff9_Out_0_Vector4 = _BaseColor;
            float4 _Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4, _Property_4f676fce92c9378db3c3b92ae77fbff9_Out_0_Vector4, _Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4);
            UnityTexture2D _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_DetailMap);
            float4 _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4 = _DetailTilingOffset;
            float _Split_9fa8573190399e8da2a843a4cab68164_R_1_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[0];
            float _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[1];
            float _Split_9fa8573190399e8da2a843a4cab68164_B_3_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[2];
            float _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[3];
            float2 _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_R_1_Float, _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float);
            float2 _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_B_3_Float, _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float);
            float2 _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2;
            Unity_TilingAndOffset_float(IN.uv0.xy, _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2, _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2, _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2);
            float4 _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.tex, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.samplerstate, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.GetTransformedUV(_TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2) );
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_R_4_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.r;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.g;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.b;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.a;
            float _Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_R_4_Float, 2, _Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float);
            float _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float;
            Unity_Add_float(_Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float, -1, _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float);
            float _Property_7d68da97cd169d8e8649255aec16158a_Out_0_Float = _DetailAlbedoScale;
            float _Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float;
            Unity_Multiply_float_float(_Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float, _Property_7d68da97cd169d8e8649255aec16158a_Out_0_Float, _Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float);
            float _Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float;
            Unity_Saturate_float(_Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float, _Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float);
            float _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float;
            Unity_Absolute_float(_Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float, _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float);
            Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83;
            float3 _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3;
            SG_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float(_Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4, _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float, _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float, _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83, _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3);
            UnityTexture2D _Property_5ca167b35599f78ab3722ec527327841_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverBaseColorMap);
            float4 _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4 = _CoverTilingOffset;
            float _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean = _CoverUsePlanarUV;
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_ad1db3524021ac898447cb6f6daa4180;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.uv0 = IN.uv0;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.uv2 = IN.uv2;
            float4 _PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_5ca167b35599f78ab3722ec527327841_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_ad1db3524021ac898447cb6f6daa4180, _PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4);
            float4 _Property_b34e94e0b1171480b3e35ff7f4793d7c_Out_0_Vector4 = _CoverBaseColor;
            float4 _Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4, _Property_b34e94e0b1171480b3e35ff7f4793d7c_Out_0_Vector4, _Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4);
            float _Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean = _USEDYNAMICCOVERTSTATICMASKF;
            UnityTexture2D _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskA);
            float4 _UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4 = IN.uv0;
            float4 _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.tex, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.samplerstate, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.GetTransformedUV((_UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4.xy)) );
            float _SampleTexture2D_79111e5af287b084822e60563309a632_R_4_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.r;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_G_5_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.g;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_B_6_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.b;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.a;
            float _Property_c022d8255938838aa73170f05c226269_Out_0_Float = _CoverMaskPower;
            float _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float, _Property_c022d8255938838aa73170f05c226269_Out_0_Float, _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float);
            float _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float;
            Unity_Clamp_float(_Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float, 0, 1, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float);
            float2 _Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2 = float2(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float, _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float);
            float2 _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2, float2(2, 2), _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2);
            float2 _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2;
            Unity_Add_float2(_Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2, float2(-1, -1), _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2);
            float _Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float = _DetailNormalScale;
            float2 _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2, (_Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float.xx), _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2);
            float _Split_492de324af96c482b50573c79f9fb6a0_R_1_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[0];
            float _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[1];
            float _Split_492de324af96c482b50573c79f9fb6a0_B_3_Float = 0;
            float _Split_492de324af96c482b50573c79f9fb6a0_A_4_Float = 0;
            float _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float;
            Unity_DotProduct_float2(_Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float);
            float _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float;
            Unity_Saturate_float(_DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float, _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float);
            float _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float;
            Unity_OneMinus_float(_Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float, _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float);
            float _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float;
            Unity_SquareRoot_float(_OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            float3 _Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3 = float3(_Split_492de324af96c482b50573c79f9fb6a0_R_1_Float, _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            UnityTexture2D _Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseNormalMap);
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv0 = IN.uv0;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv2 = IN.uv2;
            float4 _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4);
            float _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float = _BaseNormalScale;
            float3 _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4.xyz), _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3);
            float3 _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3;
            Unity_NormalBlend_float(_Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3, _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3);
            UnityTexture2D _Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverNormalMap);
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv0 = IN.uv0;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv2 = IN.uv2;
            float4 _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4);
            float _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float = _CoverNormalBlendHardness;
            float3 _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3);
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_R_1_Float = IN.WorldSpaceNormal[0];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float = IN.WorldSpaceNormal[1];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_B_3_Float = IN.WorldSpaceNormal[2];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_A_4_Float = 0;
            float _Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float = _Cover_Amount;
            float _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float = _Cover_Amount_Grow_Speed;
            float _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float;
            Unity_Subtract_float(4, _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float);
            float _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float;
            Unity_Divide_float(_Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float);
            float _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float;
            Unity_Absolute_float(_Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float, _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float);
            float _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float;
            Unity_Power_float(_Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float);
            float _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float;
            Unity_Clamp_float(_Power_c11fc5724f830485a9c4df249a854571_Out_2_Float, 0, 2, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float);
            float _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float;
            Unity_Multiply_float_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float);
            float _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float;
            Unity_Saturate_float(_Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float, _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float);
            float _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float;
            Unity_Clamp_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, 0, 0.9999, _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float);
            float _Property_89633a46f34e1f8996557a9178d78478_Out_0_Float = _Cover_Max_Angle;
            float _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float;
            Unity_Divide_float(_Property_89633a46f34e1f8996557a9178d78478_Out_0_Float, 45, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float);
            float _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float;
            Unity_OneMinus_float(_Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float);
            float _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float;
            Unity_Subtract_float(_Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float, _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float);
            float _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float;
            Unity_Clamp_float(_Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float, 0, 2, _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
            float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
            Unity_Divide_float(1, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float);
            float _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_67dcc607b6da848097d3412324311616_Out_3_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float, _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float);
            float _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float;
            Unity_Absolute_float(_Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float, _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float);
            float _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float = _CoverHardness;
            float _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float;
            Unity_Power_float(_Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float);
            float _Property_f8753bb05d835089bda460d144f93c48_Out_0_Float = _Cover_Min_Height;
            float _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float;
            Unity_OneMinus_float(_Property_f8753bb05d835089bda460d144f93c48_Out_0_Float, _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float);
            float _Split_c66e04f85a2a7f87884040056599e65d_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
            float _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
            float _Split_c66e04f85a2a7f87884040056599e65d_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
            float _Split_c66e04f85a2a7f87884040056599e65d_A_4_Float = 0;
            float _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float;
            Unity_Add_float(_OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float, _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float);
            float _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, 1, _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
            float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
            Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, 0, 1, _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float);
            float _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float = _Cover_Min_Height_Blending;
            float _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float, _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float);
            float _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float;
            Unity_Divide_float(_Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float);
            float _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float;
            Unity_OneMinus_float(_Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float, _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float);
            float _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float;
            Unity_Add_float(_OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float, -0.5, _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
            float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
            Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, 0, 1, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float);
            float _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float;
            Unity_Add_float(_Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float, _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float);
            float _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float;
            Unity_Clamp_float(_Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float, 0, 1, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float);
            float _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float;
            Unity_Multiply_float_float(_Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float);
            float _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float;
            Unity_Multiply_float_float(_Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float);
            float3 _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3, (_Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float.xxx), _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3);
            float3 _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3;
            {
                float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
                _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3 = TransformTangentToWorldDir(_Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3.xyz, tangentTransform, false).xyz;
            }
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_R_1_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[0];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[1];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_B_3_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[2];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_A_4_Float = 0;
            float _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float;
            Unity_Multiply_float_float(_Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float);
            float _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float);
            float _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float);
            float _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float, _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float);
            UnityTexture2D _Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_36e64648ad8a6a849bc794b8693519da;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv0 = IN.uv0;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv2 = IN.uv2;
            float4 _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_36e64648ad8a6a849bc794b8693519da, _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4);
            float _Split_198ec92f3e753d8a9ad50db7d6527324_R_1_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[0];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[1];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[2];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[3];
            float _Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float = _CoverHeightMapMin;
            float _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float = _CoverHeightMapMax;
            float2 _Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2 = float2(_Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float, _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float);
            float _Property_277f22c36084858981418fa95133a562_Out_0_Float = _CoverHeightMapOffset;
            float2 _Add_53997153562831859cc7b582f3068877_Out_2_Vector2;
            Unity_Add_float2(_Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2, (_Property_277f22c36084858981418fa95133a562_Out_0_Float.xx), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2);
            float _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float, float2 (0, 1), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float);
            float _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float, _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float);
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float = IN.VertexColor[0];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float = IN.VertexColor[1];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_B_3_Float = IN.VertexColor[2];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_A_4_Float = IN.VertexColor[3];
            float _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float, _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float, _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float);
            float _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float;
            Unity_Saturate_float(_Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float);
            float _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float);
            float _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float;
            Unity_Branch_float(_Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float);
            float3 _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3;
            Unity_Lerp_float3(_BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3, (_Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4.xyz), (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxx), _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3);
            float4 _Property_e687576468764d85b6b46dca96d8a8e3_Out_0_Vector4 = _WetColor;
            float3 _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3;
            Unity_Multiply_float3_float3((_Property_e687576468764d85b6b46dca96d8a8e3_Out_0_Vector4.xyz), _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3, _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3);
            float _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float;
            Unity_OneMinus_float(_Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float);
            float3 _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
            Unity_Lerp_float3(_Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3, _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3, (_OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float.xxx), _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3);
            UnityTexture2D _Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv0 = IN.uv0;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv2 = IN.uv2;
            float4 _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4);
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_R_1_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[0];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[1];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_B_3_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[2];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[3];
            float _Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float = _BaseAORemapMin;
            float _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float = _BaseAORemapMax;
            float2 _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2 = float2(_Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float, _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float);
            float _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float, float2 (0, 1), _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2, _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float);
            float _Property_e353baf414594b8882fb914562e81165_Out_0_Float = _BaseSmoothnessRemapMin;
            float _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float = _BaseSmoothnessRemapMax;
            float2 _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2 = float2(_Property_e353baf414594b8882fb914562e81165_Out_0_Float, _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float);
            float _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float, float2 (0, 1), _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2, _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float);
            float _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float, 2, _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float);
            float _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float;
            Unity_Add_float(_Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float, -1, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float);
            float _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float = _DetailSmoothnessScale;
            float _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float;
            Unity_Multiply_float_float(_Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float, _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float);
            float _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float;
            Unity_Saturate_float(_Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float, _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float);
            float _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float;
            Unity_Absolute_float(_Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float);
            Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da;
            float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float;
            SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(_Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float);
            float _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float;
            Unity_Saturate_float(_BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float2 _Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2 = float2(_Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float _Property_5e08cfb127183a8993376f9087501eee_Out_0_Float = _CoverAORemapMin;
            float _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float = _CoverAORemapMax;
            float2 _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2 = float2(_Property_5e08cfb127183a8993376f9087501eee_Out_0_Float, _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float);
            float _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float, float2 (0, 1), _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2, _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float);
            float _Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float = _CoverSmoothnessRemapMin;
            float _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float = _CoverSmoothnessRemapMax;
            float2 _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2 = float2(_Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float, _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float);
            float _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float, float2 (0, 1), _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2 = float2(_Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2;
            Unity_Lerp_float2(_Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2, _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xx), _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2);
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_R_1_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[0];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[1];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_B_3_Float = 0;
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_A_4_Float = 0;
            float _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float = _WetSmoothness;
            float _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            Unity_Lerp_float(_Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float, _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float, _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float);
            float _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float = _CoverNormalScale;
            float3 _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3);
            float3 _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxx), _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3);
            UnityTexture2D _Property_f617479b11216b84b89956263f8d3c08_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_SpecularColorMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.uv0 = IN.uv0;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.uv2 = IN.uv2;
            float4 _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_f617479b11216b84b89956263f8d3c08_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d, _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4);
            float4 _Property_112303b9c27a1284b20f0a5c49fb436a_Out_0_Vector4 = _SpecularColor;
            float4 _Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4, _Property_112303b9c27a1284b20f0a5c49fb436a_Out_0_Vector4, _Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4);
            UnityTexture2D _Property_0c768f7d1094a8878d837f25970dbd49_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverSpecularColorMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_4b88db16993b7d84a6c9e021b5992a38;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.uv0 = IN.uv0;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.uv2 = IN.uv2;
            float4 _PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_0c768f7d1094a8878d837f25970dbd49_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_4b88db16993b7d84a6c9e021b5992a38, _PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4);
            float4 _Property_51d3c44a7110108d9e8c9a3acf54125f_Out_0_Vector4 = _CoverSpecularColor;
            float4 _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4, _Property_51d3c44a7110108d9e8c9a3acf54125f_Out_0_Vector4, _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4);
            float4 _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4;
            Unity_Lerp_float4(_Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4, _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxxx), _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4);
            surface.BaseColor = _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
            surface.Emission = float3(0, 0, 0);
            surface.Alpha = 1;
            surface.BentNormal = IN.TangentSpaceNormal;
            surface.Smoothness = _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            surface.Occlusion = _Split_beb57fcf05cbb6809f536625bac5fcbc_R_1_Float;
            surface.NormalTS = _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            surface.Specular = (_Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4.xyz);
            return surface;
        }
        
            // --------------------------------------------------
            // Build Graph Inputs
            #ifdef HAVE_VFX_MODIFICATION
            #define VFX_SRP_ATTRIBUTES AttributesMesh
            #define VaryingsMeshType VaryingsMeshToPS
            #define VFX_SRP_VARYINGS VaryingsMeshType
            #define VFX_SRP_SURFACE_INPUTS FragInputs
            #endif
            
        VertexDescriptionInputs AttributesMeshToVertexDescriptionInputs(AttributesMesh input)
        {
            VertexDescriptionInputs output;
            ZERO_INITIALIZE(VertexDescriptionInputs, output);
        
            output.ObjectSpaceNormal =                          input.normalOS;
            output.ObjectSpaceTangent =                         input.tangentOS.xyz;
            output.ObjectSpacePosition =                        input.positionOS;
        
            return output;
        }
        
        VertexDescription GetVertexDescription(AttributesMesh input, float3 timeParameters
        #ifdef HAVE_VFX_MODIFICATION
            , AttributesElement element
        #endif
        )
        {
            // build graph inputs
            VertexDescriptionInputs vertexDescriptionInputs = AttributesMeshToVertexDescriptionInputs(input);
            // Override time parameters with used one (This is required to correctly handle motion vectors for vertex animation based on time)
        
            // evaluate vertex graph
        #ifdef HAVE_VFX_MODIFICATION
            GraphProperties properties;
            ZERO_INITIALIZE(GraphProperties, properties);
        
            // Fetch the vertex graph properties for the particle instance.
            GetElementVertexProperties(element, properties);
        
            VertexDescription vertexDescription = VertexDescriptionFunction(vertexDescriptionInputs, properties);
        #else
            VertexDescription vertexDescription = VertexDescriptionFunction(vertexDescriptionInputs);
        #endif
            return vertexDescription;
        
        }
        
        AttributesMesh ApplyMeshModification(AttributesMesh input, float3 timeParameters
        #ifdef USE_CUSTOMINTERP_SUBSTRUCT
            #ifdef TESSELLATION_ON
            , inout VaryingsMeshToDS varyings
            #else
            , inout VaryingsMeshToPS varyings
            #endif
        #endif
        #ifdef HAVE_VFX_MODIFICATION
                , AttributesElement element
        #endif
            )
        {
            VertexDescription vertexDescription = GetVertexDescription(input, timeParameters
        #ifdef HAVE_VFX_MODIFICATION
                , element
        #endif
            );
        
            // copy graph output to the results
            input.positionOS = vertexDescription.Position;
            input.normalOS = vertexDescription.Normal;
            input.tangentOS.xyz = vertexDescription.Tangent;
        
            
        
            return input;
        }
        
        #if defined(_ADD_CUSTOM_VELOCITY) // For shader graph custom velocity
        // Return precomputed Velocity in object space
        float3 GetCustomVelocity(AttributesMesh input
        #ifdef HAVE_VFX_MODIFICATION
            , AttributesElement element
        #endif
        )
        {
            VertexDescription vertexDescription = GetVertexDescription(input, _TimeParameters.xyz
        #ifdef HAVE_VFX_MODIFICATION
                , element
        #endif
            );
            return vertexDescription.CustomVelocity;
        }
        #endif
        
        FragInputs BuildFragInputs(VaryingsMeshToPS input)
        {
            FragInputs output;
            ZERO_INITIALIZE(FragInputs, output);
        
            // Init to some default value to make the computer quiet (else it output 'divide by zero' warning even if value is not used).
            // TODO: this is a really poor workaround, but the variable is used in a bunch of places
            // to compute normals which are then passed on elsewhere to compute other values...
            output.tangentToWorld = k_identity3x3;
            output.positionSS = input.positionCS;       // input.positionCS is SV_Position
        
            output.positionRWS =                input.positionRWS;
            output.tangentToWorld =             BuildTangentToWorld(input.tangentWS, input.normalWS);
            output.texCoord0 =                  input.texCoord0;
            output.texCoord2 =                  input.texCoord2;
            output.color =                      input.color;
        
        #ifdef HAVE_VFX_MODIFICATION
            // FragInputs from VFX come from two places: Interpolator or CBuffer.
        #if VFX_USE_GRAPH_VALUES
            uint instanceActiveIndex = asuint(UNITY_ACCESS_INSTANCED_PROP(PerInstance, _InstanceActiveIndex));
            /* WARNING: $splice Could not find named fragment 'VFXLoadGraphValues' */
        #endif
        
            /* WARNING: $splice Could not find named fragment 'VFXSetFragInputs' */
        
        #endif
        
            // splice point to copy custom interpolator fields from varyings to frag inputs
            
        
            return output;
        }
        
        // existing HDRP code uses the combined function to go directly from packed to frag inputs
        FragInputs UnpackVaryingsMeshToFragInputs(PackedVaryingsMeshToPS input)
        {
            UNITY_SETUP_INSTANCE_ID(input);
        #if defined(HAVE_VFX_MODIFICATION) && defined(UNITY_INSTANCING_ENABLED)
            unity_InstanceID = input.instanceID;
        #endif
            VaryingsMeshToPS unpacked = UnpackVaryingsMeshToPS(input);
            return BuildFragInputs(unpacked);
        }
            SurfaceDescriptionInputs FragInputsToSurfaceDescriptionInputs(FragInputs input, float3 viewWS)
        {
            SurfaceDescriptionInputs output;
            ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
        
            output.WorldSpaceNormal =                           normalize(input.tangentToWorld[2].xyz);
            #if defined(SHADER_STAGE_RAY_TRACING)
            #else
            #endif
            output.TangentSpaceNormal =                         float3(0.0f, 0.0f, 1.0f);
            output.WorldSpaceTangent =                          input.tangentToWorld[0].xyz;
            output.WorldSpaceBiTangent =                        input.tangentToWorld[1].xyz;
            output.AbsoluteWorldSpacePosition =                 GetAbsolutePositionWS(input.positionRWS);
        
        #if UNITY_UV_STARTS_AT_TOP
        #else
        #endif
        
        
            output.uv0 =                                        input.texCoord0;
            output.uv2 =                                        input.texCoord2;
            output.VertexColor =                                input.color;
        
            // splice point to copy frag inputs custom interpolator pack into the SDI
            
        
            return output;
        }
        
            // --------------------------------------------------
            // Build Surface Data (Specific Material)
        
        void ApplyDecalToSurfaceDataNoNormal(DecalSurfaceData decalSurfaceData, inout SurfaceData surfaceData);
        
        void ApplyDecalAndGetNormal(FragInputs fragInputs, PositionInputs posInput, SurfaceDescription surfaceDescription,
            inout SurfaceData surfaceData)
        {
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
        #ifdef DECAL_NORMAL_BLENDING
            // SG nodes don't ouptut surface gradients, so if decals require surf grad blending, we have to convert
            // the normal to gradient before applying the decal. We then have to resolve the gradient back to world space
            float3 normalTS;
        
            normalTS = SurfaceGradientFromTangentSpaceNormalAndFromTBN(surfaceDescription.NormalTS,
            fragInputs.tangentToWorld[0], fragInputs.tangentToWorld[1]);
        
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, fragInputs.tangentToWorld[2], normalTS);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        
            GetNormalWS_SG(fragInputs, normalTS, surfaceData.normalWS, doubleSidedConstants);
        #else
            // normal delivered to master node
            GetNormalWS(fragInputs, surfaceDescription.NormalTS, surfaceData.normalWS, doubleSidedConstants);
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                // Both uses and modifies 'surfaceData.normalWS'.
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, surfaceData.normalWS.xyz);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        #endif
        }
        void BuildSurfaceData(FragInputs fragInputs, inout SurfaceDescription surfaceDescription, float3 V, PositionInputs posInput, out SurfaceData surfaceData, out float3 bentNormalWS)
        {
            ZERO_INITIALIZE(SurfaceData, surfaceData);
        
            // specularOcclusion need to be init ahead of decal to quiet the compiler that modify the SurfaceData struct
            // however specularOcclusion can come from the graph, so need to be init here so it can be override.
            surfaceData.specularOcclusion = 1.0;
        
            surfaceData.baseColor =                 surfaceDescription.BaseColor;
            surfaceData.perceptualSmoothness =      surfaceDescription.Smoothness;
            surfaceData.ambientOcclusion =          surfaceDescription.Occlusion;
            surfaceData.specularColor =             surfaceDescription.Specular;
        
            #if defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE) || defined(_REFRACTION_THIN)
                if (_EnableSSRefraction)
                {
        
                    surfaceData.transmittanceMask = (1.0 - surfaceDescription.Alpha);
                    surfaceDescription.Alpha = 1.0;
                }
                else
                {
                    surfaceData.ior = 1.0;
                    surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                    surfaceData.atDistance = 1.0;
                    surfaceData.transmittanceMask = 0.0;
                    surfaceDescription.Alpha = 1.0;
                }
            #else
                surfaceData.ior = 1.0;
                surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                surfaceData.atDistance = 1.0;
                surfaceData.transmittanceMask = 0.0;
            #endif
        
            // These static material feature allow compile time optimization
            surfaceData.materialFeatures = MATERIALFEATUREFLAGS_LIT_STANDARD;
            #ifdef _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SUBSURFACE_SCATTERING;
            #endif
        
            #ifdef _MATERIAL_FEATURE_TRANSMISSION
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
            #endif
        
            #ifdef _MATERIAL_FEATURE_ANISOTROPY
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_ANISOTROPY;
        
                // Initialize the normal to something non-zero to avoid a div-zero warning for anisotropy.
                surfaceData.normalWS = float3(0, 1, 0);
            #endif
        
            #ifdef _MATERIAL_FEATURE_IRIDESCENCE
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_IRIDESCENCE;
            #endif
        
            #ifdef _MATERIAL_FEATURE_SPECULAR_COLOR
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SPECULAR_COLOR;
            #endif
        
            #ifdef _MATERIAL_FEATURE_CLEAR_COAT
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_CLEAR_COAT;
            #endif
        
            #if defined (_MATERIAL_FEATURE_SPECULAR_COLOR) && defined (_ENERGY_CONSERVING_SPECULAR)
                // Require to have setup baseColor
                // Reproduce the energy conservation done in legacy Unity. Not ideal but better for compatibility and users can unchek it
                surfaceData.baseColor *= (1.0 - Max3(surfaceData.specularColor.r, surfaceData.specularColor.g, surfaceData.specularColor.b));
            #endif
        
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
            ApplyDecalAndGetNormal(fragInputs, posInput, surfaceDescription, surfaceData);
        
            surfaceData.geomNormalWS = fragInputs.tangentToWorld[2];
        
            surfaceData.tangentWS = normalize(fragInputs.tangentToWorld[0].xyz);    // The tangent is not normalize in tangentToWorld for mikkt. TODO: Check if it expected that we normalize with Morten. Tag: SURFACE_GRADIENT
        
        
            bentNormalWS = surfaceData.normalWS;
        
            surfaceData.tangentWS = Orthonormalize(surfaceData.tangentWS, surfaceData.normalWS);
        
            #ifdef DEBUG_DISPLAY
                if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
                {
                    // TODO: need to update mip info
                    surfaceData.metallic = 0;
                }
        
                // We need to call ApplyDebugToSurfaceData after filling the surfarcedata and before filling builtinData
                // as it can modify attribute use for static lighting
                ApplyDebugToSurfaceData(fragInputs.tangentToWorld, surfaceData);
            #endif
        
            // By default we use the ambient occlusion with Tri-ace trick (apply outside) for specular occlusion.
            // If user provide bent normal then we process a better term
            #if defined(_SPECULAR_OCCLUSION_CUSTOM)
                // Just use the value passed through via the slot (not active otherwise)
            #elif defined(_SPECULAR_OCCLUSION_FROM_AO_BENT_NORMAL)
                // If we have bent normal and ambient occlusion, process a specular occlusion
                surfaceData.specularOcclusion = GetSpecularOcclusionFromBentAO(V, bentNormalWS, surfaceData.normalWS, surfaceData.ambientOcclusion, PerceptualSmoothnessToPerceptualRoughness(surfaceData.perceptualSmoothness));
            #elif defined(_AMBIENT_OCCLUSION) && defined(_SPECULAR_OCCLUSION_FROM_AO)
                surfaceData.specularOcclusion = GetSpecularOcclusionFromAmbientOcclusion(ClampNdotV(dot(surfaceData.normalWS, V)), surfaceData.ambientOcclusion, PerceptualSmoothnessToRoughness(surfaceData.perceptualSmoothness));
            #endif
        
            #if defined(_ENABLE_GEOMETRIC_SPECULAR_AA) && !defined(SHADER_STAGE_RAY_TRACING)
                surfaceData.perceptualSmoothness = GeometricNormalFiltering(surfaceData.perceptualSmoothness, fragInputs.tangentToWorld[2], surfaceDescription.SpecularAAScreenSpaceVariance, surfaceDescription.SpecularAAThreshold);
            #endif
        }
        
            // --------------------------------------------------
            // Get Surface And BuiltinData
        
            void GetSurfaceAndBuiltinData(FragInputs fragInputs, float3 V, inout PositionInputs posInput, out SurfaceData surfaceData, out BuiltinData builtinData RAY_TRACING_OPTIONAL_PARAMETERS)
            {
                // Don't dither if displaced tessellation (we're fading out the displacement instead to match the next LOD)
                #if !defined(SHADER_STAGE_RAY_TRACING) && !defined(_TESSELLATION_DISPLACEMENT)
                #ifdef LOD_FADE_CROSSFADE // enable dithering LOD transition if user select CrossFade transition in LOD group
                LODDitheringTransition(ComputeFadeMaskSeed(V, posInput.positionSS), unity_LODFade.x);
                #endif
                #endif
        
                #ifndef SHADER_UNLIT
                #ifdef _DOUBLESIDED_ON
                    float3 doubleSidedConstants = _DoubleSidedConstants.xyz;
                #else
                    float3 doubleSidedConstants = float3(1.0, 1.0, 1.0);
                #endif
        
                ApplyDoubleSidedFlipOrMirror(fragInputs, doubleSidedConstants); // Apply double sided flip on the vertex normal
                #endif // SHADER_UNLIT
        
                SurfaceDescriptionInputs surfaceDescriptionInputs = FragInputsToSurfaceDescriptionInputs(fragInputs, V);
        
                #if defined(HAVE_VFX_MODIFICATION)
                GraphProperties properties;
                ZERO_INITIALIZE(GraphProperties, properties);
        
                GetElementPixelProperties(fragInputs, properties);
        
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs, properties);
                #else
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs);
                #endif
        
                // Perform alpha test very early to save performance (a killed pixel will not sample textures)
                // TODO: split graph evaluation to grab just alpha dependencies first? tricky..
                #ifdef _ALPHATEST_ON
                    float alphaCutoff = surfaceDescription.AlphaClipThreshold;
                    #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
                    // The TransparentDepthPrepass is also used with SSR transparent.
                    // If an artists enable transaprent SSR but not the TransparentDepthPrepass itself, then we use AlphaClipThreshold
                    // otherwise if TransparentDepthPrepass is enabled we use AlphaClipThresholdDepthPrepass
                    #elif SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_POSTPASS
                    // DepthPostpass always use its own alpha threshold
                    alphaCutoff = surfaceDescription.AlphaClipThresholdDepthPostpass;
                    #elif (SHADERPASS == SHADERPASS_SHADOWS) || (SHADERPASS == SHADERPASS_RAYTRACING_VISIBILITY)
                    // If use shadow threshold isn't enable we don't allow any test
                    #endif
        
                    GENERIC_ALPHA_TEST(surfaceDescription.Alpha, alphaCutoff);
                #endif
        
                #if !defined(SHADER_STAGE_RAY_TRACING) && _DEPTHOFFSET_ON
                ApplyDepthOffsetPositionInput(V, surfaceDescription.DepthOffset, GetViewForwardDir(), GetWorldToHClipMatrix(), posInput);
                #endif
        
                #ifndef SHADER_UNLIT
                float3 bentNormalWS;
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData, bentNormalWS);
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD1
                    float4 lightmapTexCoord1 = fragInputs.texCoord1;
                #else
                    float4 lightmapTexCoord1 = float4(0,0,0,0);
                #endif
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD2
                    float4 lightmapTexCoord2 = fragInputs.texCoord2;
                #else
                    float4 lightmapTexCoord2 = float4(0,0,0,0);
                #endif
        
                // Builtin Data
                // For back lighting we use the oposite vertex normal
                InitBuiltinData(posInput, surfaceDescription.Alpha, bentNormalWS, -fragInputs.tangentToWorld[2], lightmapTexCoord1, lightmapTexCoord2, builtinData);
        
                #else
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData);
        
                ZERO_BUILTIN_INITIALIZE(builtinData); // No call to InitBuiltinData as we don't have any lighting
                builtinData.opacity = surfaceDescription.Alpha;
        
                #if defined(DEBUG_DISPLAY)
                    // Light Layers are currently not used for the Unlit shader (because it is not lit)
                    // But Unlit objects do cast shadows according to their rendering layer mask, which is what we want to
                    // display in the light layers visualization mode, therefore we need the renderingLayers
                    builtinData.renderingLayers = GetMeshRenderingLightLayer();
                #endif
        
                #endif // SHADER_UNLIT
        
                #ifdef _ALPHATEST_ON
                    // Used for sharpening by alpha to mask - Alpha to covertage is only used with depth only and forward pass (no shadow pass, no transparent pass)
                    builtinData.alphaClipTreshold = alphaCutoff;
                #endif
        
                // override sampleBakedGI - not used by Unlit
        
                builtinData.emissiveColor = surfaceDescription.Emission;
        
                // Note this will not fully work on transparent surfaces (can check with _SURFACE_TYPE_TRANSPARENT define)
                // We will always overwrite vt feeback with the nearest. So behind transparent surfaces vt will not be resolved
                // This is a limitation of the current MRT approach.
                #ifdef UNITY_VIRTUAL_TEXTURING
                #endif
        
                #if _DEPTHOFFSET_ON
                builtinData.depthOffset = surfaceDescription.DepthOffset;
                #endif
        
                // TODO: We should generate distortion / distortionBlur for non distortion pass
                #if (SHADERPASS == SHADERPASS_DISTORTION)
                builtinData.distortion = surfaceDescription.Distortion;
                builtinData.distortionBlur = surfaceDescription.DistortionBlur;
                #endif
        
                #ifndef SHADER_UNLIT
                // PostInitBuiltinData call ApplyDebugToBuiltinData
                PostInitBuiltinData(V, posInput, surfaceData, builtinData);
                #else
                ApplyDebugToBuiltinData(builtinData);
                #endif
        
                RAY_TRACING_OPTIONAL_ALPHA_TEST_PASS
            }
        
            // --------------------------------------------------
            // Main
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassMotionVectors.hlsl"
        
            // --------------------------------------------------
            // Visual Effect Vertex Invocations
        
        	#ifdef HAVE_VFX_MODIFICATION
        	#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
        	#endif
        
            ENDHLSL
        }
        Pass
        {
            Name "TransparentDepthPrepass"
            Tags
            {
                "LightMode" = "TransparentDepthPrepass"
            }
        
            // Render State
            Cull [_CullMode]
        Blend One Zero
        ZWrite On
        Stencil
        {
        WriteMask [_StencilWriteMaskDepth]
        Ref [_StencilRefDepth]
        CompFront Always
        PassFront Replace
        CompBack Always
        PassBack Replace
        }
        
            // Debug
            // <None>
        
            // --------------------------------------------------
            // Pass
        
            HLSLPROGRAM
        
            // Pragmas
            #pragma multi_compile _ DOTS_INSTANCING_ON
        #pragma instancing_options renderinglayer
        #pragma target 4.5
        #pragma vertex Vert
        #pragma fragment Frag
        #pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal switch
        #pragma multi_compile_instancing
        
            // Keywords
            #pragma shader_feature _ _SURFACE_TYPE_TRANSPARENT
        #pragma shader_feature_local _ _DOUBLESIDED_ON
        #pragma shader_feature_local _ _ADD_PRECOMPUTED_VELOCITY
        #pragma shader_feature_local _ _TRANSPARENT_WRITES_MOTION_VEC
        #pragma shader_feature_local_fragment _ _ENABLE_FOG_ON_TRANSPARENT
        #pragma multi_compile _ LOD_FADE_CROSSFADE
        #pragma shader_feature_local_fragment _ _DISABLE_DECALS
        #pragma shader_feature_local_raytracing _ _DISABLE_DECALS
        #pragma shader_feature_local_fragment _ _DISABLE_SSR
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR
        #pragma shader_feature_local_fragment _ _DISABLE_SSR_TRANSPARENT
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR_TRANSPARENT
        #pragma shader_feature_local _ _REFRACTION_PLANE _REFRACTION_SPHERE _REFRACTION_THIN
            // GraphKeywords: <None>
        
            // For custom interpolators to inject a substruct definition before FragInputs definition,
            // allowing for FragInputs to capture CI's intended for ShaderGraph's SDI.
            struct CustomInterpolators
        {
        };
        #define USE_CUSTOMINTERP_SUBSTRUCT
        
        
        
            // TODO: Merge FragInputsVFX substruct with CustomInterpolators.
        	#ifdef HAVE_VFX_MODIFICATION
        	struct FragInputsVFX
            {
                /* WARNING: $splice Could not find named fragment 'FragInputsVFX' */
            };
            #endif
        
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/GeometricTools.hlsl" // Required by Tessellation.hlsl
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Tessellation.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl" // Required to be include before we include properties as it define DECLARE_STACK_CB
            // Always include Shader Graph version
            // Always include last to avoid double macros
            #include "Packages/com.unity.shadergraph/ShaderGraphLibrary/Functions.hlsl" // Need to be here for Gradient struct definition
        
            // --------------------------------------------------
            // Defines
        
            // Attribute
            #define ATTRIBUTES_NEED_NORMAL
            #define ATTRIBUTES_NEED_TANGENT
            #define ATTRIBUTES_NEED_TEXCOORD0
            #define ATTRIBUTES_NEED_TEXCOORD2
            #define ATTRIBUTES_NEED_COLOR
            #define VARYINGS_NEED_POSITION_WS
            #define VARYINGS_NEED_TANGENT_TO_WORLD
            #define VARYINGS_NEED_TEXCOORD0
            #define VARYINGS_NEED_TEXCOORD2
            #define VARYINGS_NEED_COLOR
        
            #define HAVE_MESH_MODIFICATION
        
            //Strip down the FragInputs.hlsl (on graphics), so we can only optimize the interpolators we use.
            //if by accident something requests contents of FragInputs.hlsl, it will be caught as a compiler error
            //Frag inputs stripping is only enabled when FRAG_INPUTS_ENABLE_STRIPPING is set
            #if !defined(SHADER_STAGE_RAY_TRACING) && SHADERPASS != SHADERPASS_RAYTRACING_GBUFFER && SHADERPASS != SHADERPASS_FULL_SCREEN_DEBUG
            #define FRAG_INPUTS_ENABLE_STRIPPING
            #endif
            #define FRAG_INPUTS_USE_TEXCOORD0
            #define FRAG_INPUTS_USE_TEXCOORD2
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/FragInputs.hlsl"
        
        
        
            #define SHADERPASS SHADERPASS_TRANSPARENT_DEPTH_PREPASS
        #define RAYTRACING_SHADER_GRAPH_DEFAULT
        
        
            // Following two define are a workaround introduce in 10.1.x for RaytracingQualityNode
            // The ShaderGraph don't support correctly migration of this node as it serialize all the node data
            // in the json file making it impossible to uprgrade. Until we get a fix, we do a workaround here
            // to still allow us to rename the field and keyword of this node without breaking existing code.
            #ifdef RAYTRACING_SHADER_GRAPH_DEFAULT
            #define RAYTRACING_SHADER_GRAPH_HIGH
            #endif
        
            #ifdef RAYTRACING_SHADER_GRAPH_RAYTRACED
            #define RAYTRACING_SHADER_GRAPH_LOW
            #endif
            // end
        
            #ifndef SHADER_UNLIT
            // We need isFrontFace when using double sided - it is not required for unlit as in case of unlit double sided only drive the cullmode
            // VARYINGS_NEED_CULLFACE can be define by VaryingsMeshToPS.FaceSign input if a IsFrontFace Node is included in the shader graph.
            #if defined(_DOUBLESIDED_ON) && !defined(VARYINGS_NEED_CULLFACE)
                #define VARYINGS_NEED_CULLFACE
            #endif
            #endif
        
            // Specific Material Define
        #define _MATERIAL_FEATURE_SPECULAR_COLOR 1
        #define _SPECULAR_OCCLUSION_FROM_AO 1
        #define _ENERGY_CONSERVING_SPECULAR 1
        
        // If we use subsurface scattering, enable output split lighting (for forward pass)
        #if defined(_MATERIAL_FEATURE_SUBSURFACE_SCATTERING) && !defined(_SURFACE_TYPE_TRANSPARENT)
            #define OUTPUT_SPLIT_LIGHTING
        #endif
        
        // This shader support recursive rendering for raytracing
        #define HAVE_RECURSIVE_RENDERING
        
        // In Path Tracing, For all single-sided, refractive materials, we want to force a thin refraction model
        #if (SHADERPASS == SHADERPASS_PATH_TRACING) && !defined(_DOUBLESIDED_ON) && (defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE))
            #undef  _REFRACTION_PLANE
            #undef  _REFRACTION_SPHERE
            #define _REFRACTION_THIN
        #endif
            // Caution: we can use the define SHADER_UNLIT onlit after the above Material include as it is the Unlit template who define it
        
            // To handle SSR on transparent correctly with a possibility to enable/disable it per framesettings
            // we should have a code like this:
            // if !defined(_DISABLE_SSR_TRANSPARENT)
            // pragma multi_compile _ WRITE_NORMAL_BUFFER
            // endif
            // i.e we enable the multicompile only if we can receive SSR or not, and then C# code drive
            // it based on if SSR transparent in frame settings and not (and stripper can strip it).
            // this is currently not possible with our current preprocessor as _DISABLE_SSR_TRANSPARENT is a keyword not a define
            // so instead we used this and chose to pay the extra cost of normal write even if SSR transaprent is disabled.
            // Ideally the shader graph generator should handle it but condition below can't be handle correctly for now.
            #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
            #if !defined(_DISABLE_SSR_TRANSPARENT) && !defined(SHADER_UNLIT)
                #define WRITE_NORMAL_BUFFER
            #endif
            #endif
        
            #ifndef DEBUG_DISPLAY
                // In case of opaque we don't want to perform the alpha test, it is done in depth prepass and we use depth equal for ztest (setup from UI)
                // Don't do it with debug display mode as it is possible there is no depth prepass in this case
                #if !defined(_SURFACE_TYPE_TRANSPARENT)
                    #if SHADERPASS == SHADERPASS_FORWARD
                    #define SHADERPASS_FORWARD_BYPASS_ALPHA_TEST
                    #elif SHADERPASS == SHADERPASS_GBUFFER
                    #define SHADERPASS_GBUFFER_BYPASS_ALPHA_TEST
                    #endif
                #endif
            #endif
        
            // Define _DEFERRED_CAPABLE_MATERIAL for shader capable to run in deferred pass
            #if defined(SHADER_LIT) && !defined(_SURFACE_TYPE_TRANSPARENT)
                #define _DEFERRED_CAPABLE_MATERIAL
            #endif
        
            // Translate transparent motion vector define
            #if defined(_TRANSPARENT_WRITES_MOTION_VEC) && defined(_SURFACE_TYPE_TRANSPARENT)
                #define _WRITE_TRANSPARENT_MOTION_VECTOR
            #endif
        
            // -- Graph Properties
            CBUFFER_START(UnityPerMaterial)
        float4 _BaseColor;
        float4 _BaseColorMap_TexelSize;
        float _BaseUsePlanarUV;
        float4 _BaseTilingOffset;
        float4 _SpecularColor;
        float4 _SpecularColorMap_TexelSize;
        float4 _BaseNormalMap_TexelSize;
        float _BaseNormalScale;
        float4 _BaseMaskMap_TexelSize;
        float _BaseAORemapMin;
        float _BaseAORemapMax;
        float _BaseSmoothnessRemapMin;
        float _BaseSmoothnessRemapMax;
        float _USEDYNAMICCOVERTSTATICMASKF;
        float4 _CoverMaskA_TexelSize;
        float _CoverMaskPower;
        float _Cover_Amount;
        float _Cover_Amount_Grow_Speed;
        float _Cover_Max_Angle;
        float _Cover_Min_Height;
        float _Cover_Min_Height_Blending;
        float4 _CoverBaseColor;
        float4 _CoverBaseColorMap_TexelSize;
        float _CoverUsePlanarUV;
        float4 _CoverTilingOffset;
        float4 _CoverSpecularColor;
        float4 _CoverSpecularColorMap_TexelSize;
        float4 _CoverNormalMap_TexelSize;
        float _CoverNormalScale;
        float _CoverNormalBlendHardness;
        float _CoverHardness;
        float _CoverHeightMapMin;
        float _CoverHeightMapMax;
        float _CoverHeightMapOffset;
        float4 _CoverMaskMap_TexelSize;
        float _CoverAORemapMin;
        float _CoverAORemapMax;
        float _CoverSmoothnessRemapMin;
        float _CoverSmoothnessRemapMax;
        float4 _DetailMap_TexelSize;
        float4 _DetailTilingOffset;
        float _DetailAlbedoScale;
        float _DetailNormalScale;
        float _DetailSmoothnessScale;
        float4 _WetColor;
        float _WetSmoothness;
        float4 _EmissionColor;
        float _UseShadowThreshold;
        float4 _DoubleSidedConstants;
        float _BlendMode;
        float _EnableBlendModePreserveSpecularLighting;
        float _RayTracing;
        float _RefractionModel;
        CBUFFER_END
        
        
        // Object and Global properties
        SAMPLER(SamplerState_Linear_Repeat);
        SAMPLER(SamplerState_Linear_Repeat_Aniso8);
        TEXTURE2D(_BaseColorMap);
        SAMPLER(sampler_BaseColorMap);
        TEXTURE2D(_SpecularColorMap);
        SAMPLER(sampler_SpecularColorMap);
        TEXTURE2D(_BaseNormalMap);
        SAMPLER(sampler_BaseNormalMap);
        TEXTURE2D(_BaseMaskMap);
        SAMPLER(sampler_BaseMaskMap);
        TEXTURE2D(_CoverMaskA);
        SAMPLER(sampler_CoverMaskA);
        TEXTURE2D(_CoverBaseColorMap);
        SAMPLER(sampler_CoverBaseColorMap);
        TEXTURE2D(_CoverSpecularColorMap);
        SAMPLER(sampler_CoverSpecularColorMap);
        TEXTURE2D(_CoverNormalMap);
        SAMPLER(sampler_CoverNormalMap);
        TEXTURE2D(_CoverMaskMap);
        SAMPLER(sampler_CoverMaskMap);
        TEXTURE2D(_DetailMap);
        SAMPLER(sampler_DetailMap);
        
            // -- Property used by ScenePickingPass
            #ifdef SCENEPICKINGPASS
            float4 _SelectionID;
            #endif
        
            // -- Properties used by SceneSelectionPass
            #ifdef SCENESELECTIONPASS
            int _ObjectId;
            int _PassValue;
            #endif
        
            // Includes
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl"
        #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/NormalSurfaceGradient.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/BuiltinUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/DecalUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitDecalData.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderGraphFunctions.hlsl"
        	#include "./NM_Object_VSPro_Indirect.cginc"
        
            // --------------------------------------------------
            // Structs and Packing
        
            struct AttributesMesh
        {
             float3 positionOS : POSITION;
             float3 normalOS : NORMAL;
             float4 tangentOS : TANGENT;
             float4 uv0 : TEXCOORD0;
             float4 uv2 : TEXCOORD2;
             float4 color : COLOR;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : INSTANCEID_SEMANTIC;
            #endif
        };
        struct VaryingsMeshToPS
        {
            SV_POSITION_QUALIFIERS float4 positionCS : SV_POSITION;
             float3 positionRWS;
             float3 normalWS;
             float4 tangentWS;
             float4 texCoord0;
             float4 texCoord2;
             float4 color;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : CUSTOM_INSTANCE_ID;
            #endif
        };
        struct VertexDescriptionInputs
        {
             float3 ObjectSpaceNormal;
             float3 ObjectSpaceTangent;
             float3 ObjectSpacePosition;
        };
        struct SurfaceDescriptionInputs
        {
             float3 WorldSpaceNormal;
             float3 TangentSpaceNormal;
             float3 WorldSpaceTangent;
             float3 WorldSpaceBiTangent;
             float3 AbsoluteWorldSpacePosition;
             float4 uv0;
             float4 uv2;
             float4 VertexColor;
        };
        struct PackedVaryingsMeshToPS
        {
            SV_POSITION_QUALIFIERS float4 positionCS : SV_POSITION;
             float4 tangentWS : INTERP0;
             float4 texCoord0 : INTERP1;
             float4 texCoord2 : INTERP2;
             float4 color : INTERP3;
             float3 positionRWS : INTERP4;
             float3 normalWS : INTERP5;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : CUSTOM_INSTANCE_ID;
            #endif
        };
        
            PackedVaryingsMeshToPS PackVaryingsMeshToPS (VaryingsMeshToPS input)
        {
            PackedVaryingsMeshToPS output;
            ZERO_INITIALIZE(PackedVaryingsMeshToPS, output);
            output.positionCS = input.positionCS;
            output.tangentWS.xyzw = input.tangentWS;
            output.texCoord0.xyzw = input.texCoord0;
            output.texCoord2.xyzw = input.texCoord2;
            output.color.xyzw = input.color;
            output.positionRWS.xyz = input.positionRWS;
            output.normalWS.xyz = input.normalWS;
            #if UNITY_ANY_INSTANCING_ENABLED
            output.instanceID = input.instanceID;
            #endif
            return output;
        }
        
        VaryingsMeshToPS UnpackVaryingsMeshToPS (PackedVaryingsMeshToPS input)
        {
            VaryingsMeshToPS output;
            output.positionCS = input.positionCS;
            output.tangentWS = input.tangentWS.xyzw;
            output.texCoord0 = input.texCoord0.xyzw;
            output.texCoord2 = input.texCoord2.xyzw;
            output.color = input.color.xyzw;
            output.positionRWS = input.positionRWS.xyz;
            output.normalWS = input.normalWS.xyz;
            #if UNITY_ANY_INSTANCING_ENABLED
            output.instanceID = input.instanceID;
            #endif
            return output;
        }
        
        
            // --------------------------------------------------
            // Graph
        
        
            // Graph Functions
            
        void AddPragma_float(float3 A, out float3 Out){
        #pragma instancing_options procedural:setupVSPro
        Out = A;
        }
        
        struct Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float
        {
        };
        
        void SG_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float(float3 Vector3_314C8600, Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float IN, out float3 ObjectSpacePosition_1)
        {
        float3 _Property_5ec158abd968858c9d31ab40df5e9e6f_Out_0_Vector3 = Vector3_314C8600;
        float3 _InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3;
        InjectSetup_float(_Property_5ec158abd968858c9d31ab40df5e9e6f_Out_0_Vector3, _InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3);
        float3 _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3;
        AddPragma_float(_InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3, _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3);
        ObjectSpacePosition_1 = _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3;
        }
        
        void Unity_TilingAndOffset_float(float2 UV, float2 Tiling, float2 Offset, out float2 Out)
        {
            Out = UV * Tiling + Offset;
        }
        
        void Unity_Multiply_float2_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A * B;
        }
        
        void Unity_Add_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A + B;
        }
        
        void Unity_DotProduct_float2(float2 A, float2 B, out float Out)
        {
            Out = dot(A, B);
        }
        
        void Unity_Saturate_float(float In, out float Out)
        {
            Out = saturate(In);
        }
        
        void Unity_OneMinus_float(float In, out float Out)
        {
            Out = 1 - In;
        }
        
        void Unity_SquareRoot_float(float In, out float Out)
        {
            Out = sqrt(In);
        }
        
        void Unity_Combine_float(float R, float G, float B, float A, out float4 RGBA, out float3 RGB, out float2 RG)
        {
            RGBA = float4(R, G, B, A);
            RGB = float3(R, G, B);
            RG = float2(R, G);
        }
        
        void Unity_Divide_float(float A, float B, out float Out)
        {
            Out = A / B;
        }
        
        void Unity_Multiply_float4_float4(float4 A, float4 B, out float4 Out)
        {
        Out = A * B;
        }
        
        void Unity_Branch_float4(float Predicate, float4 True, float4 False, out float4 Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_Branch_float2(float Predicate, float2 True, float2 False, out float2 Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_Sign_float3(float3 In, out float3 Out)
        {
            Out = sign(In);
        }
        
        void Unity_Multiply_float_float(float A, float B, out float Out)
        {
        Out = A * B;
        }
        
        void Unity_Normalize_float3(float3 In, out float3 Out)
        {
            Out = normalize(In);
        }
        
        void Unity_Branch_float3(float Predicate, float3 True, float3 False, out float3 Out)
        {
            Out = Predicate ? True : False;
        }
        
        struct Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float
        {
        float3 WorldSpaceNormal;
        float3 WorldSpaceTangent;
        float3 WorldSpaceBiTangent;
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_82674548, float Boolean_9FF42DF6, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float IN, out float4 XZ_2)
        {
        float _Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean = Boolean_9FF42DF6;
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4 = Vector4_82674548;
        float _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[0];
        float _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[1];
        float _Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[2];
        float _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[3];
        float _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float;
        Unity_Divide_float(1, _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4 = IN.uv0;
        float4 _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4 = IN.uv2;
        float4 _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4;
        Unity_Branch_float4(_Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean, _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4, _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4, _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4);
        float2 _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float);
        float2 _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float, _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float);
        float2 _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4.xy), _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2, _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2, _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2);
        float2 _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2;
        Unity_Branch_float2(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2, _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2);
        UnitySamplerState _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2) );
        _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.rgb = UnpackNormal(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4);
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        float2 _Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2 = float2(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float, _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float);
        float3 _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3;
        Unity_Sign_float3(IN.WorldSpaceNormal, _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3);
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_R_1_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[0];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[1];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_B_3_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[2];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_A_4_Float = 0;
        float2 _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2 = float2(_Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float, 1);
        float2 _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2;
        Unity_Multiply_float2_float2(_Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2, _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2, _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2);
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float = IN.WorldSpaceNormal[0];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float = IN.WorldSpaceNormal[1];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float = IN.WorldSpaceNormal[2];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_A_4_Float = 0;
        float2 _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2 = float2(_Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float);
        float2 _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2;
        Unity_Add_float2(_Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2, _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2, _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2);
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[0];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[1];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_B_3_Float = 0;
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_A_4_Float = 0;
        float _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float;
        Unity_Multiply_float_float(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float);
        float3 _Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3 = float3(_Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float, _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float);
        float3 _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3;
        {
        float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
        _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3 = TransformWorldToTangent(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
        }
        float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
        Unity_Normalize_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3);
        float3 _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3;
        Unity_Branch_float3(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3, (_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.xyz), _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3);
        XZ_2 = (float4(_Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3, 1.0));
        }
        
        void Unity_NormalStrength_float(float3 In, float Strength, out float3 Out)
        {
            Out = float3(In.rg * Strength, lerp(1, In.b, saturate(Strength)));
        }
        
        void Unity_NormalBlend_float(float3 A, float3 B, out float3 Out)
        {
            Out = SafeNormalize(float3(A.rg + B.rg, A.b * B.b));
        }
        
        void Unity_Clamp_float(float In, float Min, float Max, out float Out)
        {
            Out = clamp(In, Min, Max);
        }
        
        void Unity_Subtract_float(float A, float B, out float Out)
        {
            Out = A - B;
        }
        
        void Unity_Absolute_float(float In, out float Out)
        {
            Out = abs(In);
        }
        
        void Unity_Power_float(float A, float B, out float Out)
        {
            Out = pow(A, B);
        }
        
        void Unity_Add_float(float A, float B, out float Out)
        {
            Out = A + B;
        }
        
        void Unity_Lerp_float3(float3 A, float3 B, float3 T, out float3 Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float
        {
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_2EBA7A3B, float Boolean_7ABB9909, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float IN, out float4 XZ_2)
        {
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Property_30834f691775a0898a45b1c868520436_Out_0_Boolean = Boolean_7ABB9909;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4 = Vector4_2EBA7A3B;
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[0];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[1];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[2];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[3];
        float _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float;
        Unity_Divide_float(1, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4 = IN.uv0;
        float4 _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4 = IN.uv2;
        float4 _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4;
        Unity_Branch_float4(_Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean, _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4, _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4, _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4);
        float2 _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float);
        float2 _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float);
        float2 _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4.xy), _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2, _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2, _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2);
        float2 _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2;
        Unity_Branch_float2(_Property_30834f691775a0898a45b1c868520436_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2, _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2);
        UnitySamplerState _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2) );
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        XZ_2 = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4;
        }
        
        void Unity_Remap_float(float In, float2 InMinMax, float2 OutMinMax, out float Out)
        {
            Out = OutMinMax.x + (In - InMinMax.x) * (OutMinMax.y - OutMinMax.x) / (InMinMax.y - InMinMax.x);
        }
        
        void Unity_Branch_float(float Predicate, float True, float False, out float Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_Sign_float(float In, out float Out)
        {
            Out = sign(In);
        }
        
        void Unity_Ceiling_float(float In, out float Out)
        {
            Out = ceil(In);
        }
        
        void Unity_Lerp_float(float A, float B, float T, out float Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float
        {
        };
        
        void SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(float Vector1_32317166, float Vector1_FBE622A2, float Vector1_8C15C351, Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float IN, out float SmoothnessOverlay_1)
        {
        float _Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float = Vector1_32317166;
        float _Property_a00e29241d12f983b30177515b367ec9_Out_0_Float = Vector1_FBE622A2;
        float _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float;
        Unity_Sign_float(_Property_a00e29241d12f983b30177515b367ec9_Out_0_Float, _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float);
        float _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float;
        Unity_Add_float(_Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float, 1, _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float);
        float _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float;
        Unity_Multiply_float_float(_Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float, 0.5, _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float);
        float _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float;
        Unity_Ceiling_float(_Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float);
        float _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float = Vector1_8C15C351;
        float _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        Unity_Lerp_float(_Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float, _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float);
        SmoothnessOverlay_1 = _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        }
        
        void Unity_Lerp_float2(float2 A, float2 B, float2 T, out float2 Out)
        {
            Out = lerp(A, B, T);
        }
        
            // Graph Vertex
            struct VertexDescription
        {
            float3 Position;
            float3 Normal;
            float3 Tangent;
        };
        
        VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
        {
            VertexDescription description = (VertexDescription)0;
            Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430;
            float3 _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3;
            SG_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float(IN.ObjectSpacePosition, _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430, _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3);
            description.Position = _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3;
            description.Normal = IN.ObjectSpaceNormal;
            description.Tangent = IN.ObjectSpaceTangent;
            return description;
        }
        
            // Graph Pixel
            struct SurfaceDescription
        {
            float Alpha;
            float3 NormalTS;
            float Smoothness;
        };
        
        SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
        {
            SurfaceDescription surface = (SurfaceDescription)0;
            UnityTexture2D _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_DetailMap);
            float4 _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4 = _DetailTilingOffset;
            float _Split_9fa8573190399e8da2a843a4cab68164_R_1_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[0];
            float _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[1];
            float _Split_9fa8573190399e8da2a843a4cab68164_B_3_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[2];
            float _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[3];
            float2 _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_R_1_Float, _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float);
            float2 _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_B_3_Float, _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float);
            float2 _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2;
            Unity_TilingAndOffset_float(IN.uv0.xy, _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2, _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2, _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2);
            float4 _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.tex, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.samplerstate, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.GetTransformedUV(_TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2) );
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_R_4_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.r;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.g;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.b;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.a;
            float2 _Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2 = float2(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float, _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float);
            float2 _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2, float2(2, 2), _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2);
            float2 _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2;
            Unity_Add_float2(_Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2, float2(-1, -1), _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2);
            float _Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float = _DetailNormalScale;
            float2 _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2, (_Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float.xx), _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2);
            float _Split_492de324af96c482b50573c79f9fb6a0_R_1_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[0];
            float _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[1];
            float _Split_492de324af96c482b50573c79f9fb6a0_B_3_Float = 0;
            float _Split_492de324af96c482b50573c79f9fb6a0_A_4_Float = 0;
            float _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float;
            Unity_DotProduct_float2(_Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float);
            float _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float;
            Unity_Saturate_float(_DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float, _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float);
            float _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float;
            Unity_OneMinus_float(_Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float, _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float);
            float _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float;
            Unity_SquareRoot_float(_OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            float3 _Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3 = float3(_Split_492de324af96c482b50573c79f9fb6a0_R_1_Float, _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            UnityTexture2D _Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseNormalMap);
            float4 _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4 = _BaseTilingOffset;
            float _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean = _BaseUsePlanarUV;
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv0 = IN.uv0;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv2 = IN.uv2;
            float4 _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4);
            float _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float = _BaseNormalScale;
            float3 _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4.xyz), _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3);
            float3 _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3;
            Unity_NormalBlend_float(_Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3, _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3);
            UnityTexture2D _Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverNormalMap);
            float4 _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4 = _CoverTilingOffset;
            float _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean = _CoverUsePlanarUV;
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv0 = IN.uv0;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv2 = IN.uv2;
            float4 _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4);
            float _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float = _CoverNormalScale;
            float3 _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3);
            float _Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean = _USEDYNAMICCOVERTSTATICMASKF;
            UnityTexture2D _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskA);
            float4 _UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4 = IN.uv0;
            float4 _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.tex, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.samplerstate, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.GetTransformedUV((_UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4.xy)) );
            float _SampleTexture2D_79111e5af287b084822e60563309a632_R_4_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.r;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_G_5_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.g;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_B_6_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.b;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.a;
            float _Property_c022d8255938838aa73170f05c226269_Out_0_Float = _CoverMaskPower;
            float _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float, _Property_c022d8255938838aa73170f05c226269_Out_0_Float, _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float);
            float _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float;
            Unity_Clamp_float(_Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float, 0, 1, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float);
            float _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float = _CoverNormalBlendHardness;
            float3 _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3);
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_R_1_Float = IN.WorldSpaceNormal[0];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float = IN.WorldSpaceNormal[1];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_B_3_Float = IN.WorldSpaceNormal[2];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_A_4_Float = 0;
            float _Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float = _Cover_Amount;
            float _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float = _Cover_Amount_Grow_Speed;
            float _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float;
            Unity_Subtract_float(4, _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float);
            float _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float;
            Unity_Divide_float(_Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float);
            float _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float;
            Unity_Absolute_float(_Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float, _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float);
            float _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float;
            Unity_Power_float(_Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float);
            float _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float;
            Unity_Clamp_float(_Power_c11fc5724f830485a9c4df249a854571_Out_2_Float, 0, 2, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float);
            float _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float;
            Unity_Multiply_float_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float);
            float _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float;
            Unity_Saturate_float(_Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float, _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float);
            float _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float;
            Unity_Clamp_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, 0, 0.9999, _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float);
            float _Property_89633a46f34e1f8996557a9178d78478_Out_0_Float = _Cover_Max_Angle;
            float _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float;
            Unity_Divide_float(_Property_89633a46f34e1f8996557a9178d78478_Out_0_Float, 45, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float);
            float _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float;
            Unity_OneMinus_float(_Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float);
            float _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float;
            Unity_Subtract_float(_Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float, _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float);
            float _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float;
            Unity_Clamp_float(_Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float, 0, 2, _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
            float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
            Unity_Divide_float(1, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float);
            float _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_67dcc607b6da848097d3412324311616_Out_3_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float, _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float);
            float _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float;
            Unity_Absolute_float(_Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float, _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float);
            float _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float = _CoverHardness;
            float _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float;
            Unity_Power_float(_Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float);
            float _Property_f8753bb05d835089bda460d144f93c48_Out_0_Float = _Cover_Min_Height;
            float _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float;
            Unity_OneMinus_float(_Property_f8753bb05d835089bda460d144f93c48_Out_0_Float, _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float);
            float _Split_c66e04f85a2a7f87884040056599e65d_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
            float _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
            float _Split_c66e04f85a2a7f87884040056599e65d_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
            float _Split_c66e04f85a2a7f87884040056599e65d_A_4_Float = 0;
            float _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float;
            Unity_Add_float(_OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float, _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float);
            float _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, 1, _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
            float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
            Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, 0, 1, _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float);
            float _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float = _Cover_Min_Height_Blending;
            float _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float, _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float);
            float _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float;
            Unity_Divide_float(_Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float);
            float _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float;
            Unity_OneMinus_float(_Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float, _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float);
            float _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float;
            Unity_Add_float(_OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float, -0.5, _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
            float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
            Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, 0, 1, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float);
            float _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float;
            Unity_Add_float(_Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float, _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float);
            float _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float;
            Unity_Clamp_float(_Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float, 0, 1, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float);
            float _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float;
            Unity_Multiply_float_float(_Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float);
            float _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float;
            Unity_Multiply_float_float(_Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float);
            float3 _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3, (_Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float.xxx), _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3);
            float3 _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3;
            {
                float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
                _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3 = TransformTangentToWorldDir(_Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3.xyz, tangentTransform, false).xyz;
            }
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_R_1_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[0];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[1];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_B_3_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[2];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_A_4_Float = 0;
            float _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float;
            Unity_Multiply_float_float(_Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float);
            float _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float);
            float _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float);
            float _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float, _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float);
            UnityTexture2D _Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_36e64648ad8a6a849bc794b8693519da;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv0 = IN.uv0;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv2 = IN.uv2;
            float4 _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_36e64648ad8a6a849bc794b8693519da, _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4);
            float _Split_198ec92f3e753d8a9ad50db7d6527324_R_1_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[0];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[1];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[2];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[3];
            float _Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float = _CoverHeightMapMin;
            float _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float = _CoverHeightMapMax;
            float2 _Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2 = float2(_Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float, _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float);
            float _Property_277f22c36084858981418fa95133a562_Out_0_Float = _CoverHeightMapOffset;
            float2 _Add_53997153562831859cc7b582f3068877_Out_2_Vector2;
            Unity_Add_float2(_Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2, (_Property_277f22c36084858981418fa95133a562_Out_0_Float.xx), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2);
            float _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float, float2 (0, 1), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float);
            float _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float, _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float);
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float = IN.VertexColor[0];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float = IN.VertexColor[1];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_B_3_Float = IN.VertexColor[2];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_A_4_Float = IN.VertexColor[3];
            float _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float, _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float, _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float);
            float _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float;
            Unity_Saturate_float(_Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float);
            float _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float);
            float _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float;
            Unity_Branch_float(_Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float);
            float3 _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxx), _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3);
            UnityTexture2D _Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv0 = IN.uv0;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv2 = IN.uv2;
            float4 _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4);
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_R_1_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[0];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[1];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_B_3_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[2];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[3];
            float _Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float = _BaseAORemapMin;
            float _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float = _BaseAORemapMax;
            float2 _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2 = float2(_Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float, _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float);
            float _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float, float2 (0, 1), _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2, _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float);
            float _Property_e353baf414594b8882fb914562e81165_Out_0_Float = _BaseSmoothnessRemapMin;
            float _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float = _BaseSmoothnessRemapMax;
            float2 _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2 = float2(_Property_e353baf414594b8882fb914562e81165_Out_0_Float, _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float);
            float _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float, float2 (0, 1), _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2, _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float);
            float _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float, 2, _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float);
            float _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float;
            Unity_Add_float(_Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float, -1, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float);
            float _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float = _DetailSmoothnessScale;
            float _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float;
            Unity_Multiply_float_float(_Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float, _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float);
            float _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float;
            Unity_Saturate_float(_Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float, _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float);
            float _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float;
            Unity_Absolute_float(_Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float);
            Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da;
            float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float;
            SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(_Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float);
            float _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float;
            Unity_Saturate_float(_BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float2 _Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2 = float2(_Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float _Property_5e08cfb127183a8993376f9087501eee_Out_0_Float = _CoverAORemapMin;
            float _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float = _CoverAORemapMax;
            float2 _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2 = float2(_Property_5e08cfb127183a8993376f9087501eee_Out_0_Float, _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float);
            float _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float, float2 (0, 1), _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2, _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float);
            float _Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float = _CoverSmoothnessRemapMin;
            float _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float = _CoverSmoothnessRemapMax;
            float2 _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2 = float2(_Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float, _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float);
            float _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float, float2 (0, 1), _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2 = float2(_Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2;
            Unity_Lerp_float2(_Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2, _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xx), _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2);
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_R_1_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[0];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[1];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_B_3_Float = 0;
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_A_4_Float = 0;
            float _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float = _WetSmoothness;
            float _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float;
            Unity_OneMinus_float(_Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float);
            float _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            Unity_Lerp_float(_Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float, _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float, _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float);
            surface.Alpha = 1;
            surface.NormalTS = _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            surface.Smoothness = _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            return surface;
        }
        
            // --------------------------------------------------
            // Build Graph Inputs
            #ifdef HAVE_VFX_MODIFICATION
            #define VFX_SRP_ATTRIBUTES AttributesMesh
            #define VaryingsMeshType VaryingsMeshToPS
            #define VFX_SRP_VARYINGS VaryingsMeshType
            #define VFX_SRP_SURFACE_INPUTS FragInputs
            #endif
            
        VertexDescriptionInputs AttributesMeshToVertexDescriptionInputs(AttributesMesh input)
        {
            VertexDescriptionInputs output;
            ZERO_INITIALIZE(VertexDescriptionInputs, output);
        
            output.ObjectSpaceNormal =                          input.normalOS;
            output.ObjectSpaceTangent =                         input.tangentOS.xyz;
            output.ObjectSpacePosition =                        input.positionOS;
        
            return output;
        }
        
        VertexDescription GetVertexDescription(AttributesMesh input, float3 timeParameters
        #ifdef HAVE_VFX_MODIFICATION
            , AttributesElement element
        #endif
        )
        {
            // build graph inputs
            VertexDescriptionInputs vertexDescriptionInputs = AttributesMeshToVertexDescriptionInputs(input);
            // Override time parameters with used one (This is required to correctly handle motion vectors for vertex animation based on time)
        
            // evaluate vertex graph
        #ifdef HAVE_VFX_MODIFICATION
            GraphProperties properties;
            ZERO_INITIALIZE(GraphProperties, properties);
        
            // Fetch the vertex graph properties for the particle instance.
            GetElementVertexProperties(element, properties);
        
            VertexDescription vertexDescription = VertexDescriptionFunction(vertexDescriptionInputs, properties);
        #else
            VertexDescription vertexDescription = VertexDescriptionFunction(vertexDescriptionInputs);
        #endif
            return vertexDescription;
        
        }
        
        AttributesMesh ApplyMeshModification(AttributesMesh input, float3 timeParameters
        #ifdef USE_CUSTOMINTERP_SUBSTRUCT
            #ifdef TESSELLATION_ON
            , inout VaryingsMeshToDS varyings
            #else
            , inout VaryingsMeshToPS varyings
            #endif
        #endif
        #ifdef HAVE_VFX_MODIFICATION
                , AttributesElement element
        #endif
            )
        {
            VertexDescription vertexDescription = GetVertexDescription(input, timeParameters
        #ifdef HAVE_VFX_MODIFICATION
                , element
        #endif
            );
        
            // copy graph output to the results
            input.positionOS = vertexDescription.Position;
            input.normalOS = vertexDescription.Normal;
            input.tangentOS.xyz = vertexDescription.Tangent;
        
            
        
            return input;
        }
        
        #if defined(_ADD_CUSTOM_VELOCITY) // For shader graph custom velocity
        // Return precomputed Velocity in object space
        float3 GetCustomVelocity(AttributesMesh input
        #ifdef HAVE_VFX_MODIFICATION
            , AttributesElement element
        #endif
        )
        {
            VertexDescription vertexDescription = GetVertexDescription(input, _TimeParameters.xyz
        #ifdef HAVE_VFX_MODIFICATION
                , element
        #endif
            );
            return vertexDescription.CustomVelocity;
        }
        #endif
        
        FragInputs BuildFragInputs(VaryingsMeshToPS input)
        {
            FragInputs output;
            ZERO_INITIALIZE(FragInputs, output);
        
            // Init to some default value to make the computer quiet (else it output 'divide by zero' warning even if value is not used).
            // TODO: this is a really poor workaround, but the variable is used in a bunch of places
            // to compute normals which are then passed on elsewhere to compute other values...
            output.tangentToWorld = k_identity3x3;
            output.positionSS = input.positionCS;       // input.positionCS is SV_Position
        
            output.positionRWS =                input.positionRWS;
            output.tangentToWorld =             BuildTangentToWorld(input.tangentWS, input.normalWS);
            output.texCoord0 =                  input.texCoord0;
            output.texCoord2 =                  input.texCoord2;
            output.color =                      input.color;
        
        #ifdef HAVE_VFX_MODIFICATION
            // FragInputs from VFX come from two places: Interpolator or CBuffer.
        #if VFX_USE_GRAPH_VALUES
            uint instanceActiveIndex = asuint(UNITY_ACCESS_INSTANCED_PROP(PerInstance, _InstanceActiveIndex));
            /* WARNING: $splice Could not find named fragment 'VFXLoadGraphValues' */
        #endif
        
            /* WARNING: $splice Could not find named fragment 'VFXSetFragInputs' */
        
        #endif
        
            // splice point to copy custom interpolator fields from varyings to frag inputs
            
        
            return output;
        }
        
        // existing HDRP code uses the combined function to go directly from packed to frag inputs
        FragInputs UnpackVaryingsMeshToFragInputs(PackedVaryingsMeshToPS input)
        {
            UNITY_SETUP_INSTANCE_ID(input);
        #if defined(HAVE_VFX_MODIFICATION) && defined(UNITY_INSTANCING_ENABLED)
            unity_InstanceID = input.instanceID;
        #endif
            VaryingsMeshToPS unpacked = UnpackVaryingsMeshToPS(input);
            return BuildFragInputs(unpacked);
        }
            SurfaceDescriptionInputs FragInputsToSurfaceDescriptionInputs(FragInputs input, float3 viewWS)
        {
            SurfaceDescriptionInputs output;
            ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
        
            output.WorldSpaceNormal =                           normalize(input.tangentToWorld[2].xyz);
            #if defined(SHADER_STAGE_RAY_TRACING)
            #else
            #endif
            output.TangentSpaceNormal =                         float3(0.0f, 0.0f, 1.0f);
            output.WorldSpaceTangent =                          input.tangentToWorld[0].xyz;
            output.WorldSpaceBiTangent =                        input.tangentToWorld[1].xyz;
            output.AbsoluteWorldSpacePosition =                 GetAbsolutePositionWS(input.positionRWS);
        
        #if UNITY_UV_STARTS_AT_TOP
        #else
        #endif
        
        
            output.uv0 =                                        input.texCoord0;
            output.uv2 =                                        input.texCoord2;
            output.VertexColor =                                input.color;
        
            // splice point to copy frag inputs custom interpolator pack into the SDI
            
        
            return output;
        }
        
            // --------------------------------------------------
            // Build Surface Data (Specific Material)
        
        void ApplyDecalToSurfaceDataNoNormal(DecalSurfaceData decalSurfaceData, inout SurfaceData surfaceData);
        
        void ApplyDecalAndGetNormal(FragInputs fragInputs, PositionInputs posInput, SurfaceDescription surfaceDescription,
            inout SurfaceData surfaceData)
        {
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
        #ifdef DECAL_NORMAL_BLENDING
            // SG nodes don't ouptut surface gradients, so if decals require surf grad blending, we have to convert
            // the normal to gradient before applying the decal. We then have to resolve the gradient back to world space
            float3 normalTS;
        
            normalTS = SurfaceGradientFromTangentSpaceNormalAndFromTBN(surfaceDescription.NormalTS,
            fragInputs.tangentToWorld[0], fragInputs.tangentToWorld[1]);
        
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, fragInputs.tangentToWorld[2], normalTS);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        
            GetNormalWS_SG(fragInputs, normalTS, surfaceData.normalWS, doubleSidedConstants);
        #else
            // normal delivered to master node
            GetNormalWS(fragInputs, surfaceDescription.NormalTS, surfaceData.normalWS, doubleSidedConstants);
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                // Both uses and modifies 'surfaceData.normalWS'.
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, surfaceData.normalWS.xyz);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        #endif
        }
        void BuildSurfaceData(FragInputs fragInputs, inout SurfaceDescription surfaceDescription, float3 V, PositionInputs posInput, out SurfaceData surfaceData, out float3 bentNormalWS)
        {
            ZERO_INITIALIZE(SurfaceData, surfaceData);
        
            // specularOcclusion need to be init ahead of decal to quiet the compiler that modify the SurfaceData struct
            // however specularOcclusion can come from the graph, so need to be init here so it can be override.
            surfaceData.specularOcclusion = 1.0;
        
            surfaceData.perceptualSmoothness =      surfaceDescription.Smoothness;
        
            #if defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE) || defined(_REFRACTION_THIN)
                if (_EnableSSRefraction)
                {
        
                    surfaceData.transmittanceMask = (1.0 - surfaceDescription.Alpha);
                    surfaceDescription.Alpha = 1.0;
                }
                else
                {
                    surfaceData.ior = 1.0;
                    surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                    surfaceData.atDistance = 1.0;
                    surfaceData.transmittanceMask = 0.0;
                    surfaceDescription.Alpha = 1.0;
                }
            #else
                surfaceData.ior = 1.0;
                surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                surfaceData.atDistance = 1.0;
                surfaceData.transmittanceMask = 0.0;
            #endif
        
            // These static material feature allow compile time optimization
            surfaceData.materialFeatures = MATERIALFEATUREFLAGS_LIT_STANDARD;
            #ifdef _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SUBSURFACE_SCATTERING;
            #endif
        
            #ifdef _MATERIAL_FEATURE_TRANSMISSION
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
            #endif
        
            #ifdef _MATERIAL_FEATURE_ANISOTROPY
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_ANISOTROPY;
        
                // Initialize the normal to something non-zero to avoid a div-zero warning for anisotropy.
                surfaceData.normalWS = float3(0, 1, 0);
            #endif
        
            #ifdef _MATERIAL_FEATURE_IRIDESCENCE
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_IRIDESCENCE;
            #endif
        
            #ifdef _MATERIAL_FEATURE_SPECULAR_COLOR
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SPECULAR_COLOR;
            #endif
        
            #ifdef _MATERIAL_FEATURE_CLEAR_COAT
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_CLEAR_COAT;
            #endif
        
            #if defined (_MATERIAL_FEATURE_SPECULAR_COLOR) && defined (_ENERGY_CONSERVING_SPECULAR)
                // Require to have setup baseColor
                // Reproduce the energy conservation done in legacy Unity. Not ideal but better for compatibility and users can unchek it
                surfaceData.baseColor *= (1.0 - Max3(surfaceData.specularColor.r, surfaceData.specularColor.g, surfaceData.specularColor.b));
            #endif
        
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
            ApplyDecalAndGetNormal(fragInputs, posInput, surfaceDescription, surfaceData);
        
            surfaceData.geomNormalWS = fragInputs.tangentToWorld[2];
        
            surfaceData.tangentWS = normalize(fragInputs.tangentToWorld[0].xyz);    // The tangent is not normalize in tangentToWorld for mikkt. TODO: Check if it expected that we normalize with Morten. Tag: SURFACE_GRADIENT
        
        
            bentNormalWS = surfaceData.normalWS;
        
            surfaceData.tangentWS = Orthonormalize(surfaceData.tangentWS, surfaceData.normalWS);
        
            #ifdef DEBUG_DISPLAY
                if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
                {
                    // TODO: need to update mip info
                    surfaceData.metallic = 0;
                }
        
                // We need to call ApplyDebugToSurfaceData after filling the surfarcedata and before filling builtinData
                // as it can modify attribute use for static lighting
                ApplyDebugToSurfaceData(fragInputs.tangentToWorld, surfaceData);
            #endif
        
            // By default we use the ambient occlusion with Tri-ace trick (apply outside) for specular occlusion.
            // If user provide bent normal then we process a better term
            #if defined(_SPECULAR_OCCLUSION_CUSTOM)
                // Just use the value passed through via the slot (not active otherwise)
            #elif defined(_SPECULAR_OCCLUSION_FROM_AO_BENT_NORMAL)
                // If we have bent normal and ambient occlusion, process a specular occlusion
                surfaceData.specularOcclusion = GetSpecularOcclusionFromBentAO(V, bentNormalWS, surfaceData.normalWS, surfaceData.ambientOcclusion, PerceptualSmoothnessToPerceptualRoughness(surfaceData.perceptualSmoothness));
            #elif defined(_AMBIENT_OCCLUSION) && defined(_SPECULAR_OCCLUSION_FROM_AO)
                surfaceData.specularOcclusion = GetSpecularOcclusionFromAmbientOcclusion(ClampNdotV(dot(surfaceData.normalWS, V)), surfaceData.ambientOcclusion, PerceptualSmoothnessToRoughness(surfaceData.perceptualSmoothness));
            #endif
        
            #if defined(_ENABLE_GEOMETRIC_SPECULAR_AA) && !defined(SHADER_STAGE_RAY_TRACING)
                surfaceData.perceptualSmoothness = GeometricNormalFiltering(surfaceData.perceptualSmoothness, fragInputs.tangentToWorld[2], surfaceDescription.SpecularAAScreenSpaceVariance, surfaceDescription.SpecularAAThreshold);
            #endif
        }
        
            // --------------------------------------------------
            // Get Surface And BuiltinData
        
            void GetSurfaceAndBuiltinData(FragInputs fragInputs, float3 V, inout PositionInputs posInput, out SurfaceData surfaceData, out BuiltinData builtinData RAY_TRACING_OPTIONAL_PARAMETERS)
            {
                // Don't dither if displaced tessellation (we're fading out the displacement instead to match the next LOD)
                #if !defined(SHADER_STAGE_RAY_TRACING) && !defined(_TESSELLATION_DISPLACEMENT)
                #ifdef LOD_FADE_CROSSFADE // enable dithering LOD transition if user select CrossFade transition in LOD group
                LODDitheringTransition(ComputeFadeMaskSeed(V, posInput.positionSS), unity_LODFade.x);
                #endif
                #endif
        
                #ifndef SHADER_UNLIT
                #ifdef _DOUBLESIDED_ON
                    float3 doubleSidedConstants = _DoubleSidedConstants.xyz;
                #else
                    float3 doubleSidedConstants = float3(1.0, 1.0, 1.0);
                #endif
        
                ApplyDoubleSidedFlipOrMirror(fragInputs, doubleSidedConstants); // Apply double sided flip on the vertex normal
                #endif // SHADER_UNLIT
        
                SurfaceDescriptionInputs surfaceDescriptionInputs = FragInputsToSurfaceDescriptionInputs(fragInputs, V);
        
                #if defined(HAVE_VFX_MODIFICATION)
                GraphProperties properties;
                ZERO_INITIALIZE(GraphProperties, properties);
        
                GetElementPixelProperties(fragInputs, properties);
        
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs, properties);
                #else
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs);
                #endif
        
                // Perform alpha test very early to save performance (a killed pixel will not sample textures)
                // TODO: split graph evaluation to grab just alpha dependencies first? tricky..
                #ifdef _ALPHATEST_ON
                    float alphaCutoff = surfaceDescription.AlphaClipThreshold;
                    #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
                    // The TransparentDepthPrepass is also used with SSR transparent.
                    // If an artists enable transaprent SSR but not the TransparentDepthPrepass itself, then we use AlphaClipThreshold
                    // otherwise if TransparentDepthPrepass is enabled we use AlphaClipThresholdDepthPrepass
                    #elif SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_POSTPASS
                    // DepthPostpass always use its own alpha threshold
                    alphaCutoff = surfaceDescription.AlphaClipThresholdDepthPostpass;
                    #elif (SHADERPASS == SHADERPASS_SHADOWS) || (SHADERPASS == SHADERPASS_RAYTRACING_VISIBILITY)
                    // If use shadow threshold isn't enable we don't allow any test
                    #endif
        
                    GENERIC_ALPHA_TEST(surfaceDescription.Alpha, alphaCutoff);
                #endif
        
                #if !defined(SHADER_STAGE_RAY_TRACING) && _DEPTHOFFSET_ON
                ApplyDepthOffsetPositionInput(V, surfaceDescription.DepthOffset, GetViewForwardDir(), GetWorldToHClipMatrix(), posInput);
                #endif
        
                #ifndef SHADER_UNLIT
                float3 bentNormalWS;
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData, bentNormalWS);
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD1
                    float4 lightmapTexCoord1 = fragInputs.texCoord1;
                #else
                    float4 lightmapTexCoord1 = float4(0,0,0,0);
                #endif
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD2
                    float4 lightmapTexCoord2 = fragInputs.texCoord2;
                #else
                    float4 lightmapTexCoord2 = float4(0,0,0,0);
                #endif
        
                // Builtin Data
                // For back lighting we use the oposite vertex normal
                InitBuiltinData(posInput, surfaceDescription.Alpha, bentNormalWS, -fragInputs.tangentToWorld[2], lightmapTexCoord1, lightmapTexCoord2, builtinData);
        
                #else
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData);
        
                ZERO_BUILTIN_INITIALIZE(builtinData); // No call to InitBuiltinData as we don't have any lighting
                builtinData.opacity = surfaceDescription.Alpha;
        
                #if defined(DEBUG_DISPLAY)
                    // Light Layers are currently not used for the Unlit shader (because it is not lit)
                    // But Unlit objects do cast shadows according to their rendering layer mask, which is what we want to
                    // display in the light layers visualization mode, therefore we need the renderingLayers
                    builtinData.renderingLayers = GetMeshRenderingLightLayer();
                #endif
        
                #endif // SHADER_UNLIT
        
                #ifdef _ALPHATEST_ON
                    // Used for sharpening by alpha to mask - Alpha to covertage is only used with depth only and forward pass (no shadow pass, no transparent pass)
                    builtinData.alphaClipTreshold = alphaCutoff;
                #endif
        
                // override sampleBakedGI - not used by Unlit
        
        
                // Note this will not fully work on transparent surfaces (can check with _SURFACE_TYPE_TRANSPARENT define)
                // We will always overwrite vt feeback with the nearest. So behind transparent surfaces vt will not be resolved
                // This is a limitation of the current MRT approach.
                #ifdef UNITY_VIRTUAL_TEXTURING
                #endif
        
                #if _DEPTHOFFSET_ON
                builtinData.depthOffset = surfaceDescription.DepthOffset;
                #endif
        
                // TODO: We should generate distortion / distortionBlur for non distortion pass
                #if (SHADERPASS == SHADERPASS_DISTORTION)
                builtinData.distortion = surfaceDescription.Distortion;
                builtinData.distortionBlur = surfaceDescription.DistortionBlur;
                #endif
        
                #ifndef SHADER_UNLIT
                // PostInitBuiltinData call ApplyDebugToBuiltinData
                PostInitBuiltinData(V, posInput, surfaceData, builtinData);
                #else
                ApplyDebugToBuiltinData(builtinData);
                #endif
        
                RAY_TRACING_OPTIONAL_ALPHA_TEST_PASS
            }
        
            // --------------------------------------------------
            // Main
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassDepthOnly.hlsl"
        
            // --------------------------------------------------
            // Visual Effect Vertex Invocations
        
        	#ifdef HAVE_VFX_MODIFICATION
        	#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
        	#endif
        
            ENDHLSL
        }
        Pass
        {
            Name "FullScreenDebug"
            Tags
            {
                "LightMode" = "FullScreenDebug"
            }
        
            // Render State
            Cull [_CullMode]
        ZTest LEqual
        ZWrite Off
        
            // Debug
            // <None>
        
            // --------------------------------------------------
            // Pass
        
            HLSLPROGRAM
        
            // Pragmas
            #pragma multi_compile _ DOTS_INSTANCING_ON
        #pragma instancing_options renderinglayer
        #pragma target 4.5
        #pragma vertex Vert
        #pragma fragment Frag
        #pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal switch
        #pragma multi_compile_instancing
        
            // Keywords
            #pragma shader_feature _ _SURFACE_TYPE_TRANSPARENT
        #pragma shader_feature_local _ _DOUBLESIDED_ON
        #pragma shader_feature_local _ _ADD_PRECOMPUTED_VELOCITY
        #pragma shader_feature_local _ _TRANSPARENT_WRITES_MOTION_VEC
        #pragma shader_feature_local_fragment _ _ENABLE_FOG_ON_TRANSPARENT
        #pragma multi_compile _ LOD_FADE_CROSSFADE
        #pragma shader_feature_local_fragment _ _DISABLE_DECALS
        #pragma shader_feature_local_raytracing _ _DISABLE_DECALS
        #pragma shader_feature_local_fragment _ _DISABLE_SSR
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR
        #pragma shader_feature_local_fragment _ _DISABLE_SSR_TRANSPARENT
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR_TRANSPARENT
        #pragma shader_feature_local _ _REFRACTION_PLANE _REFRACTION_SPHERE _REFRACTION_THIN
            // GraphKeywords: <None>
        
            // For custom interpolators to inject a substruct definition before FragInputs definition,
            // allowing for FragInputs to capture CI's intended for ShaderGraph's SDI.
            struct CustomInterpolators
        {
        };
        #define USE_CUSTOMINTERP_SUBSTRUCT
        
        
        
            // TODO: Merge FragInputsVFX substruct with CustomInterpolators.
        	#ifdef HAVE_VFX_MODIFICATION
        	struct FragInputsVFX
            {
                /* WARNING: $splice Could not find named fragment 'FragInputsVFX' */
            };
            #endif
        
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/GeometricTools.hlsl" // Required by Tessellation.hlsl
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Tessellation.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl" // Required to be include before we include properties as it define DECLARE_STACK_CB
            // Always include Shader Graph version
            // Always include last to avoid double macros
            #include "Packages/com.unity.shadergraph/ShaderGraphLibrary/Functions.hlsl" // Need to be here for Gradient struct definition
        
            // --------------------------------------------------
            // Defines
        
            // Attribute
            #define ATTRIBUTES_NEED_NORMAL
            #define ATTRIBUTES_NEED_TANGENT
            #define ATTRIBUTES_NEED_TEXCOORD0
            #define ATTRIBUTES_NEED_TEXCOORD2
            #define ATTRIBUTES_NEED_COLOR
            #define VARYINGS_NEED_POSITION_WS
            #define VARYINGS_NEED_TANGENT_TO_WORLD
            #define VARYINGS_NEED_TEXCOORD0
            #define VARYINGS_NEED_TEXCOORD2
            #define VARYINGS_NEED_COLOR
        
            #define HAVE_MESH_MODIFICATION
        
            //Strip down the FragInputs.hlsl (on graphics), so we can only optimize the interpolators we use.
            //if by accident something requests contents of FragInputs.hlsl, it will be caught as a compiler error
            //Frag inputs stripping is only enabled when FRAG_INPUTS_ENABLE_STRIPPING is set
            #if !defined(SHADER_STAGE_RAY_TRACING) && SHADERPASS != SHADERPASS_RAYTRACING_GBUFFER && SHADERPASS != SHADERPASS_FULL_SCREEN_DEBUG
            #define FRAG_INPUTS_ENABLE_STRIPPING
            #endif
            #define FRAG_INPUTS_USE_TEXCOORD0
            #define FRAG_INPUTS_USE_TEXCOORD2
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/FragInputs.hlsl"
        
        
        
            #define SHADERPASS SHADERPASS_FULL_SCREEN_DEBUG
        #define RAYTRACING_SHADER_GRAPH_DEFAULT
        
        
            // Following two define are a workaround introduce in 10.1.x for RaytracingQualityNode
            // The ShaderGraph don't support correctly migration of this node as it serialize all the node data
            // in the json file making it impossible to uprgrade. Until we get a fix, we do a workaround here
            // to still allow us to rename the field and keyword of this node without breaking existing code.
            #ifdef RAYTRACING_SHADER_GRAPH_DEFAULT
            #define RAYTRACING_SHADER_GRAPH_HIGH
            #endif
        
            #ifdef RAYTRACING_SHADER_GRAPH_RAYTRACED
            #define RAYTRACING_SHADER_GRAPH_LOW
            #endif
            // end
        
            #ifndef SHADER_UNLIT
            // We need isFrontFace when using double sided - it is not required for unlit as in case of unlit double sided only drive the cullmode
            // VARYINGS_NEED_CULLFACE can be define by VaryingsMeshToPS.FaceSign input if a IsFrontFace Node is included in the shader graph.
            #if defined(_DOUBLESIDED_ON) && !defined(VARYINGS_NEED_CULLFACE)
                #define VARYINGS_NEED_CULLFACE
            #endif
            #endif
        
            // Specific Material Define
        #define _MATERIAL_FEATURE_SPECULAR_COLOR 1
        #define _AMBIENT_OCCLUSION 1
        #define _SPECULAR_OCCLUSION_FROM_AO 1
        #define _ENERGY_CONSERVING_SPECULAR 1
        
        // If we use subsurface scattering, enable output split lighting (for forward pass)
        #if defined(_MATERIAL_FEATURE_SUBSURFACE_SCATTERING) && !defined(_SURFACE_TYPE_TRANSPARENT)
            #define OUTPUT_SPLIT_LIGHTING
        #endif
        
        // This shader support recursive rendering for raytracing
        #define HAVE_RECURSIVE_RENDERING
        
        // In Path Tracing, For all single-sided, refractive materials, we want to force a thin refraction model
        #if (SHADERPASS == SHADERPASS_PATH_TRACING) && !defined(_DOUBLESIDED_ON) && (defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE))
            #undef  _REFRACTION_PLANE
            #undef  _REFRACTION_SPHERE
            #define _REFRACTION_THIN
        #endif
            // Caution: we can use the define SHADER_UNLIT onlit after the above Material include as it is the Unlit template who define it
        
            // To handle SSR on transparent correctly with a possibility to enable/disable it per framesettings
            // we should have a code like this:
            // if !defined(_DISABLE_SSR_TRANSPARENT)
            // pragma multi_compile _ WRITE_NORMAL_BUFFER
            // endif
            // i.e we enable the multicompile only if we can receive SSR or not, and then C# code drive
            // it based on if SSR transparent in frame settings and not (and stripper can strip it).
            // this is currently not possible with our current preprocessor as _DISABLE_SSR_TRANSPARENT is a keyword not a define
            // so instead we used this and chose to pay the extra cost of normal write even if SSR transaprent is disabled.
            // Ideally the shader graph generator should handle it but condition below can't be handle correctly for now.
            #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
            #if !defined(_DISABLE_SSR_TRANSPARENT) && !defined(SHADER_UNLIT)
                #define WRITE_NORMAL_BUFFER
            #endif
            #endif
        
            #ifndef DEBUG_DISPLAY
                // In case of opaque we don't want to perform the alpha test, it is done in depth prepass and we use depth equal for ztest (setup from UI)
                // Don't do it with debug display mode as it is possible there is no depth prepass in this case
                #if !defined(_SURFACE_TYPE_TRANSPARENT)
                    #if SHADERPASS == SHADERPASS_FORWARD
                    #define SHADERPASS_FORWARD_BYPASS_ALPHA_TEST
                    #elif SHADERPASS == SHADERPASS_GBUFFER
                    #define SHADERPASS_GBUFFER_BYPASS_ALPHA_TEST
                    #endif
                #endif
            #endif
        
            // Define _DEFERRED_CAPABLE_MATERIAL for shader capable to run in deferred pass
            #if defined(SHADER_LIT) && !defined(_SURFACE_TYPE_TRANSPARENT)
                #define _DEFERRED_CAPABLE_MATERIAL
            #endif
        
            // Translate transparent motion vector define
            #if defined(_TRANSPARENT_WRITES_MOTION_VEC) && defined(_SURFACE_TYPE_TRANSPARENT)
                #define _WRITE_TRANSPARENT_MOTION_VECTOR
            #endif
        
            // -- Graph Properties
            CBUFFER_START(UnityPerMaterial)
        float4 _BaseColor;
        float4 _BaseColorMap_TexelSize;
        float _BaseUsePlanarUV;
        float4 _BaseTilingOffset;
        float4 _SpecularColor;
        float4 _SpecularColorMap_TexelSize;
        float4 _BaseNormalMap_TexelSize;
        float _BaseNormalScale;
        float4 _BaseMaskMap_TexelSize;
        float _BaseAORemapMin;
        float _BaseAORemapMax;
        float _BaseSmoothnessRemapMin;
        float _BaseSmoothnessRemapMax;
        float _USEDYNAMICCOVERTSTATICMASKF;
        float4 _CoverMaskA_TexelSize;
        float _CoverMaskPower;
        float _Cover_Amount;
        float _Cover_Amount_Grow_Speed;
        float _Cover_Max_Angle;
        float _Cover_Min_Height;
        float _Cover_Min_Height_Blending;
        float4 _CoverBaseColor;
        float4 _CoverBaseColorMap_TexelSize;
        float _CoverUsePlanarUV;
        float4 _CoverTilingOffset;
        float4 _CoverSpecularColor;
        float4 _CoverSpecularColorMap_TexelSize;
        float4 _CoverNormalMap_TexelSize;
        float _CoverNormalScale;
        float _CoverNormalBlendHardness;
        float _CoverHardness;
        float _CoverHeightMapMin;
        float _CoverHeightMapMax;
        float _CoverHeightMapOffset;
        float4 _CoverMaskMap_TexelSize;
        float _CoverAORemapMin;
        float _CoverAORemapMax;
        float _CoverSmoothnessRemapMin;
        float _CoverSmoothnessRemapMax;
        float4 _DetailMap_TexelSize;
        float4 _DetailTilingOffset;
        float _DetailAlbedoScale;
        float _DetailNormalScale;
        float _DetailSmoothnessScale;
        float4 _WetColor;
        float _WetSmoothness;
        float4 _EmissionColor;
        float _UseShadowThreshold;
        float4 _DoubleSidedConstants;
        float _BlendMode;
        float _EnableBlendModePreserveSpecularLighting;
        float _RayTracing;
        float _RefractionModel;
        CBUFFER_END
        
        
        // Object and Global properties
        SAMPLER(SamplerState_Linear_Repeat);
        SAMPLER(SamplerState_Linear_Repeat_Aniso8);
        TEXTURE2D(_BaseColorMap);
        SAMPLER(sampler_BaseColorMap);
        TEXTURE2D(_SpecularColorMap);
        SAMPLER(sampler_SpecularColorMap);
        TEXTURE2D(_BaseNormalMap);
        SAMPLER(sampler_BaseNormalMap);
        TEXTURE2D(_BaseMaskMap);
        SAMPLER(sampler_BaseMaskMap);
        TEXTURE2D(_CoverMaskA);
        SAMPLER(sampler_CoverMaskA);
        TEXTURE2D(_CoverBaseColorMap);
        SAMPLER(sampler_CoverBaseColorMap);
        TEXTURE2D(_CoverSpecularColorMap);
        SAMPLER(sampler_CoverSpecularColorMap);
        TEXTURE2D(_CoverNormalMap);
        SAMPLER(sampler_CoverNormalMap);
        TEXTURE2D(_CoverMaskMap);
        SAMPLER(sampler_CoverMaskMap);
        TEXTURE2D(_DetailMap);
        SAMPLER(sampler_DetailMap);
        
            // -- Property used by ScenePickingPass
            #ifdef SCENEPICKINGPASS
            float4 _SelectionID;
            #endif
        
            // -- Properties used by SceneSelectionPass
            #ifdef SCENESELECTIONPASS
            int _ObjectId;
            int _PassValue;
            #endif
        
            // Includes
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl"
        #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/NormalSurfaceGradient.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/BuiltinUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderGraphFunctions.hlsl"
        	#include "./NM_Object_VSPro_Indirect.cginc"
        
            // --------------------------------------------------
            // Structs and Packing
        
            struct AttributesMesh
        {
             float3 positionOS : POSITION;
             float3 normalOS : NORMAL;
             float4 tangentOS : TANGENT;
             float4 uv0 : TEXCOORD0;
             float4 uv2 : TEXCOORD2;
             float4 color : COLOR;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : INSTANCEID_SEMANTIC;
            #endif
        };
        struct VaryingsMeshToPS
        {
            SV_POSITION_QUALIFIERS float4 positionCS : SV_POSITION;
             float3 positionRWS;
             float3 normalWS;
             float4 tangentWS;
             float4 texCoord0;
             float4 texCoord2;
             float4 color;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : CUSTOM_INSTANCE_ID;
            #endif
        };
        struct VertexDescriptionInputs
        {
             float3 ObjectSpaceNormal;
             float3 ObjectSpaceTangent;
             float3 ObjectSpacePosition;
        };
        struct SurfaceDescriptionInputs
        {
             float3 WorldSpaceNormal;
             float3 TangentSpaceNormal;
             float3 WorldSpaceTangent;
             float3 WorldSpaceBiTangent;
             float3 AbsoluteWorldSpacePosition;
             float4 uv0;
             float4 uv2;
             float4 VertexColor;
        };
        struct PackedVaryingsMeshToPS
        {
            SV_POSITION_QUALIFIERS float4 positionCS : SV_POSITION;
             float4 tangentWS : INTERP0;
             float4 texCoord0 : INTERP1;
             float4 texCoord2 : INTERP2;
             float4 color : INTERP3;
             float3 positionRWS : INTERP4;
             float3 normalWS : INTERP5;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : CUSTOM_INSTANCE_ID;
            #endif
        };
        
            PackedVaryingsMeshToPS PackVaryingsMeshToPS (VaryingsMeshToPS input)
        {
            PackedVaryingsMeshToPS output;
            ZERO_INITIALIZE(PackedVaryingsMeshToPS, output);
            output.positionCS = input.positionCS;
            output.tangentWS.xyzw = input.tangentWS;
            output.texCoord0.xyzw = input.texCoord0;
            output.texCoord2.xyzw = input.texCoord2;
            output.color.xyzw = input.color;
            output.positionRWS.xyz = input.positionRWS;
            output.normalWS.xyz = input.normalWS;
            #if UNITY_ANY_INSTANCING_ENABLED
            output.instanceID = input.instanceID;
            #endif
            return output;
        }
        
        VaryingsMeshToPS UnpackVaryingsMeshToPS (PackedVaryingsMeshToPS input)
        {
            VaryingsMeshToPS output;
            output.positionCS = input.positionCS;
            output.tangentWS = input.tangentWS.xyzw;
            output.texCoord0 = input.texCoord0.xyzw;
            output.texCoord2 = input.texCoord2.xyzw;
            output.color = input.color.xyzw;
            output.positionRWS = input.positionRWS.xyz;
            output.normalWS = input.normalWS.xyz;
            #if UNITY_ANY_INSTANCING_ENABLED
            output.instanceID = input.instanceID;
            #endif
            return output;
        }
        
        
            // --------------------------------------------------
            // Graph
        
        
            // Graph Functions
            
        void AddPragma_float(float3 A, out float3 Out){
        #pragma instancing_options procedural:setupVSPro
        Out = A;
        }
        
        struct Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float
        {
        };
        
        void SG_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float(float3 Vector3_314C8600, Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float IN, out float3 ObjectSpacePosition_1)
        {
        float3 _Property_5ec158abd968858c9d31ab40df5e9e6f_Out_0_Vector3 = Vector3_314C8600;
        float3 _InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3;
        InjectSetup_float(_Property_5ec158abd968858c9d31ab40df5e9e6f_Out_0_Vector3, _InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3);
        float3 _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3;
        AddPragma_float(_InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3, _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3);
        ObjectSpacePosition_1 = _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3;
        }
        
        void Unity_Combine_float(float R, float G, float B, float A, out float4 RGBA, out float3 RGB, out float2 RG)
        {
            RGBA = float4(R, G, B, A);
            RGB = float3(R, G, B);
            RG = float2(R, G);
        }
        
        void Unity_Divide_float(float A, float B, out float Out)
        {
            Out = A / B;
        }
        
        void Unity_Multiply_float4_float4(float4 A, float4 B, out float4 Out)
        {
        Out = A * B;
        }
        
        void Unity_Branch_float4(float Predicate, float4 True, float4 False, out float4 Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_TilingAndOffset_float(float2 UV, float2 Tiling, float2 Offset, out float2 Out)
        {
            Out = UV * Tiling + Offset;
        }
        
        void Unity_Branch_float2(float Predicate, float2 True, float2 False, out float2 Out)
        {
            Out = Predicate ? True : False;
        }
        
        struct Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float
        {
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_2EBA7A3B, float Boolean_7ABB9909, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float IN, out float4 XZ_2)
        {
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Property_30834f691775a0898a45b1c868520436_Out_0_Boolean = Boolean_7ABB9909;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4 = Vector4_2EBA7A3B;
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[0];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[1];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[2];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[3];
        float _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float;
        Unity_Divide_float(1, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4 = IN.uv0;
        float4 _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4 = IN.uv2;
        float4 _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4;
        Unity_Branch_float4(_Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean, _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4, _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4, _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4);
        float2 _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float);
        float2 _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float);
        float2 _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4.xy), _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2, _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2, _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2);
        float2 _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2;
        Unity_Branch_float2(_Property_30834f691775a0898a45b1c868520436_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2, _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2);
        UnitySamplerState _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2) );
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        XZ_2 = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4;
        }
        
        void Unity_Multiply_float_float(float A, float B, out float Out)
        {
            Out = A * B;
        }
        
        void Unity_Add_float(float A, float B, out float Out)
        {
            Out = A + B;
        }
        
        void Unity_Saturate_float(float In, out float Out)
        {
            Out = saturate(In);
        }
        
        void Unity_Absolute_float(float In, out float Out)
        {
            Out = abs(In);
        }
        
        void Unity_SquareRoot_float4(float4 In, out float4 Out)
        {
            Out = sqrt(In);
        }
        
        void Unity_Sign_float(float In, out float Out)
        {
            Out = sign(In);
        }
        
        void Unity_Ceiling_float(float In, out float Out)
        {
            Out = ceil(In);
        }
        
        void Unity_Lerp_float4(float4 A, float4 B, float4 T, out float4 Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float
        {
        };
        
        void SG_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float(float4 Color_9AA111D3, float Vector1_FBE622A2, float Vector1_8C15C351, Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float IN, out float3 OutVector4_1)
        {
        float4 _Property_012510d774fb7f8b860f5270dca4500f_Out_0_Vector4 = Color_9AA111D3;
        float4 _SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4;
        Unity_SquareRoot_float4(_Property_012510d774fb7f8b860f5270dca4500f_Out_0_Vector4, _SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4);
        float _Property_a00e29241d12f983b30177515b367ec9_Out_0_Float = Vector1_FBE622A2;
        float _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float;
        Unity_Sign_float(_Property_a00e29241d12f983b30177515b367ec9_Out_0_Float, _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float);
        float _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float;
        Unity_Add_float(_Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float, 1, _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float);
        float _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float;
        Unity_Multiply_float_float(_Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float, 0.5, _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float);
        float _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float;
        Unity_Ceiling_float(_Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float);
        float _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float = Vector1_8C15C351;
        float _Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float;
        Unity_Multiply_float_float(_Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float);
        float4 _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4;
        Unity_Lerp_float4(_SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4, (_Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float.xxxx), (_Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float.xxxx), _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4);
        float4 _Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4, _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4, _Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4);
        OutVector4_1 = (_Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4.xyz);
        }
        
        void Unity_Clamp_float(float In, float Min, float Max, out float Out)
        {
            Out = clamp(In, Min, Max);
        }
        
        void Unity_Multiply_float2_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A * B;
        }
        
        void Unity_Add_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A + B;
        }
        
        void Unity_DotProduct_float2(float2 A, float2 B, out float Out)
        {
            Out = dot(A, B);
        }
        
        void Unity_OneMinus_float(float In, out float Out)
        {
            Out = 1 - In;
        }
        
        void Unity_SquareRoot_float(float In, out float Out)
        {
            Out = sqrt(In);
        }
        
        void Unity_Sign_float3(float3 In, out float3 Out)
        {
            Out = sign(In);
        }
        
        void Unity_Normalize_float3(float3 In, out float3 Out)
        {
            Out = normalize(In);
        }
        
        void Unity_Branch_float3(float Predicate, float3 True, float3 False, out float3 Out)
        {
            Out = Predicate ? True : False;
        }
        
        struct Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float
        {
        float3 WorldSpaceNormal;
        float3 WorldSpaceTangent;
        float3 WorldSpaceBiTangent;
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_82674548, float Boolean_9FF42DF6, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float IN, out float4 XZ_2)
        {
        float _Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean = Boolean_9FF42DF6;
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4 = Vector4_82674548;
        float _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[0];
        float _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[1];
        float _Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[2];
        float _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[3];
        float _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float;
        Unity_Divide_float(1, _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4 = IN.uv0;
        float4 _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4 = IN.uv2;
        float4 _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4;
        Unity_Branch_float4(_Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean, _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4, _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4, _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4);
        float2 _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float);
        float2 _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float, _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float);
        float2 _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4.xy), _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2, _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2, _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2);
        float2 _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2;
        Unity_Branch_float2(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2, _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2);
        UnitySamplerState _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2) );
        _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.rgb = UnpackNormal(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4);
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        float2 _Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2 = float2(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float, _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float);
        float3 _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3;
        Unity_Sign_float3(IN.WorldSpaceNormal, _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3);
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_R_1_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[0];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[1];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_B_3_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[2];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_A_4_Float = 0;
        float2 _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2 = float2(_Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float, 1);
        float2 _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2;
        Unity_Multiply_float2_float2(_Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2, _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2, _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2);
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float = IN.WorldSpaceNormal[0];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float = IN.WorldSpaceNormal[1];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float = IN.WorldSpaceNormal[2];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_A_4_Float = 0;
        float2 _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2 = float2(_Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float);
        float2 _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2;
        Unity_Add_float2(_Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2, _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2, _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2);
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[0];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[1];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_B_3_Float = 0;
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_A_4_Float = 0;
        float _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float;
        Unity_Multiply_float_float(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float);
        float3 _Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3 = float3(_Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float, _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float);
        float3 _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3;
        {
        float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
        _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3 = TransformWorldToTangent(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
        }
        float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
        Unity_Normalize_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3);
        float3 _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3;
        Unity_Branch_float3(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3, (_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.xyz), _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3);
        XZ_2 = (float4(_Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3, 1.0));
        }
        
        void Unity_NormalStrength_float(float3 In, float Strength, out float3 Out)
        {
            Out = float3(In.rg * Strength, lerp(1, In.b, saturate(Strength)));
        }
        
        void Unity_NormalBlend_float(float3 A, float3 B, out float3 Out)
        {
            Out = SafeNormalize(float3(A.rg + B.rg, A.b * B.b));
        }
        
        void Unity_Subtract_float(float A, float B, out float Out)
        {
            Out = A - B;
        }
        
        void Unity_Power_float(float A, float B, out float Out)
        {
            Out = pow(A, B);
        }
        
        void Unity_Lerp_float3(float3 A, float3 B, float3 T, out float3 Out)
        {
            Out = lerp(A, B, T);
        }
        
        void Unity_Remap_float(float In, float2 InMinMax, float2 OutMinMax, out float Out)
        {
            Out = OutMinMax.x + (In - InMinMax.x) * (OutMinMax.y - OutMinMax.x) / (InMinMax.y - InMinMax.x);
        }
        
        void Unity_Branch_float(float Predicate, float True, float False, out float Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_Multiply_float3_float3(float3 A, float3 B, out float3 Out)
        {
            Out = A * B;
        }
        
        void Unity_Lerp_float(float A, float B, float T, out float Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float
        {
        };
        
        void SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(float Vector1_32317166, float Vector1_FBE622A2, float Vector1_8C15C351, Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float IN, out float SmoothnessOverlay_1)
        {
        float _Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float = Vector1_32317166;
        float _Property_a00e29241d12f983b30177515b367ec9_Out_0_Float = Vector1_FBE622A2;
        float _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float;
        Unity_Sign_float(_Property_a00e29241d12f983b30177515b367ec9_Out_0_Float, _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float);
        float _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float;
        Unity_Add_float(_Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float, 1, _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float);
        float _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float;
        Unity_Multiply_float_float(_Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float, 0.5, _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float);
        float _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float;
        Unity_Ceiling_float(_Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float);
        float _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float = Vector1_8C15C351;
        float _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        Unity_Lerp_float(_Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float, _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float);
        SmoothnessOverlay_1 = _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        }
        
        void Unity_Lerp_float2(float2 A, float2 B, float2 T, out float2 Out)
        {
            Out = lerp(A, B, T);
        }
        
            // Graph Vertex
            struct VertexDescription
        {
            float3 Position;
            float3 Normal;
            float3 Tangent;
        };
        
        VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
        {
            VertexDescription description = (VertexDescription)0;
            Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430;
            float3 _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3;
            SG_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float(IN.ObjectSpacePosition, _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430, _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3);
            description.Position = _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3;
            description.Normal = IN.ObjectSpaceNormal;
            description.Tangent = IN.ObjectSpaceTangent;
            return description;
        }
        
            // Graph Pixel
            struct SurfaceDescription
        {
            float3 BaseColor;
            float3 Emission;
            float Alpha;
            float3 BentNormal;
            float Smoothness;
            float Occlusion;
            float3 NormalTS;
            float3 Specular;
        };
        
        SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
        {
            SurfaceDescription surface = (SurfaceDescription)0;
            UnityTexture2D _Property_9c271219f828108f958217e55cd6dc1d_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseColorMap);
            float4 _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4 = _BaseTilingOffset;
            float _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean = _BaseUsePlanarUV;
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_f392575634df5b86b63ff6e287282b30;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.uv0 = IN.uv0;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.uv2 = IN.uv2;
            float4 _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_9c271219f828108f958217e55cd6dc1d_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_f392575634df5b86b63ff6e287282b30, _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4);
            float4 _Property_4f676fce92c9378db3c3b92ae77fbff9_Out_0_Vector4 = _BaseColor;
            float4 _Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4, _Property_4f676fce92c9378db3c3b92ae77fbff9_Out_0_Vector4, _Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4);
            UnityTexture2D _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_DetailMap);
            float4 _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4 = _DetailTilingOffset;
            float _Split_9fa8573190399e8da2a843a4cab68164_R_1_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[0];
            float _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[1];
            float _Split_9fa8573190399e8da2a843a4cab68164_B_3_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[2];
            float _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[3];
            float2 _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_R_1_Float, _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float);
            float2 _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_B_3_Float, _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float);
            float2 _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2;
            Unity_TilingAndOffset_float(IN.uv0.xy, _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2, _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2, _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2);
            float4 _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.tex, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.samplerstate, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.GetTransformedUV(_TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2) );
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_R_4_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.r;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.g;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.b;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.a;
            float _Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_R_4_Float, 2, _Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float);
            float _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float;
            Unity_Add_float(_Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float, -1, _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float);
            float _Property_7d68da97cd169d8e8649255aec16158a_Out_0_Float = _DetailAlbedoScale;
            float _Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float;
            Unity_Multiply_float_float(_Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float, _Property_7d68da97cd169d8e8649255aec16158a_Out_0_Float, _Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float);
            float _Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float;
            Unity_Saturate_float(_Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float, _Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float);
            float _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float;
            Unity_Absolute_float(_Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float, _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float);
            Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83;
            float3 _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3;
            SG_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float(_Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4, _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float, _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float, _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83, _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3);
            UnityTexture2D _Property_5ca167b35599f78ab3722ec527327841_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverBaseColorMap);
            float4 _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4 = _CoverTilingOffset;
            float _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean = _CoverUsePlanarUV;
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_ad1db3524021ac898447cb6f6daa4180;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.uv0 = IN.uv0;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.uv2 = IN.uv2;
            float4 _PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_5ca167b35599f78ab3722ec527327841_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_ad1db3524021ac898447cb6f6daa4180, _PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4);
            float4 _Property_b34e94e0b1171480b3e35ff7f4793d7c_Out_0_Vector4 = _CoverBaseColor;
            float4 _Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4, _Property_b34e94e0b1171480b3e35ff7f4793d7c_Out_0_Vector4, _Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4);
            float _Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean = _USEDYNAMICCOVERTSTATICMASKF;
            UnityTexture2D _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskA);
            float4 _UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4 = IN.uv0;
            float4 _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.tex, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.samplerstate, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.GetTransformedUV((_UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4.xy)) );
            float _SampleTexture2D_79111e5af287b084822e60563309a632_R_4_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.r;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_G_5_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.g;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_B_6_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.b;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.a;
            float _Property_c022d8255938838aa73170f05c226269_Out_0_Float = _CoverMaskPower;
            float _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float, _Property_c022d8255938838aa73170f05c226269_Out_0_Float, _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float);
            float _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float;
            Unity_Clamp_float(_Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float, 0, 1, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float);
            float2 _Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2 = float2(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float, _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float);
            float2 _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2, float2(2, 2), _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2);
            float2 _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2;
            Unity_Add_float2(_Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2, float2(-1, -1), _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2);
            float _Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float = _DetailNormalScale;
            float2 _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2, (_Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float.xx), _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2);
            float _Split_492de324af96c482b50573c79f9fb6a0_R_1_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[0];
            float _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[1];
            float _Split_492de324af96c482b50573c79f9fb6a0_B_3_Float = 0;
            float _Split_492de324af96c482b50573c79f9fb6a0_A_4_Float = 0;
            float _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float;
            Unity_DotProduct_float2(_Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float);
            float _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float;
            Unity_Saturate_float(_DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float, _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float);
            float _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float;
            Unity_OneMinus_float(_Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float, _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float);
            float _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float;
            Unity_SquareRoot_float(_OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            float3 _Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3 = float3(_Split_492de324af96c482b50573c79f9fb6a0_R_1_Float, _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            UnityTexture2D _Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseNormalMap);
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv0 = IN.uv0;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv2 = IN.uv2;
            float4 _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4);
            float _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float = _BaseNormalScale;
            float3 _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4.xyz), _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3);
            float3 _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3;
            Unity_NormalBlend_float(_Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3, _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3);
            UnityTexture2D _Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverNormalMap);
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv0 = IN.uv0;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv2 = IN.uv2;
            float4 _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4);
            float _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float = _CoverNormalBlendHardness;
            float3 _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3);
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_R_1_Float = IN.WorldSpaceNormal[0];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float = IN.WorldSpaceNormal[1];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_B_3_Float = IN.WorldSpaceNormal[2];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_A_4_Float = 0;
            float _Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float = _Cover_Amount;
            float _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float = _Cover_Amount_Grow_Speed;
            float _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float;
            Unity_Subtract_float(4, _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float);
            float _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float;
            Unity_Divide_float(_Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float);
            float _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float;
            Unity_Absolute_float(_Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float, _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float);
            float _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float;
            Unity_Power_float(_Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float);
            float _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float;
            Unity_Clamp_float(_Power_c11fc5724f830485a9c4df249a854571_Out_2_Float, 0, 2, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float);
            float _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float;
            Unity_Multiply_float_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float);
            float _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float;
            Unity_Saturate_float(_Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float, _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float);
            float _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float;
            Unity_Clamp_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, 0, 0.9999, _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float);
            float _Property_89633a46f34e1f8996557a9178d78478_Out_0_Float = _Cover_Max_Angle;
            float _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float;
            Unity_Divide_float(_Property_89633a46f34e1f8996557a9178d78478_Out_0_Float, 45, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float);
            float _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float;
            Unity_OneMinus_float(_Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float);
            float _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float;
            Unity_Subtract_float(_Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float, _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float);
            float _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float;
            Unity_Clamp_float(_Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float, 0, 2, _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
            float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
            Unity_Divide_float(1, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float);
            float _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_67dcc607b6da848097d3412324311616_Out_3_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float, _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float);
            float _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float;
            Unity_Absolute_float(_Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float, _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float);
            float _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float = _CoverHardness;
            float _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float;
            Unity_Power_float(_Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float);
            float _Property_f8753bb05d835089bda460d144f93c48_Out_0_Float = _Cover_Min_Height;
            float _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float;
            Unity_OneMinus_float(_Property_f8753bb05d835089bda460d144f93c48_Out_0_Float, _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float);
            float _Split_c66e04f85a2a7f87884040056599e65d_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
            float _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
            float _Split_c66e04f85a2a7f87884040056599e65d_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
            float _Split_c66e04f85a2a7f87884040056599e65d_A_4_Float = 0;
            float _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float;
            Unity_Add_float(_OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float, _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float);
            float _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, 1, _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
            float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
            Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, 0, 1, _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float);
            float _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float = _Cover_Min_Height_Blending;
            float _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float, _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float);
            float _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float;
            Unity_Divide_float(_Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float);
            float _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float;
            Unity_OneMinus_float(_Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float, _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float);
            float _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float;
            Unity_Add_float(_OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float, -0.5, _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
            float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
            Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, 0, 1, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float);
            float _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float;
            Unity_Add_float(_Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float, _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float);
            float _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float;
            Unity_Clamp_float(_Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float, 0, 1, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float);
            float _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float;
            Unity_Multiply_float_float(_Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float);
            float _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float;
            Unity_Multiply_float_float(_Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float);
            float3 _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3, (_Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float.xxx), _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3);
            float3 _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3;
            {
                float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
                _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3 = TransformTangentToWorldDir(_Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3.xyz, tangentTransform, false).xyz;
            }
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_R_1_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[0];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[1];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_B_3_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[2];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_A_4_Float = 0;
            float _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float;
            Unity_Multiply_float_float(_Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float);
            float _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float);
            float _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float);
            float _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float, _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float);
            UnityTexture2D _Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_36e64648ad8a6a849bc794b8693519da;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv0 = IN.uv0;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv2 = IN.uv2;
            float4 _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_36e64648ad8a6a849bc794b8693519da, _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4);
            float _Split_198ec92f3e753d8a9ad50db7d6527324_R_1_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[0];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[1];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[2];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[3];
            float _Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float = _CoverHeightMapMin;
            float _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float = _CoverHeightMapMax;
            float2 _Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2 = float2(_Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float, _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float);
            float _Property_277f22c36084858981418fa95133a562_Out_0_Float = _CoverHeightMapOffset;
            float2 _Add_53997153562831859cc7b582f3068877_Out_2_Vector2;
            Unity_Add_float2(_Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2, (_Property_277f22c36084858981418fa95133a562_Out_0_Float.xx), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2);
            float _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float, float2 (0, 1), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float);
            float _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float, _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float);
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float = IN.VertexColor[0];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float = IN.VertexColor[1];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_B_3_Float = IN.VertexColor[2];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_A_4_Float = IN.VertexColor[3];
            float _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float, _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float, _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float);
            float _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float;
            Unity_Saturate_float(_Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float);
            float _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float);
            float _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float;
            Unity_Branch_float(_Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float);
            float3 _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3;
            Unity_Lerp_float3(_BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3, (_Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4.xyz), (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxx), _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3);
            float4 _Property_e687576468764d85b6b46dca96d8a8e3_Out_0_Vector4 = _WetColor;
            float3 _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3;
            Unity_Multiply_float3_float3((_Property_e687576468764d85b6b46dca96d8a8e3_Out_0_Vector4.xyz), _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3, _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3);
            float _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float;
            Unity_OneMinus_float(_Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float);
            float3 _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
            Unity_Lerp_float3(_Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3, _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3, (_OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float.xxx), _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3);
            UnityTexture2D _Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv0 = IN.uv0;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv2 = IN.uv2;
            float4 _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4);
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_R_1_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[0];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[1];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_B_3_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[2];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[3];
            float _Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float = _BaseAORemapMin;
            float _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float = _BaseAORemapMax;
            float2 _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2 = float2(_Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float, _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float);
            float _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float, float2 (0, 1), _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2, _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float);
            float _Property_e353baf414594b8882fb914562e81165_Out_0_Float = _BaseSmoothnessRemapMin;
            float _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float = _BaseSmoothnessRemapMax;
            float2 _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2 = float2(_Property_e353baf414594b8882fb914562e81165_Out_0_Float, _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float);
            float _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float, float2 (0, 1), _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2, _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float);
            float _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float, 2, _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float);
            float _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float;
            Unity_Add_float(_Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float, -1, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float);
            float _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float = _DetailSmoothnessScale;
            float _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float;
            Unity_Multiply_float_float(_Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float, _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float);
            float _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float;
            Unity_Saturate_float(_Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float, _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float);
            float _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float;
            Unity_Absolute_float(_Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float);
            Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da;
            float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float;
            SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(_Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float);
            float _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float;
            Unity_Saturate_float(_BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float2 _Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2 = float2(_Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float _Property_5e08cfb127183a8993376f9087501eee_Out_0_Float = _CoverAORemapMin;
            float _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float = _CoverAORemapMax;
            float2 _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2 = float2(_Property_5e08cfb127183a8993376f9087501eee_Out_0_Float, _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float);
            float _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float, float2 (0, 1), _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2, _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float);
            float _Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float = _CoverSmoothnessRemapMin;
            float _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float = _CoverSmoothnessRemapMax;
            float2 _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2 = float2(_Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float, _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float);
            float _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float, float2 (0, 1), _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2 = float2(_Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2;
            Unity_Lerp_float2(_Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2, _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xx), _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2);
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_R_1_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[0];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[1];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_B_3_Float = 0;
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_A_4_Float = 0;
            float _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float = _WetSmoothness;
            float _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            Unity_Lerp_float(_Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float, _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float, _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float);
            float _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float = _CoverNormalScale;
            float3 _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3);
            float3 _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxx), _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3);
            UnityTexture2D _Property_f617479b11216b84b89956263f8d3c08_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_SpecularColorMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.uv0 = IN.uv0;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.uv2 = IN.uv2;
            float4 _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_f617479b11216b84b89956263f8d3c08_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d, _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4);
            float4 _Property_112303b9c27a1284b20f0a5c49fb436a_Out_0_Vector4 = _SpecularColor;
            float4 _Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4, _Property_112303b9c27a1284b20f0a5c49fb436a_Out_0_Vector4, _Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4);
            UnityTexture2D _Property_0c768f7d1094a8878d837f25970dbd49_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverSpecularColorMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_4b88db16993b7d84a6c9e021b5992a38;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.uv0 = IN.uv0;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.uv2 = IN.uv2;
            float4 _PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_0c768f7d1094a8878d837f25970dbd49_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_4b88db16993b7d84a6c9e021b5992a38, _PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4);
            float4 _Property_51d3c44a7110108d9e8c9a3acf54125f_Out_0_Vector4 = _CoverSpecularColor;
            float4 _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4, _Property_51d3c44a7110108d9e8c9a3acf54125f_Out_0_Vector4, _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4);
            float4 _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4;
            Unity_Lerp_float4(_Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4, _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxxx), _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4);
            surface.BaseColor = _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
            surface.Emission = float3(0, 0, 0);
            surface.Alpha = 1;
            surface.BentNormal = IN.TangentSpaceNormal;
            surface.Smoothness = _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            surface.Occlusion = _Split_beb57fcf05cbb6809f536625bac5fcbc_R_1_Float;
            surface.NormalTS = _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            surface.Specular = (_Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4.xyz);
            return surface;
        }
        
            // --------------------------------------------------
            // Build Graph Inputs
            #ifdef HAVE_VFX_MODIFICATION
            #define VFX_SRP_ATTRIBUTES AttributesMesh
            #define VaryingsMeshType VaryingsMeshToPS
            #define VFX_SRP_VARYINGS VaryingsMeshType
            #define VFX_SRP_SURFACE_INPUTS FragInputs
            #endif
            
        VertexDescriptionInputs AttributesMeshToVertexDescriptionInputs(AttributesMesh input)
        {
            VertexDescriptionInputs output;
            ZERO_INITIALIZE(VertexDescriptionInputs, output);
        
            output.ObjectSpaceNormal =                          input.normalOS;
            output.ObjectSpaceTangent =                         input.tangentOS.xyz;
            output.ObjectSpacePosition =                        input.positionOS;
        
            return output;
        }
        
        VertexDescription GetVertexDescription(AttributesMesh input, float3 timeParameters
        #ifdef HAVE_VFX_MODIFICATION
            , AttributesElement element
        #endif
        )
        {
            // build graph inputs
            VertexDescriptionInputs vertexDescriptionInputs = AttributesMeshToVertexDescriptionInputs(input);
            // Override time parameters with used one (This is required to correctly handle motion vectors for vertex animation based on time)
        
            // evaluate vertex graph
        #ifdef HAVE_VFX_MODIFICATION
            GraphProperties properties;
            ZERO_INITIALIZE(GraphProperties, properties);
        
            // Fetch the vertex graph properties for the particle instance.
            GetElementVertexProperties(element, properties);
        
            VertexDescription vertexDescription = VertexDescriptionFunction(vertexDescriptionInputs, properties);
        #else
            VertexDescription vertexDescription = VertexDescriptionFunction(vertexDescriptionInputs);
        #endif
            return vertexDescription;
        
        }
        
        AttributesMesh ApplyMeshModification(AttributesMesh input, float3 timeParameters
        #ifdef USE_CUSTOMINTERP_SUBSTRUCT
            #ifdef TESSELLATION_ON
            , inout VaryingsMeshToDS varyings
            #else
            , inout VaryingsMeshToPS varyings
            #endif
        #endif
        #ifdef HAVE_VFX_MODIFICATION
                , AttributesElement element
        #endif
            )
        {
            VertexDescription vertexDescription = GetVertexDescription(input, timeParameters
        #ifdef HAVE_VFX_MODIFICATION
                , element
        #endif
            );
        
            // copy graph output to the results
            input.positionOS = vertexDescription.Position;
            input.normalOS = vertexDescription.Normal;
            input.tangentOS.xyz = vertexDescription.Tangent;
        
            
        
            return input;
        }
        
        #if defined(_ADD_CUSTOM_VELOCITY) // For shader graph custom velocity
        // Return precomputed Velocity in object space
        float3 GetCustomVelocity(AttributesMesh input
        #ifdef HAVE_VFX_MODIFICATION
            , AttributesElement element
        #endif
        )
        {
            VertexDescription vertexDescription = GetVertexDescription(input, _TimeParameters.xyz
        #ifdef HAVE_VFX_MODIFICATION
                , element
        #endif
            );
            return vertexDescription.CustomVelocity;
        }
        #endif
        
        FragInputs BuildFragInputs(VaryingsMeshToPS input)
        {
            FragInputs output;
            ZERO_INITIALIZE(FragInputs, output);
        
            // Init to some default value to make the computer quiet (else it output 'divide by zero' warning even if value is not used).
            // TODO: this is a really poor workaround, but the variable is used in a bunch of places
            // to compute normals which are then passed on elsewhere to compute other values...
            output.tangentToWorld = k_identity3x3;
            output.positionSS = input.positionCS;       // input.positionCS is SV_Position
        
            output.positionRWS =                input.positionRWS;
            output.tangentToWorld =             BuildTangentToWorld(input.tangentWS, input.normalWS);
            output.texCoord0 =                  input.texCoord0;
            output.texCoord2 =                  input.texCoord2;
            output.color =                      input.color;
        
        #ifdef HAVE_VFX_MODIFICATION
            // FragInputs from VFX come from two places: Interpolator or CBuffer.
        #if VFX_USE_GRAPH_VALUES
            uint instanceActiveIndex = asuint(UNITY_ACCESS_INSTANCED_PROP(PerInstance, _InstanceActiveIndex));
            /* WARNING: $splice Could not find named fragment 'VFXLoadGraphValues' */
        #endif
        
            /* WARNING: $splice Could not find named fragment 'VFXSetFragInputs' */
        
        #endif
        
            // splice point to copy custom interpolator fields from varyings to frag inputs
            
        
            return output;
        }
        
        // existing HDRP code uses the combined function to go directly from packed to frag inputs
        FragInputs UnpackVaryingsMeshToFragInputs(PackedVaryingsMeshToPS input)
        {
            UNITY_SETUP_INSTANCE_ID(input);
        #if defined(HAVE_VFX_MODIFICATION) && defined(UNITY_INSTANCING_ENABLED)
            unity_InstanceID = input.instanceID;
        #endif
            VaryingsMeshToPS unpacked = UnpackVaryingsMeshToPS(input);
            return BuildFragInputs(unpacked);
        }
            SurfaceDescriptionInputs FragInputsToSurfaceDescriptionInputs(FragInputs input, float3 viewWS)
        {
            SurfaceDescriptionInputs output;
            ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
        
            output.WorldSpaceNormal =                           normalize(input.tangentToWorld[2].xyz);
            #if defined(SHADER_STAGE_RAY_TRACING)
            #else
            #endif
            output.TangentSpaceNormal =                         float3(0.0f, 0.0f, 1.0f);
            output.WorldSpaceTangent =                          input.tangentToWorld[0].xyz;
            output.WorldSpaceBiTangent =                        input.tangentToWorld[1].xyz;
            output.AbsoluteWorldSpacePosition =                 GetAbsolutePositionWS(input.positionRWS);
        
        #if UNITY_UV_STARTS_AT_TOP
        #else
        #endif
        
        
            output.uv0 =                                        input.texCoord0;
            output.uv2 =                                        input.texCoord2;
            output.VertexColor =                                input.color;
        
            // splice point to copy frag inputs custom interpolator pack into the SDI
            
        
            return output;
        }
        
            // --------------------------------------------------
            // Build Surface Data (Specific Material)
        
        void ApplyDecalToSurfaceDataNoNormal(DecalSurfaceData decalSurfaceData, inout SurfaceData surfaceData);
        
        void ApplyDecalAndGetNormal(FragInputs fragInputs, PositionInputs posInput, SurfaceDescription surfaceDescription,
            inout SurfaceData surfaceData)
        {
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
        #ifdef DECAL_NORMAL_BLENDING
            // SG nodes don't ouptut surface gradients, so if decals require surf grad blending, we have to convert
            // the normal to gradient before applying the decal. We then have to resolve the gradient back to world space
            float3 normalTS;
        
            normalTS = SurfaceGradientFromTangentSpaceNormalAndFromTBN(surfaceDescription.NormalTS,
            fragInputs.tangentToWorld[0], fragInputs.tangentToWorld[1]);
        
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, fragInputs.tangentToWorld[2], normalTS);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        
            GetNormalWS_SG(fragInputs, normalTS, surfaceData.normalWS, doubleSidedConstants);
        #else
            // normal delivered to master node
            GetNormalWS(fragInputs, surfaceDescription.NormalTS, surfaceData.normalWS, doubleSidedConstants);
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                // Both uses and modifies 'surfaceData.normalWS'.
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, surfaceData.normalWS.xyz);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        #endif
        }
        void BuildSurfaceData(FragInputs fragInputs, inout SurfaceDescription surfaceDescription, float3 V, PositionInputs posInput, out SurfaceData surfaceData, out float3 bentNormalWS)
        {
            ZERO_INITIALIZE(SurfaceData, surfaceData);
        
            // specularOcclusion need to be init ahead of decal to quiet the compiler that modify the SurfaceData struct
            // however specularOcclusion can come from the graph, so need to be init here so it can be override.
            surfaceData.specularOcclusion = 1.0;
        
            surfaceData.baseColor =                 surfaceDescription.BaseColor;
            surfaceData.perceptualSmoothness =      surfaceDescription.Smoothness;
            surfaceData.ambientOcclusion =          surfaceDescription.Occlusion;
            surfaceData.specularColor =             surfaceDescription.Specular;
        
            #if defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE) || defined(_REFRACTION_THIN)
                if (_EnableSSRefraction)
                {
        
                    surfaceData.transmittanceMask = (1.0 - surfaceDescription.Alpha);
                    surfaceDescription.Alpha = 1.0;
                }
                else
                {
                    surfaceData.ior = 1.0;
                    surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                    surfaceData.atDistance = 1.0;
                    surfaceData.transmittanceMask = 0.0;
                    surfaceDescription.Alpha = 1.0;
                }
            #else
                surfaceData.ior = 1.0;
                surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                surfaceData.atDistance = 1.0;
                surfaceData.transmittanceMask = 0.0;
            #endif
        
            // These static material feature allow compile time optimization
            surfaceData.materialFeatures = MATERIALFEATUREFLAGS_LIT_STANDARD;
            #ifdef _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SUBSURFACE_SCATTERING;
            #endif
        
            #ifdef _MATERIAL_FEATURE_TRANSMISSION
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
            #endif
        
            #ifdef _MATERIAL_FEATURE_ANISOTROPY
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_ANISOTROPY;
        
                // Initialize the normal to something non-zero to avoid a div-zero warning for anisotropy.
                surfaceData.normalWS = float3(0, 1, 0);
            #endif
        
            #ifdef _MATERIAL_FEATURE_IRIDESCENCE
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_IRIDESCENCE;
            #endif
        
            #ifdef _MATERIAL_FEATURE_SPECULAR_COLOR
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SPECULAR_COLOR;
            #endif
        
            #ifdef _MATERIAL_FEATURE_CLEAR_COAT
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_CLEAR_COAT;
            #endif
        
            #if defined (_MATERIAL_FEATURE_SPECULAR_COLOR) && defined (_ENERGY_CONSERVING_SPECULAR)
                // Require to have setup baseColor
                // Reproduce the energy conservation done in legacy Unity. Not ideal but better for compatibility and users can unchek it
                surfaceData.baseColor *= (1.0 - Max3(surfaceData.specularColor.r, surfaceData.specularColor.g, surfaceData.specularColor.b));
            #endif
        
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
            ApplyDecalAndGetNormal(fragInputs, posInput, surfaceDescription, surfaceData);
        
            surfaceData.geomNormalWS = fragInputs.tangentToWorld[2];
        
            surfaceData.tangentWS = normalize(fragInputs.tangentToWorld[0].xyz);    // The tangent is not normalize in tangentToWorld for mikkt. TODO: Check if it expected that we normalize with Morten. Tag: SURFACE_GRADIENT
        
        
            bentNormalWS = surfaceData.normalWS;
        
            surfaceData.tangentWS = Orthonormalize(surfaceData.tangentWS, surfaceData.normalWS);
        
            #ifdef DEBUG_DISPLAY
                if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
                {
                    // TODO: need to update mip info
                    surfaceData.metallic = 0;
                }
        
                // We need to call ApplyDebugToSurfaceData after filling the surfarcedata and before filling builtinData
                // as it can modify attribute use for static lighting
                ApplyDebugToSurfaceData(fragInputs.tangentToWorld, surfaceData);
            #endif
        
            // By default we use the ambient occlusion with Tri-ace trick (apply outside) for specular occlusion.
            // If user provide bent normal then we process a better term
            #if defined(_SPECULAR_OCCLUSION_CUSTOM)
                // Just use the value passed through via the slot (not active otherwise)
            #elif defined(_SPECULAR_OCCLUSION_FROM_AO_BENT_NORMAL)
                // If we have bent normal and ambient occlusion, process a specular occlusion
                surfaceData.specularOcclusion = GetSpecularOcclusionFromBentAO(V, bentNormalWS, surfaceData.normalWS, surfaceData.ambientOcclusion, PerceptualSmoothnessToPerceptualRoughness(surfaceData.perceptualSmoothness));
            #elif defined(_AMBIENT_OCCLUSION) && defined(_SPECULAR_OCCLUSION_FROM_AO)
                surfaceData.specularOcclusion = GetSpecularOcclusionFromAmbientOcclusion(ClampNdotV(dot(surfaceData.normalWS, V)), surfaceData.ambientOcclusion, PerceptualSmoothnessToRoughness(surfaceData.perceptualSmoothness));
            #endif
        
            #if defined(_ENABLE_GEOMETRIC_SPECULAR_AA) && !defined(SHADER_STAGE_RAY_TRACING)
                surfaceData.perceptualSmoothness = GeometricNormalFiltering(surfaceData.perceptualSmoothness, fragInputs.tangentToWorld[2], surfaceDescription.SpecularAAScreenSpaceVariance, surfaceDescription.SpecularAAThreshold);
            #endif
        }
        
            // --------------------------------------------------
            // Get Surface And BuiltinData
        
            void GetSurfaceAndBuiltinData(FragInputs fragInputs, float3 V, inout PositionInputs posInput, out SurfaceData surfaceData, out BuiltinData builtinData RAY_TRACING_OPTIONAL_PARAMETERS)
            {
                // Don't dither if displaced tessellation (we're fading out the displacement instead to match the next LOD)
                #if !defined(SHADER_STAGE_RAY_TRACING) && !defined(_TESSELLATION_DISPLACEMENT)
                #ifdef LOD_FADE_CROSSFADE // enable dithering LOD transition if user select CrossFade transition in LOD group
                LODDitheringTransition(ComputeFadeMaskSeed(V, posInput.positionSS), unity_LODFade.x);
                #endif
                #endif
        
                #ifndef SHADER_UNLIT
                #ifdef _DOUBLESIDED_ON
                    float3 doubleSidedConstants = _DoubleSidedConstants.xyz;
                #else
                    float3 doubleSidedConstants = float3(1.0, 1.0, 1.0);
                #endif
        
                ApplyDoubleSidedFlipOrMirror(fragInputs, doubleSidedConstants); // Apply double sided flip on the vertex normal
                #endif // SHADER_UNLIT
        
                SurfaceDescriptionInputs surfaceDescriptionInputs = FragInputsToSurfaceDescriptionInputs(fragInputs, V);
        
                #if defined(HAVE_VFX_MODIFICATION)
                GraphProperties properties;
                ZERO_INITIALIZE(GraphProperties, properties);
        
                GetElementPixelProperties(fragInputs, properties);
        
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs, properties);
                #else
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs);
                #endif
        
                // Perform alpha test very early to save performance (a killed pixel will not sample textures)
                // TODO: split graph evaluation to grab just alpha dependencies first? tricky..
                #ifdef _ALPHATEST_ON
                    float alphaCutoff = surfaceDescription.AlphaClipThreshold;
                    #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
                    // The TransparentDepthPrepass is also used with SSR transparent.
                    // If an artists enable transaprent SSR but not the TransparentDepthPrepass itself, then we use AlphaClipThreshold
                    // otherwise if TransparentDepthPrepass is enabled we use AlphaClipThresholdDepthPrepass
                    #elif SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_POSTPASS
                    // DepthPostpass always use its own alpha threshold
                    alphaCutoff = surfaceDescription.AlphaClipThresholdDepthPostpass;
                    #elif (SHADERPASS == SHADERPASS_SHADOWS) || (SHADERPASS == SHADERPASS_RAYTRACING_VISIBILITY)
                    // If use shadow threshold isn't enable we don't allow any test
                    #endif
        
                    GENERIC_ALPHA_TEST(surfaceDescription.Alpha, alphaCutoff);
                #endif
        
                #if !defined(SHADER_STAGE_RAY_TRACING) && _DEPTHOFFSET_ON
                ApplyDepthOffsetPositionInput(V, surfaceDescription.DepthOffset, GetViewForwardDir(), GetWorldToHClipMatrix(), posInput);
                #endif
        
                #ifndef SHADER_UNLIT
                float3 bentNormalWS;
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData, bentNormalWS);
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD1
                    float4 lightmapTexCoord1 = fragInputs.texCoord1;
                #else
                    float4 lightmapTexCoord1 = float4(0,0,0,0);
                #endif
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD2
                    float4 lightmapTexCoord2 = fragInputs.texCoord2;
                #else
                    float4 lightmapTexCoord2 = float4(0,0,0,0);
                #endif
        
                // Builtin Data
                // For back lighting we use the oposite vertex normal
                InitBuiltinData(posInput, surfaceDescription.Alpha, bentNormalWS, -fragInputs.tangentToWorld[2], lightmapTexCoord1, lightmapTexCoord2, builtinData);
        
                #else
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData);
        
                ZERO_BUILTIN_INITIALIZE(builtinData); // No call to InitBuiltinData as we don't have any lighting
                builtinData.opacity = surfaceDescription.Alpha;
        
                #if defined(DEBUG_DISPLAY)
                    // Light Layers are currently not used for the Unlit shader (because it is not lit)
                    // But Unlit objects do cast shadows according to their rendering layer mask, which is what we want to
                    // display in the light layers visualization mode, therefore we need the renderingLayers
                    builtinData.renderingLayers = GetMeshRenderingLightLayer();
                #endif
        
                #endif // SHADER_UNLIT
        
                #ifdef _ALPHATEST_ON
                    // Used for sharpening by alpha to mask - Alpha to covertage is only used with depth only and forward pass (no shadow pass, no transparent pass)
                    builtinData.alphaClipTreshold = alphaCutoff;
                #endif
        
                // override sampleBakedGI - not used by Unlit
        
                builtinData.emissiveColor = surfaceDescription.Emission;
        
                // Note this will not fully work on transparent surfaces (can check with _SURFACE_TYPE_TRANSPARENT define)
                // We will always overwrite vt feeback with the nearest. So behind transparent surfaces vt will not be resolved
                // This is a limitation of the current MRT approach.
                #ifdef UNITY_VIRTUAL_TEXTURING
                #endif
        
                #if _DEPTHOFFSET_ON
                builtinData.depthOffset = surfaceDescription.DepthOffset;
                #endif
        
                // TODO: We should generate distortion / distortionBlur for non distortion pass
                #if (SHADERPASS == SHADERPASS_DISTORTION)
                builtinData.distortion = surfaceDescription.Distortion;
                builtinData.distortionBlur = surfaceDescription.DistortionBlur;
                #endif
        
                #ifndef SHADER_UNLIT
                // PostInitBuiltinData call ApplyDebugToBuiltinData
                PostInitBuiltinData(V, posInput, surfaceData, builtinData);
                #else
                ApplyDebugToBuiltinData(builtinData);
                #endif
        
                RAY_TRACING_OPTIONAL_ALPHA_TEST_PASS
            }
        
            // --------------------------------------------------
            // Main
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassFullScreenDebug.hlsl"
        
            // --------------------------------------------------
            // Visual Effect Vertex Invocations
        
        	#ifdef HAVE_VFX_MODIFICATION
        	#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
        	#endif
        
            ENDHLSL
        }
        Pass
        {
            Name "DepthOnly"
            Tags
            {
                "LightMode" = "DepthOnly"
            }
        
            // Render State
            Cull [_CullMode]
        ZWrite On
        Stencil
        {
        WriteMask [_StencilWriteMaskDepth]
        Ref [_StencilRefDepth]
        CompFront Always
        PassFront Replace
        CompBack Always
        PassBack Replace
        }
        
            // Debug
            // <None>
        
            // --------------------------------------------------
            // Pass
        
            HLSLPROGRAM
        
            // Pragmas
            #pragma multi_compile _ DOTS_INSTANCING_ON
        #pragma instancing_options renderinglayer
        #pragma target 4.5
        #pragma vertex Vert
        #pragma fragment Frag
        #pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal switch
        #pragma multi_compile_instancing
        
            // Keywords
            #pragma multi_compile _ WRITE_NORMAL_BUFFER
        #pragma multi_compile_fragment _ WRITE_MSAA_DEPTH
        #pragma shader_feature _ _SURFACE_TYPE_TRANSPARENT
        #pragma shader_feature_local _ _DOUBLESIDED_ON
        #pragma shader_feature_local _ _ADD_PRECOMPUTED_VELOCITY
        #pragma shader_feature_local _ _TRANSPARENT_WRITES_MOTION_VEC
        #pragma shader_feature_local_fragment _ _ENABLE_FOG_ON_TRANSPARENT
        #pragma multi_compile _ LOD_FADE_CROSSFADE
        #pragma shader_feature_local_fragment _ _DISABLE_DECALS
        #pragma shader_feature_local_raytracing _ _DISABLE_DECALS
        #pragma shader_feature_local_fragment _ _DISABLE_SSR
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR
        #pragma shader_feature_local_fragment _ _DISABLE_SSR_TRANSPARENT
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR_TRANSPARENT
        #pragma multi_compile _ WRITE_DECAL_BUFFER
        #pragma shader_feature_local _ _REFRACTION_PLANE _REFRACTION_SPHERE _REFRACTION_THIN
            // GraphKeywords: <None>
        
            // For custom interpolators to inject a substruct definition before FragInputs definition,
            // allowing for FragInputs to capture CI's intended for ShaderGraph's SDI.
            struct CustomInterpolators
        {
        };
        #define USE_CUSTOMINTERP_SUBSTRUCT
        
        
        
            // TODO: Merge FragInputsVFX substruct with CustomInterpolators.
        	#ifdef HAVE_VFX_MODIFICATION
        	struct FragInputsVFX
            {
                /* WARNING: $splice Could not find named fragment 'FragInputsVFX' */
            };
            #endif
        
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/GeometricTools.hlsl" // Required by Tessellation.hlsl
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Tessellation.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl" // Required to be include before we include properties as it define DECLARE_STACK_CB
            // Always include Shader Graph version
            // Always include last to avoid double macros
            #include "Packages/com.unity.shadergraph/ShaderGraphLibrary/Functions.hlsl" // Need to be here for Gradient struct definition
        
            // --------------------------------------------------
            // Defines
        
            // Attribute
            #define ATTRIBUTES_NEED_NORMAL
            #define ATTRIBUTES_NEED_TANGENT
            #define ATTRIBUTES_NEED_TEXCOORD0
            #define ATTRIBUTES_NEED_TEXCOORD2
            #define ATTRIBUTES_NEED_COLOR
            #define VARYINGS_NEED_POSITION_WS
            #define VARYINGS_NEED_TANGENT_TO_WORLD
            #define VARYINGS_NEED_TEXCOORD0
            #define VARYINGS_NEED_TEXCOORD2
            #define VARYINGS_NEED_COLOR
        
            #define HAVE_MESH_MODIFICATION
        
            //Strip down the FragInputs.hlsl (on graphics), so we can only optimize the interpolators we use.
            //if by accident something requests contents of FragInputs.hlsl, it will be caught as a compiler error
            //Frag inputs stripping is only enabled when FRAG_INPUTS_ENABLE_STRIPPING is set
            #if !defined(SHADER_STAGE_RAY_TRACING) && SHADERPASS != SHADERPASS_RAYTRACING_GBUFFER && SHADERPASS != SHADERPASS_FULL_SCREEN_DEBUG
            #define FRAG_INPUTS_ENABLE_STRIPPING
            #endif
            #define FRAG_INPUTS_USE_TEXCOORD0
            #define FRAG_INPUTS_USE_TEXCOORD2
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/FragInputs.hlsl"
        
        
        
            #define SHADERPASS SHADERPASS_DEPTH_ONLY
        #define RAYTRACING_SHADER_GRAPH_DEFAULT
        
        
            // Following two define are a workaround introduce in 10.1.x for RaytracingQualityNode
            // The ShaderGraph don't support correctly migration of this node as it serialize all the node data
            // in the json file making it impossible to uprgrade. Until we get a fix, we do a workaround here
            // to still allow us to rename the field and keyword of this node without breaking existing code.
            #ifdef RAYTRACING_SHADER_GRAPH_DEFAULT
            #define RAYTRACING_SHADER_GRAPH_HIGH
            #endif
        
            #ifdef RAYTRACING_SHADER_GRAPH_RAYTRACED
            #define RAYTRACING_SHADER_GRAPH_LOW
            #endif
            // end
        
            #ifndef SHADER_UNLIT
            // We need isFrontFace when using double sided - it is not required for unlit as in case of unlit double sided only drive the cullmode
            // VARYINGS_NEED_CULLFACE can be define by VaryingsMeshToPS.FaceSign input if a IsFrontFace Node is included in the shader graph.
            #if defined(_DOUBLESIDED_ON) && !defined(VARYINGS_NEED_CULLFACE)
                #define VARYINGS_NEED_CULLFACE
            #endif
            #endif
        
            // Specific Material Define
        #define _MATERIAL_FEATURE_SPECULAR_COLOR 1
        #define _AMBIENT_OCCLUSION 1
        #define _SPECULAR_OCCLUSION_FROM_AO 1
        #define _ENERGY_CONSERVING_SPECULAR 1
        
        // If we use subsurface scattering, enable output split lighting (for forward pass)
        #if defined(_MATERIAL_FEATURE_SUBSURFACE_SCATTERING) && !defined(_SURFACE_TYPE_TRANSPARENT)
            #define OUTPUT_SPLIT_LIGHTING
        #endif
        
        // This shader support recursive rendering for raytracing
        #define HAVE_RECURSIVE_RENDERING
        
        // In Path Tracing, For all single-sided, refractive materials, we want to force a thin refraction model
        #if (SHADERPASS == SHADERPASS_PATH_TRACING) && !defined(_DOUBLESIDED_ON) && (defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE))
            #undef  _REFRACTION_PLANE
            #undef  _REFRACTION_SPHERE
            #define _REFRACTION_THIN
        #endif
            // Caution: we can use the define SHADER_UNLIT onlit after the above Material include as it is the Unlit template who define it
        
            // To handle SSR on transparent correctly with a possibility to enable/disable it per framesettings
            // we should have a code like this:
            // if !defined(_DISABLE_SSR_TRANSPARENT)
            // pragma multi_compile _ WRITE_NORMAL_BUFFER
            // endif
            // i.e we enable the multicompile only if we can receive SSR or not, and then C# code drive
            // it based on if SSR transparent in frame settings and not (and stripper can strip it).
            // this is currently not possible with our current preprocessor as _DISABLE_SSR_TRANSPARENT is a keyword not a define
            // so instead we used this and chose to pay the extra cost of normal write even if SSR transaprent is disabled.
            // Ideally the shader graph generator should handle it but condition below can't be handle correctly for now.
            #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
            #if !defined(_DISABLE_SSR_TRANSPARENT) && !defined(SHADER_UNLIT)
                #define WRITE_NORMAL_BUFFER
            #endif
            #endif
        
            #ifndef DEBUG_DISPLAY
                // In case of opaque we don't want to perform the alpha test, it is done in depth prepass and we use depth equal for ztest (setup from UI)
                // Don't do it with debug display mode as it is possible there is no depth prepass in this case
                #if !defined(_SURFACE_TYPE_TRANSPARENT)
                    #if SHADERPASS == SHADERPASS_FORWARD
                    #define SHADERPASS_FORWARD_BYPASS_ALPHA_TEST
                    #elif SHADERPASS == SHADERPASS_GBUFFER
                    #define SHADERPASS_GBUFFER_BYPASS_ALPHA_TEST
                    #endif
                #endif
            #endif
        
            // Define _DEFERRED_CAPABLE_MATERIAL for shader capable to run in deferred pass
            #if defined(SHADER_LIT) && !defined(_SURFACE_TYPE_TRANSPARENT)
                #define _DEFERRED_CAPABLE_MATERIAL
            #endif
        
            // Translate transparent motion vector define
            #if defined(_TRANSPARENT_WRITES_MOTION_VEC) && defined(_SURFACE_TYPE_TRANSPARENT)
                #define _WRITE_TRANSPARENT_MOTION_VECTOR
            #endif
        
            // -- Graph Properties
            CBUFFER_START(UnityPerMaterial)
        float4 _BaseColor;
        float4 _BaseColorMap_TexelSize;
        float _BaseUsePlanarUV;
        float4 _BaseTilingOffset;
        float4 _SpecularColor;
        float4 _SpecularColorMap_TexelSize;
        float4 _BaseNormalMap_TexelSize;
        float _BaseNormalScale;
        float4 _BaseMaskMap_TexelSize;
        float _BaseAORemapMin;
        float _BaseAORemapMax;
        float _BaseSmoothnessRemapMin;
        float _BaseSmoothnessRemapMax;
        float _USEDYNAMICCOVERTSTATICMASKF;
        float4 _CoverMaskA_TexelSize;
        float _CoverMaskPower;
        float _Cover_Amount;
        float _Cover_Amount_Grow_Speed;
        float _Cover_Max_Angle;
        float _Cover_Min_Height;
        float _Cover_Min_Height_Blending;
        float4 _CoverBaseColor;
        float4 _CoverBaseColorMap_TexelSize;
        float _CoverUsePlanarUV;
        float4 _CoverTilingOffset;
        float4 _CoverSpecularColor;
        float4 _CoverSpecularColorMap_TexelSize;
        float4 _CoverNormalMap_TexelSize;
        float _CoverNormalScale;
        float _CoverNormalBlendHardness;
        float _CoverHardness;
        float _CoverHeightMapMin;
        float _CoverHeightMapMax;
        float _CoverHeightMapOffset;
        float4 _CoverMaskMap_TexelSize;
        float _CoverAORemapMin;
        float _CoverAORemapMax;
        float _CoverSmoothnessRemapMin;
        float _CoverSmoothnessRemapMax;
        float4 _DetailMap_TexelSize;
        float4 _DetailTilingOffset;
        float _DetailAlbedoScale;
        float _DetailNormalScale;
        float _DetailSmoothnessScale;
        float4 _WetColor;
        float _WetSmoothness;
        float4 _EmissionColor;
        float _UseShadowThreshold;
        float4 _DoubleSidedConstants;
        float _BlendMode;
        float _EnableBlendModePreserveSpecularLighting;
        float _RayTracing;
        float _RefractionModel;
        CBUFFER_END
        
        
        // Object and Global properties
        SAMPLER(SamplerState_Linear_Repeat);
        SAMPLER(SamplerState_Linear_Repeat_Aniso8);
        TEXTURE2D(_BaseColorMap);
        SAMPLER(sampler_BaseColorMap);
        TEXTURE2D(_SpecularColorMap);
        SAMPLER(sampler_SpecularColorMap);
        TEXTURE2D(_BaseNormalMap);
        SAMPLER(sampler_BaseNormalMap);
        TEXTURE2D(_BaseMaskMap);
        SAMPLER(sampler_BaseMaskMap);
        TEXTURE2D(_CoverMaskA);
        SAMPLER(sampler_CoverMaskA);
        TEXTURE2D(_CoverBaseColorMap);
        SAMPLER(sampler_CoverBaseColorMap);
        TEXTURE2D(_CoverSpecularColorMap);
        SAMPLER(sampler_CoverSpecularColorMap);
        TEXTURE2D(_CoverNormalMap);
        SAMPLER(sampler_CoverNormalMap);
        TEXTURE2D(_CoverMaskMap);
        SAMPLER(sampler_CoverMaskMap);
        TEXTURE2D(_DetailMap);
        SAMPLER(sampler_DetailMap);
        
            // -- Property used by ScenePickingPass
            #ifdef SCENEPICKINGPASS
            float4 _SelectionID;
            #endif
        
            // -- Properties used by SceneSelectionPass
            #ifdef SCENESELECTIONPASS
            int _ObjectId;
            int _PassValue;
            #endif
        
            // Includes
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl"
        #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/NormalSurfaceGradient.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/BuiltinUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/DecalUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitDecalData.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderGraphFunctions.hlsl"
        	#include "./NM_Object_VSPro_Indirect.cginc"
        
            // --------------------------------------------------
            // Structs and Packing
        
            struct AttributesMesh
        {
             float3 positionOS : POSITION;
             float3 normalOS : NORMAL;
             float4 tangentOS : TANGENT;
             float4 uv0 : TEXCOORD0;
             float4 uv2 : TEXCOORD2;
             float4 color : COLOR;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : INSTANCEID_SEMANTIC;
            #endif
        };
        struct VaryingsMeshToPS
        {
            SV_POSITION_QUALIFIERS float4 positionCS : SV_POSITION;
             float3 positionRWS;
             float3 normalWS;
             float4 tangentWS;
             float4 texCoord0;
             float4 texCoord2;
             float4 color;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : CUSTOM_INSTANCE_ID;
            #endif
        };
        struct VertexDescriptionInputs
        {
             float3 ObjectSpaceNormal;
             float3 ObjectSpaceTangent;
             float3 ObjectSpacePosition;
        };
        struct SurfaceDescriptionInputs
        {
             float3 WorldSpaceNormal;
             float3 TangentSpaceNormal;
             float3 WorldSpaceTangent;
             float3 WorldSpaceBiTangent;
             float3 AbsoluteWorldSpacePosition;
             float4 uv0;
             float4 uv2;
             float4 VertexColor;
        };
        struct PackedVaryingsMeshToPS
        {
            SV_POSITION_QUALIFIERS float4 positionCS : SV_POSITION;
             float4 tangentWS : INTERP0;
             float4 texCoord0 : INTERP1;
             float4 texCoord2 : INTERP2;
             float4 color : INTERP3;
             float3 positionRWS : INTERP4;
             float3 normalWS : INTERP5;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : CUSTOM_INSTANCE_ID;
            #endif
        };
        
            PackedVaryingsMeshToPS PackVaryingsMeshToPS (VaryingsMeshToPS input)
        {
            PackedVaryingsMeshToPS output;
            ZERO_INITIALIZE(PackedVaryingsMeshToPS, output);
            output.positionCS = input.positionCS;
            output.tangentWS.xyzw = input.tangentWS;
            output.texCoord0.xyzw = input.texCoord0;
            output.texCoord2.xyzw = input.texCoord2;
            output.color.xyzw = input.color;
            output.positionRWS.xyz = input.positionRWS;
            output.normalWS.xyz = input.normalWS;
            #if UNITY_ANY_INSTANCING_ENABLED
            output.instanceID = input.instanceID;
            #endif
            return output;
        }
        
        VaryingsMeshToPS UnpackVaryingsMeshToPS (PackedVaryingsMeshToPS input)
        {
            VaryingsMeshToPS output;
            output.positionCS = input.positionCS;
            output.tangentWS = input.tangentWS.xyzw;
            output.texCoord0 = input.texCoord0.xyzw;
            output.texCoord2 = input.texCoord2.xyzw;
            output.color = input.color.xyzw;
            output.positionRWS = input.positionRWS.xyz;
            output.normalWS = input.normalWS.xyz;
            #if UNITY_ANY_INSTANCING_ENABLED
            output.instanceID = input.instanceID;
            #endif
            return output;
        }
        
        
            // --------------------------------------------------
            // Graph
        
        
            // Graph Functions
            
        void AddPragma_float(float3 A, out float3 Out){
        #pragma instancing_options procedural:setupVSPro
        Out = A;
        }
        
        struct Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float
        {
        };
        
        void SG_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float(float3 Vector3_314C8600, Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float IN, out float3 ObjectSpacePosition_1)
        {
        float3 _Property_5ec158abd968858c9d31ab40df5e9e6f_Out_0_Vector3 = Vector3_314C8600;
        float3 _InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3;
        InjectSetup_float(_Property_5ec158abd968858c9d31ab40df5e9e6f_Out_0_Vector3, _InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3);
        float3 _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3;
        AddPragma_float(_InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3, _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3);
        ObjectSpacePosition_1 = _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3;
        }
        
        void Unity_Combine_float(float R, float G, float B, float A, out float4 RGBA, out float3 RGB, out float2 RG)
        {
            RGBA = float4(R, G, B, A);
            RGB = float3(R, G, B);
            RG = float2(R, G);
        }
        
        void Unity_Divide_float(float A, float B, out float Out)
        {
            Out = A / B;
        }
        
        void Unity_Multiply_float4_float4(float4 A, float4 B, out float4 Out)
        {
        Out = A * B;
        }
        
        void Unity_Branch_float4(float Predicate, float4 True, float4 False, out float4 Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_TilingAndOffset_float(float2 UV, float2 Tiling, float2 Offset, out float2 Out)
        {
            Out = UV * Tiling + Offset;
        }
        
        void Unity_Branch_float2(float Predicate, float2 True, float2 False, out float2 Out)
        {
            Out = Predicate ? True : False;
        }
        
        struct Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float
        {
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_2EBA7A3B, float Boolean_7ABB9909, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float IN, out float4 XZ_2)
        {
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Property_30834f691775a0898a45b1c868520436_Out_0_Boolean = Boolean_7ABB9909;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4 = Vector4_2EBA7A3B;
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[0];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[1];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[2];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[3];
        float _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float;
        Unity_Divide_float(1, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4 = IN.uv0;
        float4 _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4 = IN.uv2;
        float4 _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4;
        Unity_Branch_float4(_Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean, _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4, _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4, _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4);
        float2 _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float);
        float2 _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float);
        float2 _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4.xy), _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2, _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2, _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2);
        float2 _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2;
        Unity_Branch_float2(_Property_30834f691775a0898a45b1c868520436_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2, _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2);
        UnitySamplerState _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2) );
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        XZ_2 = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4;
        }
        
        void Unity_Multiply_float_float(float A, float B, out float Out)
        {
            Out = A * B;
        }
        
        void Unity_Add_float(float A, float B, out float Out)
        {
            Out = A + B;
        }
        
        void Unity_Saturate_float(float In, out float Out)
        {
            Out = saturate(In);
        }
        
        void Unity_Absolute_float(float In, out float Out)
        {
            Out = abs(In);
        }
        
        void Unity_SquareRoot_float4(float4 In, out float4 Out)
        {
            Out = sqrt(In);
        }
        
        void Unity_Sign_float(float In, out float Out)
        {
            Out = sign(In);
        }
        
        void Unity_Ceiling_float(float In, out float Out)
        {
            Out = ceil(In);
        }
        
        void Unity_Lerp_float4(float4 A, float4 B, float4 T, out float4 Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float
        {
        };
        
        void SG_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float(float4 Color_9AA111D3, float Vector1_FBE622A2, float Vector1_8C15C351, Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float IN, out float3 OutVector4_1)
        {
        float4 _Property_012510d774fb7f8b860f5270dca4500f_Out_0_Vector4 = Color_9AA111D3;
        float4 _SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4;
        Unity_SquareRoot_float4(_Property_012510d774fb7f8b860f5270dca4500f_Out_0_Vector4, _SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4);
        float _Property_a00e29241d12f983b30177515b367ec9_Out_0_Float = Vector1_FBE622A2;
        float _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float;
        Unity_Sign_float(_Property_a00e29241d12f983b30177515b367ec9_Out_0_Float, _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float);
        float _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float;
        Unity_Add_float(_Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float, 1, _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float);
        float _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float;
        Unity_Multiply_float_float(_Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float, 0.5, _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float);
        float _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float;
        Unity_Ceiling_float(_Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float);
        float _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float = Vector1_8C15C351;
        float _Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float;
        Unity_Multiply_float_float(_Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float);
        float4 _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4;
        Unity_Lerp_float4(_SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4, (_Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float.xxxx), (_Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float.xxxx), _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4);
        float4 _Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4, _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4, _Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4);
        OutVector4_1 = (_Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4.xyz);
        }
        
        void Unity_Clamp_float(float In, float Min, float Max, out float Out)
        {
            Out = clamp(In, Min, Max);
        }
        
        void Unity_Multiply_float2_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A * B;
        }
        
        void Unity_Add_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A + B;
        }
        
        void Unity_DotProduct_float2(float2 A, float2 B, out float Out)
        {
            Out = dot(A, B);
        }
        
        void Unity_OneMinus_float(float In, out float Out)
        {
            Out = 1 - In;
        }
        
        void Unity_SquareRoot_float(float In, out float Out)
        {
            Out = sqrt(In);
        }
        
        void Unity_Sign_float3(float3 In, out float3 Out)
        {
            Out = sign(In);
        }
        
        void Unity_Normalize_float3(float3 In, out float3 Out)
        {
            Out = normalize(In);
        }
        
        void Unity_Branch_float3(float Predicate, float3 True, float3 False, out float3 Out)
        {
            Out = Predicate ? True : False;
        }
        
        struct Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float
        {
        float3 WorldSpaceNormal;
        float3 WorldSpaceTangent;
        float3 WorldSpaceBiTangent;
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_82674548, float Boolean_9FF42DF6, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float IN, out float4 XZ_2)
        {
        float _Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean = Boolean_9FF42DF6;
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4 = Vector4_82674548;
        float _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[0];
        float _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[1];
        float _Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[2];
        float _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[3];
        float _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float;
        Unity_Divide_float(1, _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4 = IN.uv0;
        float4 _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4 = IN.uv2;
        float4 _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4;
        Unity_Branch_float4(_Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean, _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4, _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4, _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4);
        float2 _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float);
        float2 _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float, _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float);
        float2 _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4.xy), _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2, _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2, _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2);
        float2 _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2;
        Unity_Branch_float2(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2, _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2);
        UnitySamplerState _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2) );
        _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.rgb = UnpackNormal(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4);
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        float2 _Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2 = float2(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float, _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float);
        float3 _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3;
        Unity_Sign_float3(IN.WorldSpaceNormal, _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3);
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_R_1_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[0];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[1];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_B_3_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[2];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_A_4_Float = 0;
        float2 _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2 = float2(_Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float, 1);
        float2 _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2;
        Unity_Multiply_float2_float2(_Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2, _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2, _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2);
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float = IN.WorldSpaceNormal[0];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float = IN.WorldSpaceNormal[1];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float = IN.WorldSpaceNormal[2];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_A_4_Float = 0;
        float2 _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2 = float2(_Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float);
        float2 _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2;
        Unity_Add_float2(_Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2, _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2, _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2);
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[0];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[1];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_B_3_Float = 0;
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_A_4_Float = 0;
        float _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float;
        Unity_Multiply_float_float(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float);
        float3 _Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3 = float3(_Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float, _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float);
        float3 _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3;
        {
        float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
        _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3 = TransformWorldToTangent(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
        }
        float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
        Unity_Normalize_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3);
        float3 _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3;
        Unity_Branch_float3(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3, (_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.xyz), _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3);
        XZ_2 = (float4(_Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3, 1.0));
        }
        
        void Unity_NormalStrength_float(float3 In, float Strength, out float3 Out)
        {
            Out = float3(In.rg * Strength, lerp(1, In.b, saturate(Strength)));
        }
        
        void Unity_NormalBlend_float(float3 A, float3 B, out float3 Out)
        {
            Out = SafeNormalize(float3(A.rg + B.rg, A.b * B.b));
        }
        
        void Unity_Subtract_float(float A, float B, out float Out)
        {
            Out = A - B;
        }
        
        void Unity_Power_float(float A, float B, out float Out)
        {
            Out = pow(A, B);
        }
        
        void Unity_Lerp_float3(float3 A, float3 B, float3 T, out float3 Out)
        {
            Out = lerp(A, B, T);
        }
        
        void Unity_Remap_float(float In, float2 InMinMax, float2 OutMinMax, out float Out)
        {
            Out = OutMinMax.x + (In - InMinMax.x) * (OutMinMax.y - OutMinMax.x) / (InMinMax.y - InMinMax.x);
        }
        
        void Unity_Branch_float(float Predicate, float True, float False, out float Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_Multiply_float3_float3(float3 A, float3 B, out float3 Out)
        {
            Out = A * B;
        }
        
        void Unity_Lerp_float(float A, float B, float T, out float Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float
        {
        };
        
        void SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(float Vector1_32317166, float Vector1_FBE622A2, float Vector1_8C15C351, Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float IN, out float SmoothnessOverlay_1)
        {
        float _Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float = Vector1_32317166;
        float _Property_a00e29241d12f983b30177515b367ec9_Out_0_Float = Vector1_FBE622A2;
        float _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float;
        Unity_Sign_float(_Property_a00e29241d12f983b30177515b367ec9_Out_0_Float, _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float);
        float _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float;
        Unity_Add_float(_Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float, 1, _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float);
        float _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float;
        Unity_Multiply_float_float(_Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float, 0.5, _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float);
        float _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float;
        Unity_Ceiling_float(_Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float);
        float _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float = Vector1_8C15C351;
        float _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        Unity_Lerp_float(_Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float, _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float);
        SmoothnessOverlay_1 = _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        }
        
        void Unity_Lerp_float2(float2 A, float2 B, float2 T, out float2 Out)
        {
            Out = lerp(A, B, T);
        }
        
            // Graph Vertex
            struct VertexDescription
        {
            float3 Position;
            float3 Normal;
            float3 Tangent;
        };
        
        VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
        {
            VertexDescription description = (VertexDescription)0;
            Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430;
            float3 _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3;
            SG_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float(IN.ObjectSpacePosition, _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430, _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3);
            description.Position = _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3;
            description.Normal = IN.ObjectSpaceNormal;
            description.Tangent = IN.ObjectSpaceTangent;
            return description;
        }
        
            // Graph Pixel
            struct SurfaceDescription
        {
            float3 BaseColor;
            float3 Emission;
            float Alpha;
            float3 BentNormal;
            float Smoothness;
            float Occlusion;
            float3 NormalTS;
            float3 Specular;
        };
        
        SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
        {
            SurfaceDescription surface = (SurfaceDescription)0;
            UnityTexture2D _Property_9c271219f828108f958217e55cd6dc1d_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseColorMap);
            float4 _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4 = _BaseTilingOffset;
            float _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean = _BaseUsePlanarUV;
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_f392575634df5b86b63ff6e287282b30;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.uv0 = IN.uv0;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.uv2 = IN.uv2;
            float4 _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_9c271219f828108f958217e55cd6dc1d_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_f392575634df5b86b63ff6e287282b30, _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4);
            float4 _Property_4f676fce92c9378db3c3b92ae77fbff9_Out_0_Vector4 = _BaseColor;
            float4 _Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4, _Property_4f676fce92c9378db3c3b92ae77fbff9_Out_0_Vector4, _Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4);
            UnityTexture2D _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_DetailMap);
            float4 _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4 = _DetailTilingOffset;
            float _Split_9fa8573190399e8da2a843a4cab68164_R_1_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[0];
            float _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[1];
            float _Split_9fa8573190399e8da2a843a4cab68164_B_3_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[2];
            float _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[3];
            float2 _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_R_1_Float, _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float);
            float2 _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_B_3_Float, _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float);
            float2 _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2;
            Unity_TilingAndOffset_float(IN.uv0.xy, _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2, _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2, _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2);
            float4 _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.tex, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.samplerstate, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.GetTransformedUV(_TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2) );
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_R_4_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.r;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.g;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.b;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.a;
            float _Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_R_4_Float, 2, _Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float);
            float _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float;
            Unity_Add_float(_Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float, -1, _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float);
            float _Property_7d68da97cd169d8e8649255aec16158a_Out_0_Float = _DetailAlbedoScale;
            float _Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float;
            Unity_Multiply_float_float(_Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float, _Property_7d68da97cd169d8e8649255aec16158a_Out_0_Float, _Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float);
            float _Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float;
            Unity_Saturate_float(_Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float, _Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float);
            float _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float;
            Unity_Absolute_float(_Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float, _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float);
            Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83;
            float3 _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3;
            SG_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float(_Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4, _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float, _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float, _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83, _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3);
            UnityTexture2D _Property_5ca167b35599f78ab3722ec527327841_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverBaseColorMap);
            float4 _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4 = _CoverTilingOffset;
            float _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean = _CoverUsePlanarUV;
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_ad1db3524021ac898447cb6f6daa4180;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.uv0 = IN.uv0;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.uv2 = IN.uv2;
            float4 _PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_5ca167b35599f78ab3722ec527327841_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_ad1db3524021ac898447cb6f6daa4180, _PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4);
            float4 _Property_b34e94e0b1171480b3e35ff7f4793d7c_Out_0_Vector4 = _CoverBaseColor;
            float4 _Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4, _Property_b34e94e0b1171480b3e35ff7f4793d7c_Out_0_Vector4, _Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4);
            float _Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean = _USEDYNAMICCOVERTSTATICMASKF;
            UnityTexture2D _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskA);
            float4 _UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4 = IN.uv0;
            float4 _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.tex, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.samplerstate, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.GetTransformedUV((_UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4.xy)) );
            float _SampleTexture2D_79111e5af287b084822e60563309a632_R_4_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.r;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_G_5_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.g;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_B_6_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.b;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.a;
            float _Property_c022d8255938838aa73170f05c226269_Out_0_Float = _CoverMaskPower;
            float _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float, _Property_c022d8255938838aa73170f05c226269_Out_0_Float, _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float);
            float _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float;
            Unity_Clamp_float(_Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float, 0, 1, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float);
            float2 _Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2 = float2(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float, _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float);
            float2 _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2, float2(2, 2), _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2);
            float2 _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2;
            Unity_Add_float2(_Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2, float2(-1, -1), _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2);
            float _Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float = _DetailNormalScale;
            float2 _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2, (_Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float.xx), _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2);
            float _Split_492de324af96c482b50573c79f9fb6a0_R_1_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[0];
            float _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[1];
            float _Split_492de324af96c482b50573c79f9fb6a0_B_3_Float = 0;
            float _Split_492de324af96c482b50573c79f9fb6a0_A_4_Float = 0;
            float _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float;
            Unity_DotProduct_float2(_Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float);
            float _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float;
            Unity_Saturate_float(_DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float, _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float);
            float _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float;
            Unity_OneMinus_float(_Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float, _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float);
            float _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float;
            Unity_SquareRoot_float(_OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            float3 _Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3 = float3(_Split_492de324af96c482b50573c79f9fb6a0_R_1_Float, _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            UnityTexture2D _Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseNormalMap);
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv0 = IN.uv0;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv2 = IN.uv2;
            float4 _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4);
            float _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float = _BaseNormalScale;
            float3 _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4.xyz), _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3);
            float3 _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3;
            Unity_NormalBlend_float(_Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3, _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3);
            UnityTexture2D _Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverNormalMap);
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv0 = IN.uv0;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv2 = IN.uv2;
            float4 _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4);
            float _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float = _CoverNormalBlendHardness;
            float3 _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3);
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_R_1_Float = IN.WorldSpaceNormal[0];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float = IN.WorldSpaceNormal[1];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_B_3_Float = IN.WorldSpaceNormal[2];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_A_4_Float = 0;
            float _Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float = _Cover_Amount;
            float _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float = _Cover_Amount_Grow_Speed;
            float _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float;
            Unity_Subtract_float(4, _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float);
            float _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float;
            Unity_Divide_float(_Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float);
            float _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float;
            Unity_Absolute_float(_Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float, _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float);
            float _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float;
            Unity_Power_float(_Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float);
            float _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float;
            Unity_Clamp_float(_Power_c11fc5724f830485a9c4df249a854571_Out_2_Float, 0, 2, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float);
            float _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float;
            Unity_Multiply_float_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float);
            float _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float;
            Unity_Saturate_float(_Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float, _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float);
            float _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float;
            Unity_Clamp_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, 0, 0.9999, _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float);
            float _Property_89633a46f34e1f8996557a9178d78478_Out_0_Float = _Cover_Max_Angle;
            float _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float;
            Unity_Divide_float(_Property_89633a46f34e1f8996557a9178d78478_Out_0_Float, 45, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float);
            float _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float;
            Unity_OneMinus_float(_Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float);
            float _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float;
            Unity_Subtract_float(_Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float, _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float);
            float _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float;
            Unity_Clamp_float(_Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float, 0, 2, _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
            float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
            Unity_Divide_float(1, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float);
            float _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_67dcc607b6da848097d3412324311616_Out_3_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float, _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float);
            float _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float;
            Unity_Absolute_float(_Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float, _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float);
            float _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float = _CoverHardness;
            float _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float;
            Unity_Power_float(_Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float);
            float _Property_f8753bb05d835089bda460d144f93c48_Out_0_Float = _Cover_Min_Height;
            float _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float;
            Unity_OneMinus_float(_Property_f8753bb05d835089bda460d144f93c48_Out_0_Float, _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float);
            float _Split_c66e04f85a2a7f87884040056599e65d_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
            float _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
            float _Split_c66e04f85a2a7f87884040056599e65d_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
            float _Split_c66e04f85a2a7f87884040056599e65d_A_4_Float = 0;
            float _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float;
            Unity_Add_float(_OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float, _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float);
            float _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, 1, _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
            float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
            Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, 0, 1, _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float);
            float _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float = _Cover_Min_Height_Blending;
            float _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float, _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float);
            float _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float;
            Unity_Divide_float(_Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float);
            float _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float;
            Unity_OneMinus_float(_Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float, _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float);
            float _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float;
            Unity_Add_float(_OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float, -0.5, _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
            float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
            Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, 0, 1, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float);
            float _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float;
            Unity_Add_float(_Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float, _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float);
            float _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float;
            Unity_Clamp_float(_Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float, 0, 1, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float);
            float _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float;
            Unity_Multiply_float_float(_Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float);
            float _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float;
            Unity_Multiply_float_float(_Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float);
            float3 _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3, (_Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float.xxx), _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3);
            float3 _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3;
            {
                float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
                _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3 = TransformTangentToWorldDir(_Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3.xyz, tangentTransform, false).xyz;
            }
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_R_1_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[0];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[1];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_B_3_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[2];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_A_4_Float = 0;
            float _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float;
            Unity_Multiply_float_float(_Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float);
            float _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float);
            float _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float);
            float _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float, _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float);
            UnityTexture2D _Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_36e64648ad8a6a849bc794b8693519da;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv0 = IN.uv0;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv2 = IN.uv2;
            float4 _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_36e64648ad8a6a849bc794b8693519da, _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4);
            float _Split_198ec92f3e753d8a9ad50db7d6527324_R_1_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[0];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[1];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[2];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[3];
            float _Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float = _CoverHeightMapMin;
            float _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float = _CoverHeightMapMax;
            float2 _Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2 = float2(_Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float, _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float);
            float _Property_277f22c36084858981418fa95133a562_Out_0_Float = _CoverHeightMapOffset;
            float2 _Add_53997153562831859cc7b582f3068877_Out_2_Vector2;
            Unity_Add_float2(_Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2, (_Property_277f22c36084858981418fa95133a562_Out_0_Float.xx), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2);
            float _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float, float2 (0, 1), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float);
            float _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float, _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float);
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float = IN.VertexColor[0];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float = IN.VertexColor[1];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_B_3_Float = IN.VertexColor[2];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_A_4_Float = IN.VertexColor[3];
            float _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float, _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float, _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float);
            float _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float;
            Unity_Saturate_float(_Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float);
            float _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float);
            float _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float;
            Unity_Branch_float(_Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float);
            float3 _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3;
            Unity_Lerp_float3(_BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3, (_Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4.xyz), (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxx), _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3);
            float4 _Property_e687576468764d85b6b46dca96d8a8e3_Out_0_Vector4 = _WetColor;
            float3 _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3;
            Unity_Multiply_float3_float3((_Property_e687576468764d85b6b46dca96d8a8e3_Out_0_Vector4.xyz), _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3, _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3);
            float _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float;
            Unity_OneMinus_float(_Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float);
            float3 _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
            Unity_Lerp_float3(_Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3, _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3, (_OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float.xxx), _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3);
            UnityTexture2D _Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv0 = IN.uv0;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv2 = IN.uv2;
            float4 _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4);
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_R_1_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[0];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[1];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_B_3_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[2];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[3];
            float _Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float = _BaseAORemapMin;
            float _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float = _BaseAORemapMax;
            float2 _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2 = float2(_Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float, _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float);
            float _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float, float2 (0, 1), _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2, _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float);
            float _Property_e353baf414594b8882fb914562e81165_Out_0_Float = _BaseSmoothnessRemapMin;
            float _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float = _BaseSmoothnessRemapMax;
            float2 _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2 = float2(_Property_e353baf414594b8882fb914562e81165_Out_0_Float, _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float);
            float _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float, float2 (0, 1), _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2, _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float);
            float _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float, 2, _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float);
            float _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float;
            Unity_Add_float(_Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float, -1, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float);
            float _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float = _DetailSmoothnessScale;
            float _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float;
            Unity_Multiply_float_float(_Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float, _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float);
            float _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float;
            Unity_Saturate_float(_Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float, _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float);
            float _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float;
            Unity_Absolute_float(_Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float);
            Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da;
            float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float;
            SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(_Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float);
            float _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float;
            Unity_Saturate_float(_BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float2 _Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2 = float2(_Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float _Property_5e08cfb127183a8993376f9087501eee_Out_0_Float = _CoverAORemapMin;
            float _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float = _CoverAORemapMax;
            float2 _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2 = float2(_Property_5e08cfb127183a8993376f9087501eee_Out_0_Float, _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float);
            float _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float, float2 (0, 1), _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2, _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float);
            float _Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float = _CoverSmoothnessRemapMin;
            float _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float = _CoverSmoothnessRemapMax;
            float2 _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2 = float2(_Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float, _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float);
            float _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float, float2 (0, 1), _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2 = float2(_Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2;
            Unity_Lerp_float2(_Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2, _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xx), _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2);
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_R_1_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[0];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[1];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_B_3_Float = 0;
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_A_4_Float = 0;
            float _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float = _WetSmoothness;
            float _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            Unity_Lerp_float(_Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float, _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float, _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float);
            float _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float = _CoverNormalScale;
            float3 _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3);
            float3 _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxx), _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3);
            UnityTexture2D _Property_f617479b11216b84b89956263f8d3c08_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_SpecularColorMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.uv0 = IN.uv0;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.uv2 = IN.uv2;
            float4 _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_f617479b11216b84b89956263f8d3c08_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d, _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4);
            float4 _Property_112303b9c27a1284b20f0a5c49fb436a_Out_0_Vector4 = _SpecularColor;
            float4 _Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4, _Property_112303b9c27a1284b20f0a5c49fb436a_Out_0_Vector4, _Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4);
            UnityTexture2D _Property_0c768f7d1094a8878d837f25970dbd49_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverSpecularColorMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_4b88db16993b7d84a6c9e021b5992a38;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.uv0 = IN.uv0;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.uv2 = IN.uv2;
            float4 _PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_0c768f7d1094a8878d837f25970dbd49_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_4b88db16993b7d84a6c9e021b5992a38, _PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4);
            float4 _Property_51d3c44a7110108d9e8c9a3acf54125f_Out_0_Vector4 = _CoverSpecularColor;
            float4 _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4, _Property_51d3c44a7110108d9e8c9a3acf54125f_Out_0_Vector4, _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4);
            float4 _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4;
            Unity_Lerp_float4(_Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4, _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxxx), _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4);
            surface.BaseColor = _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
            surface.Emission = float3(0, 0, 0);
            surface.Alpha = 1;
            surface.BentNormal = IN.TangentSpaceNormal;
            surface.Smoothness = _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            surface.Occlusion = _Split_beb57fcf05cbb6809f536625bac5fcbc_R_1_Float;
            surface.NormalTS = _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            surface.Specular = (_Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4.xyz);
            return surface;
        }
        
            // --------------------------------------------------
            // Build Graph Inputs
            #ifdef HAVE_VFX_MODIFICATION
            #define VFX_SRP_ATTRIBUTES AttributesMesh
            #define VaryingsMeshType VaryingsMeshToPS
            #define VFX_SRP_VARYINGS VaryingsMeshType
            #define VFX_SRP_SURFACE_INPUTS FragInputs
            #endif
            
        VertexDescriptionInputs AttributesMeshToVertexDescriptionInputs(AttributesMesh input)
        {
            VertexDescriptionInputs output;
            ZERO_INITIALIZE(VertexDescriptionInputs, output);
        
            output.ObjectSpaceNormal =                          input.normalOS;
            output.ObjectSpaceTangent =                         input.tangentOS.xyz;
            output.ObjectSpacePosition =                        input.positionOS;
        
            return output;
        }
        
        VertexDescription GetVertexDescription(AttributesMesh input, float3 timeParameters
        #ifdef HAVE_VFX_MODIFICATION
            , AttributesElement element
        #endif
        )
        {
            // build graph inputs
            VertexDescriptionInputs vertexDescriptionInputs = AttributesMeshToVertexDescriptionInputs(input);
            // Override time parameters with used one (This is required to correctly handle motion vectors for vertex animation based on time)
        
            // evaluate vertex graph
        #ifdef HAVE_VFX_MODIFICATION
            GraphProperties properties;
            ZERO_INITIALIZE(GraphProperties, properties);
        
            // Fetch the vertex graph properties for the particle instance.
            GetElementVertexProperties(element, properties);
        
            VertexDescription vertexDescription = VertexDescriptionFunction(vertexDescriptionInputs, properties);
        #else
            VertexDescription vertexDescription = VertexDescriptionFunction(vertexDescriptionInputs);
        #endif
            return vertexDescription;
        
        }
        
        AttributesMesh ApplyMeshModification(AttributesMesh input, float3 timeParameters
        #ifdef USE_CUSTOMINTERP_SUBSTRUCT
            #ifdef TESSELLATION_ON
            , inout VaryingsMeshToDS varyings
            #else
            , inout VaryingsMeshToPS varyings
            #endif
        #endif
        #ifdef HAVE_VFX_MODIFICATION
                , AttributesElement element
        #endif
            )
        {
            VertexDescription vertexDescription = GetVertexDescription(input, timeParameters
        #ifdef HAVE_VFX_MODIFICATION
                , element
        #endif
            );
        
            // copy graph output to the results
            input.positionOS = vertexDescription.Position;
            input.normalOS = vertexDescription.Normal;
            input.tangentOS.xyz = vertexDescription.Tangent;
        
            
        
            return input;
        }
        
        #if defined(_ADD_CUSTOM_VELOCITY) // For shader graph custom velocity
        // Return precomputed Velocity in object space
        float3 GetCustomVelocity(AttributesMesh input
        #ifdef HAVE_VFX_MODIFICATION
            , AttributesElement element
        #endif
        )
        {
            VertexDescription vertexDescription = GetVertexDescription(input, _TimeParameters.xyz
        #ifdef HAVE_VFX_MODIFICATION
                , element
        #endif
            );
            return vertexDescription.CustomVelocity;
        }
        #endif
        
        FragInputs BuildFragInputs(VaryingsMeshToPS input)
        {
            FragInputs output;
            ZERO_INITIALIZE(FragInputs, output);
        
            // Init to some default value to make the computer quiet (else it output 'divide by zero' warning even if value is not used).
            // TODO: this is a really poor workaround, but the variable is used in a bunch of places
            // to compute normals which are then passed on elsewhere to compute other values...
            output.tangentToWorld = k_identity3x3;
            output.positionSS = input.positionCS;       // input.positionCS is SV_Position
        
            output.positionRWS =                input.positionRWS;
            output.tangentToWorld =             BuildTangentToWorld(input.tangentWS, input.normalWS);
            output.texCoord0 =                  input.texCoord0;
            output.texCoord2 =                  input.texCoord2;
            output.color =                      input.color;
        
        #ifdef HAVE_VFX_MODIFICATION
            // FragInputs from VFX come from two places: Interpolator or CBuffer.
        #if VFX_USE_GRAPH_VALUES
            uint instanceActiveIndex = asuint(UNITY_ACCESS_INSTANCED_PROP(PerInstance, _InstanceActiveIndex));
            /* WARNING: $splice Could not find named fragment 'VFXLoadGraphValues' */
        #endif
        
            /* WARNING: $splice Could not find named fragment 'VFXSetFragInputs' */
        
        #endif
        
            // splice point to copy custom interpolator fields from varyings to frag inputs
            
        
            return output;
        }
        
        // existing HDRP code uses the combined function to go directly from packed to frag inputs
        FragInputs UnpackVaryingsMeshToFragInputs(PackedVaryingsMeshToPS input)
        {
            UNITY_SETUP_INSTANCE_ID(input);
        #if defined(HAVE_VFX_MODIFICATION) && defined(UNITY_INSTANCING_ENABLED)
            unity_InstanceID = input.instanceID;
        #endif
            VaryingsMeshToPS unpacked = UnpackVaryingsMeshToPS(input);
            return BuildFragInputs(unpacked);
        }
            SurfaceDescriptionInputs FragInputsToSurfaceDescriptionInputs(FragInputs input, float3 viewWS)
        {
            SurfaceDescriptionInputs output;
            ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
        
            output.WorldSpaceNormal =                           normalize(input.tangentToWorld[2].xyz);
            #if defined(SHADER_STAGE_RAY_TRACING)
            #else
            #endif
            output.TangentSpaceNormal =                         float3(0.0f, 0.0f, 1.0f);
            output.WorldSpaceTangent =                          input.tangentToWorld[0].xyz;
            output.WorldSpaceBiTangent =                        input.tangentToWorld[1].xyz;
            output.AbsoluteWorldSpacePosition =                 GetAbsolutePositionWS(input.positionRWS);
        
        #if UNITY_UV_STARTS_AT_TOP
        #else
        #endif
        
        
            output.uv0 =                                        input.texCoord0;
            output.uv2 =                                        input.texCoord2;
            output.VertexColor =                                input.color;
        
            // splice point to copy frag inputs custom interpolator pack into the SDI
            
        
            return output;
        }
        
            // --------------------------------------------------
            // Build Surface Data (Specific Material)
        
        void ApplyDecalToSurfaceDataNoNormal(DecalSurfaceData decalSurfaceData, inout SurfaceData surfaceData);
        
        void ApplyDecalAndGetNormal(FragInputs fragInputs, PositionInputs posInput, SurfaceDescription surfaceDescription,
            inout SurfaceData surfaceData)
        {
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
        #ifdef DECAL_NORMAL_BLENDING
            // SG nodes don't ouptut surface gradients, so if decals require surf grad blending, we have to convert
            // the normal to gradient before applying the decal. We then have to resolve the gradient back to world space
            float3 normalTS;
        
            normalTS = SurfaceGradientFromTangentSpaceNormalAndFromTBN(surfaceDescription.NormalTS,
            fragInputs.tangentToWorld[0], fragInputs.tangentToWorld[1]);
        
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, fragInputs.tangentToWorld[2], normalTS);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        
            GetNormalWS_SG(fragInputs, normalTS, surfaceData.normalWS, doubleSidedConstants);
        #else
            // normal delivered to master node
            GetNormalWS(fragInputs, surfaceDescription.NormalTS, surfaceData.normalWS, doubleSidedConstants);
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                // Both uses and modifies 'surfaceData.normalWS'.
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, surfaceData.normalWS.xyz);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        #endif
        }
        void BuildSurfaceData(FragInputs fragInputs, inout SurfaceDescription surfaceDescription, float3 V, PositionInputs posInput, out SurfaceData surfaceData, out float3 bentNormalWS)
        {
            ZERO_INITIALIZE(SurfaceData, surfaceData);
        
            // specularOcclusion need to be init ahead of decal to quiet the compiler that modify the SurfaceData struct
            // however specularOcclusion can come from the graph, so need to be init here so it can be override.
            surfaceData.specularOcclusion = 1.0;
        
            surfaceData.baseColor =                 surfaceDescription.BaseColor;
            surfaceData.perceptualSmoothness =      surfaceDescription.Smoothness;
            surfaceData.ambientOcclusion =          surfaceDescription.Occlusion;
            surfaceData.specularColor =             surfaceDescription.Specular;
        
            #if defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE) || defined(_REFRACTION_THIN)
                if (_EnableSSRefraction)
                {
        
                    surfaceData.transmittanceMask = (1.0 - surfaceDescription.Alpha);
                    surfaceDescription.Alpha = 1.0;
                }
                else
                {
                    surfaceData.ior = 1.0;
                    surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                    surfaceData.atDistance = 1.0;
                    surfaceData.transmittanceMask = 0.0;
                    surfaceDescription.Alpha = 1.0;
                }
            #else
                surfaceData.ior = 1.0;
                surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                surfaceData.atDistance = 1.0;
                surfaceData.transmittanceMask = 0.0;
            #endif
        
            // These static material feature allow compile time optimization
            surfaceData.materialFeatures = MATERIALFEATUREFLAGS_LIT_STANDARD;
            #ifdef _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SUBSURFACE_SCATTERING;
            #endif
        
            #ifdef _MATERIAL_FEATURE_TRANSMISSION
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
            #endif
        
            #ifdef _MATERIAL_FEATURE_ANISOTROPY
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_ANISOTROPY;
        
                // Initialize the normal to something non-zero to avoid a div-zero warning for anisotropy.
                surfaceData.normalWS = float3(0, 1, 0);
            #endif
        
            #ifdef _MATERIAL_FEATURE_IRIDESCENCE
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_IRIDESCENCE;
            #endif
        
            #ifdef _MATERIAL_FEATURE_SPECULAR_COLOR
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SPECULAR_COLOR;
            #endif
        
            #ifdef _MATERIAL_FEATURE_CLEAR_COAT
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_CLEAR_COAT;
            #endif
        
            #if defined (_MATERIAL_FEATURE_SPECULAR_COLOR) && defined (_ENERGY_CONSERVING_SPECULAR)
                // Require to have setup baseColor
                // Reproduce the energy conservation done in legacy Unity. Not ideal but better for compatibility and users can unchek it
                surfaceData.baseColor *= (1.0 - Max3(surfaceData.specularColor.r, surfaceData.specularColor.g, surfaceData.specularColor.b));
            #endif
        
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
            ApplyDecalAndGetNormal(fragInputs, posInput, surfaceDescription, surfaceData);
        
            surfaceData.geomNormalWS = fragInputs.tangentToWorld[2];
        
            surfaceData.tangentWS = normalize(fragInputs.tangentToWorld[0].xyz);    // The tangent is not normalize in tangentToWorld for mikkt. TODO: Check if it expected that we normalize with Morten. Tag: SURFACE_GRADIENT
        
        
            bentNormalWS = surfaceData.normalWS;
        
            surfaceData.tangentWS = Orthonormalize(surfaceData.tangentWS, surfaceData.normalWS);
        
            #ifdef DEBUG_DISPLAY
                if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
                {
                    // TODO: need to update mip info
                    surfaceData.metallic = 0;
                }
        
                // We need to call ApplyDebugToSurfaceData after filling the surfarcedata and before filling builtinData
                // as it can modify attribute use for static lighting
                ApplyDebugToSurfaceData(fragInputs.tangentToWorld, surfaceData);
            #endif
        
            // By default we use the ambient occlusion with Tri-ace trick (apply outside) for specular occlusion.
            // If user provide bent normal then we process a better term
            #if defined(_SPECULAR_OCCLUSION_CUSTOM)
                // Just use the value passed through via the slot (not active otherwise)
            #elif defined(_SPECULAR_OCCLUSION_FROM_AO_BENT_NORMAL)
                // If we have bent normal and ambient occlusion, process a specular occlusion
                surfaceData.specularOcclusion = GetSpecularOcclusionFromBentAO(V, bentNormalWS, surfaceData.normalWS, surfaceData.ambientOcclusion, PerceptualSmoothnessToPerceptualRoughness(surfaceData.perceptualSmoothness));
            #elif defined(_AMBIENT_OCCLUSION) && defined(_SPECULAR_OCCLUSION_FROM_AO)
                surfaceData.specularOcclusion = GetSpecularOcclusionFromAmbientOcclusion(ClampNdotV(dot(surfaceData.normalWS, V)), surfaceData.ambientOcclusion, PerceptualSmoothnessToRoughness(surfaceData.perceptualSmoothness));
            #endif
        
            #if defined(_ENABLE_GEOMETRIC_SPECULAR_AA) && !defined(SHADER_STAGE_RAY_TRACING)
                surfaceData.perceptualSmoothness = GeometricNormalFiltering(surfaceData.perceptualSmoothness, fragInputs.tangentToWorld[2], surfaceDescription.SpecularAAScreenSpaceVariance, surfaceDescription.SpecularAAThreshold);
            #endif
        }
        
            // --------------------------------------------------
            // Get Surface And BuiltinData
        
            void GetSurfaceAndBuiltinData(FragInputs fragInputs, float3 V, inout PositionInputs posInput, out SurfaceData surfaceData, out BuiltinData builtinData RAY_TRACING_OPTIONAL_PARAMETERS)
            {
                // Don't dither if displaced tessellation (we're fading out the displacement instead to match the next LOD)
                #if !defined(SHADER_STAGE_RAY_TRACING) && !defined(_TESSELLATION_DISPLACEMENT)
                #ifdef LOD_FADE_CROSSFADE // enable dithering LOD transition if user select CrossFade transition in LOD group
                LODDitheringTransition(ComputeFadeMaskSeed(V, posInput.positionSS), unity_LODFade.x);
                #endif
                #endif
        
                #ifndef SHADER_UNLIT
                #ifdef _DOUBLESIDED_ON
                    float3 doubleSidedConstants = _DoubleSidedConstants.xyz;
                #else
                    float3 doubleSidedConstants = float3(1.0, 1.0, 1.0);
                #endif
        
                ApplyDoubleSidedFlipOrMirror(fragInputs, doubleSidedConstants); // Apply double sided flip on the vertex normal
                #endif // SHADER_UNLIT
        
                SurfaceDescriptionInputs surfaceDescriptionInputs = FragInputsToSurfaceDescriptionInputs(fragInputs, V);
        
                #if defined(HAVE_VFX_MODIFICATION)
                GraphProperties properties;
                ZERO_INITIALIZE(GraphProperties, properties);
        
                GetElementPixelProperties(fragInputs, properties);
        
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs, properties);
                #else
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs);
                #endif
        
                // Perform alpha test very early to save performance (a killed pixel will not sample textures)
                // TODO: split graph evaluation to grab just alpha dependencies first? tricky..
                #ifdef _ALPHATEST_ON
                    float alphaCutoff = surfaceDescription.AlphaClipThreshold;
                    #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
                    // The TransparentDepthPrepass is also used with SSR transparent.
                    // If an artists enable transaprent SSR but not the TransparentDepthPrepass itself, then we use AlphaClipThreshold
                    // otherwise if TransparentDepthPrepass is enabled we use AlphaClipThresholdDepthPrepass
                    #elif SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_POSTPASS
                    // DepthPostpass always use its own alpha threshold
                    alphaCutoff = surfaceDescription.AlphaClipThresholdDepthPostpass;
                    #elif (SHADERPASS == SHADERPASS_SHADOWS) || (SHADERPASS == SHADERPASS_RAYTRACING_VISIBILITY)
                    // If use shadow threshold isn't enable we don't allow any test
                    #endif
        
                    GENERIC_ALPHA_TEST(surfaceDescription.Alpha, alphaCutoff);
                #endif
        
                #if !defined(SHADER_STAGE_RAY_TRACING) && _DEPTHOFFSET_ON
                ApplyDepthOffsetPositionInput(V, surfaceDescription.DepthOffset, GetViewForwardDir(), GetWorldToHClipMatrix(), posInput);
                #endif
        
                #ifndef SHADER_UNLIT
                float3 bentNormalWS;
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData, bentNormalWS);
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD1
                    float4 lightmapTexCoord1 = fragInputs.texCoord1;
                #else
                    float4 lightmapTexCoord1 = float4(0,0,0,0);
                #endif
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD2
                    float4 lightmapTexCoord2 = fragInputs.texCoord2;
                #else
                    float4 lightmapTexCoord2 = float4(0,0,0,0);
                #endif
        
                // Builtin Data
                // For back lighting we use the oposite vertex normal
                InitBuiltinData(posInput, surfaceDescription.Alpha, bentNormalWS, -fragInputs.tangentToWorld[2], lightmapTexCoord1, lightmapTexCoord2, builtinData);
        
                #else
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData);
        
                ZERO_BUILTIN_INITIALIZE(builtinData); // No call to InitBuiltinData as we don't have any lighting
                builtinData.opacity = surfaceDescription.Alpha;
        
                #if defined(DEBUG_DISPLAY)
                    // Light Layers are currently not used for the Unlit shader (because it is not lit)
                    // But Unlit objects do cast shadows according to their rendering layer mask, which is what we want to
                    // display in the light layers visualization mode, therefore we need the renderingLayers
                    builtinData.renderingLayers = GetMeshRenderingLightLayer();
                #endif
        
                #endif // SHADER_UNLIT
        
                #ifdef _ALPHATEST_ON
                    // Used for sharpening by alpha to mask - Alpha to covertage is only used with depth only and forward pass (no shadow pass, no transparent pass)
                    builtinData.alphaClipTreshold = alphaCutoff;
                #endif
        
                // override sampleBakedGI - not used by Unlit
        
                builtinData.emissiveColor = surfaceDescription.Emission;
        
                // Note this will not fully work on transparent surfaces (can check with _SURFACE_TYPE_TRANSPARENT define)
                // We will always overwrite vt feeback with the nearest. So behind transparent surfaces vt will not be resolved
                // This is a limitation of the current MRT approach.
                #ifdef UNITY_VIRTUAL_TEXTURING
                #endif
        
                #if _DEPTHOFFSET_ON
                builtinData.depthOffset = surfaceDescription.DepthOffset;
                #endif
        
                // TODO: We should generate distortion / distortionBlur for non distortion pass
                #if (SHADERPASS == SHADERPASS_DISTORTION)
                builtinData.distortion = surfaceDescription.Distortion;
                builtinData.distortionBlur = surfaceDescription.DistortionBlur;
                #endif
        
                #ifndef SHADER_UNLIT
                // PostInitBuiltinData call ApplyDebugToBuiltinData
                PostInitBuiltinData(V, posInput, surfaceData, builtinData);
                #else
                ApplyDebugToBuiltinData(builtinData);
                #endif
        
                RAY_TRACING_OPTIONAL_ALPHA_TEST_PASS
            }
        
            // --------------------------------------------------
            // Main
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassDepthOnly.hlsl"
        
            // --------------------------------------------------
            // Visual Effect Vertex Invocations
        
        	#ifdef HAVE_VFX_MODIFICATION
        	#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
        	#endif
        
            ENDHLSL
        }
        Pass
        {
            Name "GBuffer"
            Tags
            {
                "LightMode" = "GBuffer"
            }
        
            // Render State
            Cull [_CullMode]
        ZTest [_ZTestGBuffer]
        ColorMask [_LightLayersMaskBuffer4] 4
        ColorMask [_LightLayersMaskBuffer5] 5
        Stencil
        {
        WriteMask [_StencilWriteMaskGBuffer]
        Ref [_StencilRefGBuffer]
        CompFront Always
        PassFront Replace
        CompBack Always
        PassBack Replace
        }
        
            // Debug
            // <None>
        
            // --------------------------------------------------
            // Pass
        
            HLSLPROGRAM
        
            // Pragmas
            #pragma multi_compile _ DOTS_INSTANCING_ON
        #pragma instancing_options renderinglayer
        #pragma target 4.5
        #pragma vertex Vert
        #pragma fragment Frag
        #pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal switch
        #pragma multi_compile_instancing
        
            // Keywords
            #pragma multi_compile_fragment _ LIGHT_LAYERS
        #pragma multi_compile_raytracing _ LIGHT_LAYERS
        #pragma shader_feature _ _SURFACE_TYPE_TRANSPARENT
        #pragma shader_feature_local _ _DOUBLESIDED_ON
        #pragma shader_feature_local _ _ADD_PRECOMPUTED_VELOCITY
        #pragma shader_feature_local _ _TRANSPARENT_WRITES_MOTION_VEC
        #pragma shader_feature_local_fragment _ _ENABLE_FOG_ON_TRANSPARENT
        #pragma multi_compile _ DEBUG_DISPLAY
        #pragma multi_compile _ LOD_FADE_CROSSFADE
        #pragma shader_feature_local_fragment _ _DISABLE_DECALS
        #pragma shader_feature_local_raytracing _ _DISABLE_DECALS
        #pragma shader_feature_local_fragment _ _DISABLE_SSR
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR
        #pragma shader_feature_local_fragment _ _DISABLE_SSR_TRANSPARENT
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR_TRANSPARENT
        #pragma multi_compile _ LIGHTMAP_ON
        #pragma multi_compile _ DIRLIGHTMAP_COMBINED
        #pragma multi_compile_fragment PROBE_VOLUMES_OFF PROBE_VOLUMES_L1 PROBE_VOLUMES_L2
        #pragma multi_compile_raytracing PROBE_VOLUMES_OFF PROBE_VOLUMES_L1 PROBE_VOLUMES_L2
        #pragma multi_compile _ DYNAMICLIGHTMAP_ON
        #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK
        #pragma multi_compile_raytracing _ SHADOWS_SHADOWMASK
        #pragma multi_compile_fragment DECALS_OFF DECALS_3RT DECALS_4RT
        #pragma multi_compile_fragment _ DECAL_SURFACE_GRADIENT
        #pragma shader_feature_local _ _REFRACTION_PLANE _REFRACTION_SPHERE _REFRACTION_THIN
            // GraphKeywords: <None>
        
            // For custom interpolators to inject a substruct definition before FragInputs definition,
            // allowing for FragInputs to capture CI's intended for ShaderGraph's SDI.
            struct CustomInterpolators
        {
        };
        #define USE_CUSTOMINTERP_SUBSTRUCT
        
        
        
            // TODO: Merge FragInputsVFX substruct with CustomInterpolators.
        	#ifdef HAVE_VFX_MODIFICATION
        	struct FragInputsVFX
            {
                /* WARNING: $splice Could not find named fragment 'FragInputsVFX' */
            };
            #endif
        
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/GeometricTools.hlsl" // Required by Tessellation.hlsl
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Tessellation.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl" // Required to be include before we include properties as it define DECLARE_STACK_CB
            // Always include Shader Graph version
            // Always include last to avoid double macros
            #include "Packages/com.unity.shadergraph/ShaderGraphLibrary/Functions.hlsl" // Need to be here for Gradient struct definition
        
            // --------------------------------------------------
            // Defines
        
            // Attribute
            #define ATTRIBUTES_NEED_NORMAL
            #define ATTRIBUTES_NEED_TANGENT
            #define ATTRIBUTES_NEED_TEXCOORD0
            #define ATTRIBUTES_NEED_TEXCOORD1
            #define ATTRIBUTES_NEED_TEXCOORD2
            #define ATTRIBUTES_NEED_COLOR
            #define VARYINGS_NEED_POSITION_WS
            #define VARYINGS_NEED_TANGENT_TO_WORLD
            #define VARYINGS_NEED_TEXCOORD0
            #define VARYINGS_NEED_TEXCOORD1
            #define VARYINGS_NEED_TEXCOORD2
            #define VARYINGS_NEED_COLOR
        
            #define HAVE_MESH_MODIFICATION
        
            //Strip down the FragInputs.hlsl (on graphics), so we can only optimize the interpolators we use.
            //if by accident something requests contents of FragInputs.hlsl, it will be caught as a compiler error
            //Frag inputs stripping is only enabled when FRAG_INPUTS_ENABLE_STRIPPING is set
            #if !defined(SHADER_STAGE_RAY_TRACING) && SHADERPASS != SHADERPASS_RAYTRACING_GBUFFER && SHADERPASS != SHADERPASS_FULL_SCREEN_DEBUG
            #define FRAG_INPUTS_ENABLE_STRIPPING
            #endif
            #define FRAG_INPUTS_USE_TEXCOORD0
            #define FRAG_INPUTS_USE_TEXCOORD1
            #define FRAG_INPUTS_USE_TEXCOORD2
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/FragInputs.hlsl"
        
        
        
            #define SHADERPASS SHADERPASS_GBUFFER
        #define RAYTRACING_SHADER_GRAPH_DEFAULT
        
        
            // Following two define are a workaround introduce in 10.1.x for RaytracingQualityNode
            // The ShaderGraph don't support correctly migration of this node as it serialize all the node data
            // in the json file making it impossible to uprgrade. Until we get a fix, we do a workaround here
            // to still allow us to rename the field and keyword of this node without breaking existing code.
            #ifdef RAYTRACING_SHADER_GRAPH_DEFAULT
            #define RAYTRACING_SHADER_GRAPH_HIGH
            #endif
        
            #ifdef RAYTRACING_SHADER_GRAPH_RAYTRACED
            #define RAYTRACING_SHADER_GRAPH_LOW
            #endif
            // end
        
            #ifndef SHADER_UNLIT
            // We need isFrontFace when using double sided - it is not required for unlit as in case of unlit double sided only drive the cullmode
            // VARYINGS_NEED_CULLFACE can be define by VaryingsMeshToPS.FaceSign input if a IsFrontFace Node is included in the shader graph.
            #if defined(_DOUBLESIDED_ON) && !defined(VARYINGS_NEED_CULLFACE)
                #define VARYINGS_NEED_CULLFACE
            #endif
            #endif
        
            // Specific Material Define
        #define _MATERIAL_FEATURE_SPECULAR_COLOR 1
        #define _AMBIENT_OCCLUSION 1
        #define _SPECULAR_OCCLUSION_FROM_AO 1
        #define _ENERGY_CONSERVING_SPECULAR 1
        
        // If we use subsurface scattering, enable output split lighting (for forward pass)
        #if defined(_MATERIAL_FEATURE_SUBSURFACE_SCATTERING) && !defined(_SURFACE_TYPE_TRANSPARENT)
            #define OUTPUT_SPLIT_LIGHTING
        #endif
        
        // This shader support recursive rendering for raytracing
        #define HAVE_RECURSIVE_RENDERING
        
        // In Path Tracing, For all single-sided, refractive materials, we want to force a thin refraction model
        #if (SHADERPASS == SHADERPASS_PATH_TRACING) && !defined(_DOUBLESIDED_ON) && (defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE))
            #undef  _REFRACTION_PLANE
            #undef  _REFRACTION_SPHERE
            #define _REFRACTION_THIN
        #endif
            // Caution: we can use the define SHADER_UNLIT onlit after the above Material include as it is the Unlit template who define it
        
            // To handle SSR on transparent correctly with a possibility to enable/disable it per framesettings
            // we should have a code like this:
            // if !defined(_DISABLE_SSR_TRANSPARENT)
            // pragma multi_compile _ WRITE_NORMAL_BUFFER
            // endif
            // i.e we enable the multicompile only if we can receive SSR or not, and then C# code drive
            // it based on if SSR transparent in frame settings and not (and stripper can strip it).
            // this is currently not possible with our current preprocessor as _DISABLE_SSR_TRANSPARENT is a keyword not a define
            // so instead we used this and chose to pay the extra cost of normal write even if SSR transaprent is disabled.
            // Ideally the shader graph generator should handle it but condition below can't be handle correctly for now.
            #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
            #if !defined(_DISABLE_SSR_TRANSPARENT) && !defined(SHADER_UNLIT)
                #define WRITE_NORMAL_BUFFER
            #endif
            #endif
        
            #ifndef DEBUG_DISPLAY
                // In case of opaque we don't want to perform the alpha test, it is done in depth prepass and we use depth equal for ztest (setup from UI)
                // Don't do it with debug display mode as it is possible there is no depth prepass in this case
                #if !defined(_SURFACE_TYPE_TRANSPARENT)
                    #if SHADERPASS == SHADERPASS_FORWARD
                    #define SHADERPASS_FORWARD_BYPASS_ALPHA_TEST
                    #elif SHADERPASS == SHADERPASS_GBUFFER
                    #define SHADERPASS_GBUFFER_BYPASS_ALPHA_TEST
                    #endif
                #endif
            #endif
        
            // Define _DEFERRED_CAPABLE_MATERIAL for shader capable to run in deferred pass
            #if defined(SHADER_LIT) && !defined(_SURFACE_TYPE_TRANSPARENT)
                #define _DEFERRED_CAPABLE_MATERIAL
            #endif
        
            // Translate transparent motion vector define
            #if defined(_TRANSPARENT_WRITES_MOTION_VEC) && defined(_SURFACE_TYPE_TRANSPARENT)
                #define _WRITE_TRANSPARENT_MOTION_VECTOR
            #endif
        
            // -- Graph Properties
            CBUFFER_START(UnityPerMaterial)
        float4 _BaseColor;
        float4 _BaseColorMap_TexelSize;
        float _BaseUsePlanarUV;
        float4 _BaseTilingOffset;
        float4 _SpecularColor;
        float4 _SpecularColorMap_TexelSize;
        float4 _BaseNormalMap_TexelSize;
        float _BaseNormalScale;
        float4 _BaseMaskMap_TexelSize;
        float _BaseAORemapMin;
        float _BaseAORemapMax;
        float _BaseSmoothnessRemapMin;
        float _BaseSmoothnessRemapMax;
        float _USEDYNAMICCOVERTSTATICMASKF;
        float4 _CoverMaskA_TexelSize;
        float _CoverMaskPower;
        float _Cover_Amount;
        float _Cover_Amount_Grow_Speed;
        float _Cover_Max_Angle;
        float _Cover_Min_Height;
        float _Cover_Min_Height_Blending;
        float4 _CoverBaseColor;
        float4 _CoverBaseColorMap_TexelSize;
        float _CoverUsePlanarUV;
        float4 _CoverTilingOffset;
        float4 _CoverSpecularColor;
        float4 _CoverSpecularColorMap_TexelSize;
        float4 _CoverNormalMap_TexelSize;
        float _CoverNormalScale;
        float _CoverNormalBlendHardness;
        float _CoverHardness;
        float _CoverHeightMapMin;
        float _CoverHeightMapMax;
        float _CoverHeightMapOffset;
        float4 _CoverMaskMap_TexelSize;
        float _CoverAORemapMin;
        float _CoverAORemapMax;
        float _CoverSmoothnessRemapMin;
        float _CoverSmoothnessRemapMax;
        float4 _DetailMap_TexelSize;
        float4 _DetailTilingOffset;
        float _DetailAlbedoScale;
        float _DetailNormalScale;
        float _DetailSmoothnessScale;
        float4 _WetColor;
        float _WetSmoothness;
        float4 _EmissionColor;
        float _UseShadowThreshold;
        float4 _DoubleSidedConstants;
        float _BlendMode;
        float _EnableBlendModePreserveSpecularLighting;
        float _RayTracing;
        float _RefractionModel;
        CBUFFER_END
        
        
        // Object and Global properties
        SAMPLER(SamplerState_Linear_Repeat);
        SAMPLER(SamplerState_Linear_Repeat_Aniso8);
        TEXTURE2D(_BaseColorMap);
        SAMPLER(sampler_BaseColorMap);
        TEXTURE2D(_SpecularColorMap);
        SAMPLER(sampler_SpecularColorMap);
        TEXTURE2D(_BaseNormalMap);
        SAMPLER(sampler_BaseNormalMap);
        TEXTURE2D(_BaseMaskMap);
        SAMPLER(sampler_BaseMaskMap);
        TEXTURE2D(_CoverMaskA);
        SAMPLER(sampler_CoverMaskA);
        TEXTURE2D(_CoverBaseColorMap);
        SAMPLER(sampler_CoverBaseColorMap);
        TEXTURE2D(_CoverSpecularColorMap);
        SAMPLER(sampler_CoverSpecularColorMap);
        TEXTURE2D(_CoverNormalMap);
        SAMPLER(sampler_CoverNormalMap);
        TEXTURE2D(_CoverMaskMap);
        SAMPLER(sampler_CoverMaskMap);
        TEXTURE2D(_DetailMap);
        SAMPLER(sampler_DetailMap);
        
            // -- Property used by ScenePickingPass
            #ifdef SCENEPICKINGPASS
            float4 _SelectionID;
            #endif
        
            // -- Properties used by SceneSelectionPass
            #ifdef SCENESELECTIONPASS
            int _ObjectId;
            int _PassValue;
            #endif
        
            // Includes
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl"
        #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/NormalSurfaceGradient.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/BuiltinUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/DecalUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitDecalData.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderGraphFunctions.hlsl"
        	#include "./NM_Object_VSPro_Indirect.cginc"
        
            // --------------------------------------------------
            // Structs and Packing
        
            struct AttributesMesh
        {
             float3 positionOS : POSITION;
             float3 normalOS : NORMAL;
             float4 tangentOS : TANGENT;
             float4 uv0 : TEXCOORD0;
             float4 uv1 : TEXCOORD1;
             float4 uv2 : TEXCOORD2;
             float4 color : COLOR;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : INSTANCEID_SEMANTIC;
            #endif
        };
        struct VaryingsMeshToPS
        {
            SV_POSITION_QUALIFIERS float4 positionCS : SV_POSITION;
             float3 positionRWS;
             float3 normalWS;
             float4 tangentWS;
             float4 texCoord0;
             float4 texCoord1;
             float4 texCoord2;
             float4 color;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : CUSTOM_INSTANCE_ID;
            #endif
        };
        struct VertexDescriptionInputs
        {
             float3 ObjectSpaceNormal;
             float3 ObjectSpaceTangent;
             float3 ObjectSpacePosition;
        };
        struct SurfaceDescriptionInputs
        {
             float3 WorldSpaceNormal;
             float3 TangentSpaceNormal;
             float3 WorldSpaceTangent;
             float3 WorldSpaceBiTangent;
             float3 AbsoluteWorldSpacePosition;
             float4 uv0;
             float4 uv2;
             float4 VertexColor;
        };
        struct PackedVaryingsMeshToPS
        {
            SV_POSITION_QUALIFIERS float4 positionCS : SV_POSITION;
             float4 tangentWS : INTERP0;
             float4 texCoord0 : INTERP1;
             float4 texCoord1 : INTERP2;
             float4 texCoord2 : INTERP3;
             float4 color : INTERP4;
             float3 positionRWS : INTERP5;
             float3 normalWS : INTERP6;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : CUSTOM_INSTANCE_ID;
            #endif
        };
        
            PackedVaryingsMeshToPS PackVaryingsMeshToPS (VaryingsMeshToPS input)
        {
            PackedVaryingsMeshToPS output;
            ZERO_INITIALIZE(PackedVaryingsMeshToPS, output);
            output.positionCS = input.positionCS;
            output.tangentWS.xyzw = input.tangentWS;
            output.texCoord0.xyzw = input.texCoord0;
            output.texCoord1.xyzw = input.texCoord1;
            output.texCoord2.xyzw = input.texCoord2;
            output.color.xyzw = input.color;
            output.positionRWS.xyz = input.positionRWS;
            output.normalWS.xyz = input.normalWS;
            #if UNITY_ANY_INSTANCING_ENABLED
            output.instanceID = input.instanceID;
            #endif
            return output;
        }
        
        VaryingsMeshToPS UnpackVaryingsMeshToPS (PackedVaryingsMeshToPS input)
        {
            VaryingsMeshToPS output;
            output.positionCS = input.positionCS;
            output.tangentWS = input.tangentWS.xyzw;
            output.texCoord0 = input.texCoord0.xyzw;
            output.texCoord1 = input.texCoord1.xyzw;
            output.texCoord2 = input.texCoord2.xyzw;
            output.color = input.color.xyzw;
            output.positionRWS = input.positionRWS.xyz;
            output.normalWS = input.normalWS.xyz;
            #if UNITY_ANY_INSTANCING_ENABLED
            output.instanceID = input.instanceID;
            #endif
            return output;
        }
        
        
            // --------------------------------------------------
            // Graph
        
        
            // Graph Functions
            
        void AddPragma_float(float3 A, out float3 Out){
        #pragma instancing_options procedural:setupVSPro
        Out = A;
        }
        
        struct Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float
        {
        };
        
        void SG_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float(float3 Vector3_314C8600, Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float IN, out float3 ObjectSpacePosition_1)
        {
        float3 _Property_5ec158abd968858c9d31ab40df5e9e6f_Out_0_Vector3 = Vector3_314C8600;
        float3 _InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3;
        InjectSetup_float(_Property_5ec158abd968858c9d31ab40df5e9e6f_Out_0_Vector3, _InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3);
        float3 _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3;
        AddPragma_float(_InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3, _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3);
        ObjectSpacePosition_1 = _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3;
        }
        
        void Unity_Combine_float(float R, float G, float B, float A, out float4 RGBA, out float3 RGB, out float2 RG)
        {
            RGBA = float4(R, G, B, A);
            RGB = float3(R, G, B);
            RG = float2(R, G);
        }
        
        void Unity_Divide_float(float A, float B, out float Out)
        {
            Out = A / B;
        }
        
        void Unity_Multiply_float4_float4(float4 A, float4 B, out float4 Out)
        {
        Out = A * B;
        }
        
        void Unity_Branch_float4(float Predicate, float4 True, float4 False, out float4 Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_TilingAndOffset_float(float2 UV, float2 Tiling, float2 Offset, out float2 Out)
        {
            Out = UV * Tiling + Offset;
        }
        
        void Unity_Branch_float2(float Predicate, float2 True, float2 False, out float2 Out)
        {
            Out = Predicate ? True : False;
        }
        
        struct Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float
        {
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_2EBA7A3B, float Boolean_7ABB9909, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float IN, out float4 XZ_2)
        {
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Property_30834f691775a0898a45b1c868520436_Out_0_Boolean = Boolean_7ABB9909;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4 = Vector4_2EBA7A3B;
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[0];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[1];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[2];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[3];
        float _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float;
        Unity_Divide_float(1, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4 = IN.uv0;
        float4 _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4 = IN.uv2;
        float4 _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4;
        Unity_Branch_float4(_Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean, _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4, _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4, _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4);
        float2 _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float);
        float2 _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float);
        float2 _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4.xy), _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2, _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2, _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2);
        float2 _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2;
        Unity_Branch_float2(_Property_30834f691775a0898a45b1c868520436_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2, _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2);
        UnitySamplerState _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2) );
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        XZ_2 = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4;
        }
        
        void Unity_Multiply_float_float(float A, float B, out float Out)
        {
            Out = A * B;
        }
        
        void Unity_Add_float(float A, float B, out float Out)
        {
            Out = A + B;
        }
        
        void Unity_Saturate_float(float In, out float Out)
        {
            Out = saturate(In);
        }
        
        void Unity_Absolute_float(float In, out float Out)
        {
            Out = abs(In);
        }
        
        void Unity_SquareRoot_float4(float4 In, out float4 Out)
        {
            Out = sqrt(In);
        }
        
        void Unity_Sign_float(float In, out float Out)
        {
            Out = sign(In);
        }
        
        void Unity_Ceiling_float(float In, out float Out)
        {
            Out = ceil(In);
        }
        
        void Unity_Lerp_float4(float4 A, float4 B, float4 T, out float4 Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float
        {
        };
        
        void SG_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float(float4 Color_9AA111D3, float Vector1_FBE622A2, float Vector1_8C15C351, Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float IN, out float3 OutVector4_1)
        {
        float4 _Property_012510d774fb7f8b860f5270dca4500f_Out_0_Vector4 = Color_9AA111D3;
        float4 _SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4;
        Unity_SquareRoot_float4(_Property_012510d774fb7f8b860f5270dca4500f_Out_0_Vector4, _SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4);
        float _Property_a00e29241d12f983b30177515b367ec9_Out_0_Float = Vector1_FBE622A2;
        float _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float;
        Unity_Sign_float(_Property_a00e29241d12f983b30177515b367ec9_Out_0_Float, _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float);
        float _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float;
        Unity_Add_float(_Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float, 1, _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float);
        float _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float;
        Unity_Multiply_float_float(_Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float, 0.5, _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float);
        float _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float;
        Unity_Ceiling_float(_Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float);
        float _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float = Vector1_8C15C351;
        float _Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float;
        Unity_Multiply_float_float(_Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float);
        float4 _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4;
        Unity_Lerp_float4(_SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4, (_Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float.xxxx), (_Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float.xxxx), _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4);
        float4 _Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4, _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4, _Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4);
        OutVector4_1 = (_Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4.xyz);
        }
        
        void Unity_Clamp_float(float In, float Min, float Max, out float Out)
        {
            Out = clamp(In, Min, Max);
        }
        
        void Unity_Multiply_float2_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A * B;
        }
        
        void Unity_Add_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A + B;
        }
        
        void Unity_DotProduct_float2(float2 A, float2 B, out float Out)
        {
            Out = dot(A, B);
        }
        
        void Unity_OneMinus_float(float In, out float Out)
        {
            Out = 1 - In;
        }
        
        void Unity_SquareRoot_float(float In, out float Out)
        {
            Out = sqrt(In);
        }
        
        void Unity_Sign_float3(float3 In, out float3 Out)
        {
            Out = sign(In);
        }
        
        void Unity_Normalize_float3(float3 In, out float3 Out)
        {
            Out = normalize(In);
        }
        
        void Unity_Branch_float3(float Predicate, float3 True, float3 False, out float3 Out)
        {
            Out = Predicate ? True : False;
        }
        
        struct Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float
        {
        float3 WorldSpaceNormal;
        float3 WorldSpaceTangent;
        float3 WorldSpaceBiTangent;
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_82674548, float Boolean_9FF42DF6, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float IN, out float4 XZ_2)
        {
        float _Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean = Boolean_9FF42DF6;
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4 = Vector4_82674548;
        float _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[0];
        float _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[1];
        float _Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[2];
        float _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[3];
        float _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float;
        Unity_Divide_float(1, _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4 = IN.uv0;
        float4 _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4 = IN.uv2;
        float4 _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4;
        Unity_Branch_float4(_Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean, _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4, _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4, _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4);
        float2 _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float);
        float2 _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float, _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float);
        float2 _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4.xy), _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2, _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2, _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2);
        float2 _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2;
        Unity_Branch_float2(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2, _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2);
        UnitySamplerState _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2) );
        _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.rgb = UnpackNormal(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4);
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        float2 _Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2 = float2(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float, _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float);
        float3 _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3;
        Unity_Sign_float3(IN.WorldSpaceNormal, _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3);
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_R_1_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[0];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[1];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_B_3_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[2];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_A_4_Float = 0;
        float2 _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2 = float2(_Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float, 1);
        float2 _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2;
        Unity_Multiply_float2_float2(_Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2, _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2, _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2);
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float = IN.WorldSpaceNormal[0];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float = IN.WorldSpaceNormal[1];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float = IN.WorldSpaceNormal[2];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_A_4_Float = 0;
        float2 _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2 = float2(_Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float);
        float2 _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2;
        Unity_Add_float2(_Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2, _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2, _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2);
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[0];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[1];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_B_3_Float = 0;
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_A_4_Float = 0;
        float _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float;
        Unity_Multiply_float_float(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float);
        float3 _Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3 = float3(_Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float, _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float);
        float3 _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3;
        {
        float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
        _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3 = TransformWorldToTangent(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
        }
        float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
        Unity_Normalize_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3);
        float3 _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3;
        Unity_Branch_float3(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3, (_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.xyz), _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3);
        XZ_2 = (float4(_Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3, 1.0));
        }
        
        void Unity_NormalStrength_float(float3 In, float Strength, out float3 Out)
        {
            Out = float3(In.rg * Strength, lerp(1, In.b, saturate(Strength)));
        }
        
        void Unity_NormalBlend_float(float3 A, float3 B, out float3 Out)
        {
            Out = SafeNormalize(float3(A.rg + B.rg, A.b * B.b));
        }
        
        void Unity_Subtract_float(float A, float B, out float Out)
        {
            Out = A - B;
        }
        
        void Unity_Power_float(float A, float B, out float Out)
        {
            Out = pow(A, B);
        }
        
        void Unity_Lerp_float3(float3 A, float3 B, float3 T, out float3 Out)
        {
            Out = lerp(A, B, T);
        }
        
        void Unity_Remap_float(float In, float2 InMinMax, float2 OutMinMax, out float Out)
        {
            Out = OutMinMax.x + (In - InMinMax.x) * (OutMinMax.y - OutMinMax.x) / (InMinMax.y - InMinMax.x);
        }
        
        void Unity_Branch_float(float Predicate, float True, float False, out float Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_Multiply_float3_float3(float3 A, float3 B, out float3 Out)
        {
            Out = A * B;
        }
        
        void Unity_Lerp_float(float A, float B, float T, out float Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float
        {
        };
        
        void SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(float Vector1_32317166, float Vector1_FBE622A2, float Vector1_8C15C351, Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float IN, out float SmoothnessOverlay_1)
        {
        float _Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float = Vector1_32317166;
        float _Property_a00e29241d12f983b30177515b367ec9_Out_0_Float = Vector1_FBE622A2;
        float _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float;
        Unity_Sign_float(_Property_a00e29241d12f983b30177515b367ec9_Out_0_Float, _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float);
        float _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float;
        Unity_Add_float(_Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float, 1, _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float);
        float _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float;
        Unity_Multiply_float_float(_Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float, 0.5, _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float);
        float _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float;
        Unity_Ceiling_float(_Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float);
        float _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float = Vector1_8C15C351;
        float _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        Unity_Lerp_float(_Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float, _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float);
        SmoothnessOverlay_1 = _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        }
        
        void Unity_Lerp_float2(float2 A, float2 B, float2 T, out float2 Out)
        {
            Out = lerp(A, B, T);
        }
        
            // Graph Vertex
            struct VertexDescription
        {
            float3 Position;
            float3 Normal;
            float3 Tangent;
        };
        
        VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
        {
            VertexDescription description = (VertexDescription)0;
            Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430;
            float3 _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3;
            SG_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float(IN.ObjectSpacePosition, _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430, _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3);
            description.Position = _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3;
            description.Normal = IN.ObjectSpaceNormal;
            description.Tangent = IN.ObjectSpaceTangent;
            return description;
        }
        
            // Graph Pixel
            struct SurfaceDescription
        {
            float3 BaseColor;
            float3 Emission;
            float Alpha;
            float3 BentNormal;
            float Smoothness;
            float Occlusion;
            float3 NormalTS;
            float3 Specular;
            float4 VTPackedFeedback;
        };
        
        SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
        {
            SurfaceDescription surface = (SurfaceDescription)0;
            UnityTexture2D _Property_9c271219f828108f958217e55cd6dc1d_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseColorMap);
            float4 _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4 = _BaseTilingOffset;
            float _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean = _BaseUsePlanarUV;
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_f392575634df5b86b63ff6e287282b30;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.uv0 = IN.uv0;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.uv2 = IN.uv2;
            float4 _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_9c271219f828108f958217e55cd6dc1d_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_f392575634df5b86b63ff6e287282b30, _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4);
            float4 _Property_4f676fce92c9378db3c3b92ae77fbff9_Out_0_Vector4 = _BaseColor;
            float4 _Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4, _Property_4f676fce92c9378db3c3b92ae77fbff9_Out_0_Vector4, _Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4);
            UnityTexture2D _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_DetailMap);
            float4 _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4 = _DetailTilingOffset;
            float _Split_9fa8573190399e8da2a843a4cab68164_R_1_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[0];
            float _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[1];
            float _Split_9fa8573190399e8da2a843a4cab68164_B_3_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[2];
            float _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[3];
            float2 _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_R_1_Float, _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float);
            float2 _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_B_3_Float, _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float);
            float2 _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2;
            Unity_TilingAndOffset_float(IN.uv0.xy, _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2, _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2, _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2);
            float4 _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.tex, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.samplerstate, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.GetTransformedUV(_TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2) );
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_R_4_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.r;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.g;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.b;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.a;
            float _Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_R_4_Float, 2, _Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float);
            float _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float;
            Unity_Add_float(_Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float, -1, _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float);
            float _Property_7d68da97cd169d8e8649255aec16158a_Out_0_Float = _DetailAlbedoScale;
            float _Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float;
            Unity_Multiply_float_float(_Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float, _Property_7d68da97cd169d8e8649255aec16158a_Out_0_Float, _Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float);
            float _Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float;
            Unity_Saturate_float(_Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float, _Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float);
            float _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float;
            Unity_Absolute_float(_Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float, _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float);
            Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83;
            float3 _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3;
            SG_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float(_Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4, _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float, _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float, _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83, _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3);
            UnityTexture2D _Property_5ca167b35599f78ab3722ec527327841_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverBaseColorMap);
            float4 _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4 = _CoverTilingOffset;
            float _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean = _CoverUsePlanarUV;
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_ad1db3524021ac898447cb6f6daa4180;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.uv0 = IN.uv0;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.uv2 = IN.uv2;
            float4 _PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_5ca167b35599f78ab3722ec527327841_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_ad1db3524021ac898447cb6f6daa4180, _PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4);
            float4 _Property_b34e94e0b1171480b3e35ff7f4793d7c_Out_0_Vector4 = _CoverBaseColor;
            float4 _Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4, _Property_b34e94e0b1171480b3e35ff7f4793d7c_Out_0_Vector4, _Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4);
            float _Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean = _USEDYNAMICCOVERTSTATICMASKF;
            UnityTexture2D _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskA);
            float4 _UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4 = IN.uv0;
            float4 _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.tex, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.samplerstate, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.GetTransformedUV((_UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4.xy)) );
            float _SampleTexture2D_79111e5af287b084822e60563309a632_R_4_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.r;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_G_5_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.g;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_B_6_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.b;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.a;
            float _Property_c022d8255938838aa73170f05c226269_Out_0_Float = _CoverMaskPower;
            float _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float, _Property_c022d8255938838aa73170f05c226269_Out_0_Float, _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float);
            float _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float;
            Unity_Clamp_float(_Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float, 0, 1, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float);
            float2 _Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2 = float2(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float, _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float);
            float2 _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2, float2(2, 2), _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2);
            float2 _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2;
            Unity_Add_float2(_Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2, float2(-1, -1), _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2);
            float _Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float = _DetailNormalScale;
            float2 _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2, (_Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float.xx), _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2);
            float _Split_492de324af96c482b50573c79f9fb6a0_R_1_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[0];
            float _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[1];
            float _Split_492de324af96c482b50573c79f9fb6a0_B_3_Float = 0;
            float _Split_492de324af96c482b50573c79f9fb6a0_A_4_Float = 0;
            float _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float;
            Unity_DotProduct_float2(_Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float);
            float _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float;
            Unity_Saturate_float(_DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float, _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float);
            float _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float;
            Unity_OneMinus_float(_Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float, _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float);
            float _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float;
            Unity_SquareRoot_float(_OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            float3 _Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3 = float3(_Split_492de324af96c482b50573c79f9fb6a0_R_1_Float, _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            UnityTexture2D _Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseNormalMap);
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv0 = IN.uv0;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv2 = IN.uv2;
            float4 _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4);
            float _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float = _BaseNormalScale;
            float3 _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4.xyz), _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3);
            float3 _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3;
            Unity_NormalBlend_float(_Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3, _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3);
            UnityTexture2D _Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverNormalMap);
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv0 = IN.uv0;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv2 = IN.uv2;
            float4 _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4);
            float _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float = _CoverNormalBlendHardness;
            float3 _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3);
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_R_1_Float = IN.WorldSpaceNormal[0];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float = IN.WorldSpaceNormal[1];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_B_3_Float = IN.WorldSpaceNormal[2];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_A_4_Float = 0;
            float _Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float = _Cover_Amount;
            float _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float = _Cover_Amount_Grow_Speed;
            float _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float;
            Unity_Subtract_float(4, _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float);
            float _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float;
            Unity_Divide_float(_Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float);
            float _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float;
            Unity_Absolute_float(_Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float, _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float);
            float _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float;
            Unity_Power_float(_Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float);
            float _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float;
            Unity_Clamp_float(_Power_c11fc5724f830485a9c4df249a854571_Out_2_Float, 0, 2, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float);
            float _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float;
            Unity_Multiply_float_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float);
            float _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float;
            Unity_Saturate_float(_Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float, _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float);
            float _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float;
            Unity_Clamp_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, 0, 0.9999, _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float);
            float _Property_89633a46f34e1f8996557a9178d78478_Out_0_Float = _Cover_Max_Angle;
            float _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float;
            Unity_Divide_float(_Property_89633a46f34e1f8996557a9178d78478_Out_0_Float, 45, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float);
            float _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float;
            Unity_OneMinus_float(_Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float);
            float _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float;
            Unity_Subtract_float(_Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float, _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float);
            float _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float;
            Unity_Clamp_float(_Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float, 0, 2, _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
            float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
            Unity_Divide_float(1, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float);
            float _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_67dcc607b6da848097d3412324311616_Out_3_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float, _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float);
            float _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float;
            Unity_Absolute_float(_Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float, _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float);
            float _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float = _CoverHardness;
            float _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float;
            Unity_Power_float(_Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float);
            float _Property_f8753bb05d835089bda460d144f93c48_Out_0_Float = _Cover_Min_Height;
            float _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float;
            Unity_OneMinus_float(_Property_f8753bb05d835089bda460d144f93c48_Out_0_Float, _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float);
            float _Split_c66e04f85a2a7f87884040056599e65d_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
            float _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
            float _Split_c66e04f85a2a7f87884040056599e65d_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
            float _Split_c66e04f85a2a7f87884040056599e65d_A_4_Float = 0;
            float _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float;
            Unity_Add_float(_OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float, _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float);
            float _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, 1, _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
            float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
            Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, 0, 1, _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float);
            float _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float = _Cover_Min_Height_Blending;
            float _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float, _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float);
            float _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float;
            Unity_Divide_float(_Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float);
            float _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float;
            Unity_OneMinus_float(_Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float, _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float);
            float _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float;
            Unity_Add_float(_OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float, -0.5, _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
            float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
            Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, 0, 1, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float);
            float _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float;
            Unity_Add_float(_Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float, _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float);
            float _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float;
            Unity_Clamp_float(_Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float, 0, 1, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float);
            float _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float;
            Unity_Multiply_float_float(_Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float);
            float _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float;
            Unity_Multiply_float_float(_Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float);
            float3 _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3, (_Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float.xxx), _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3);
            float3 _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3;
            {
                float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
                _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3 = TransformTangentToWorldDir(_Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3.xyz, tangentTransform, false).xyz;
            }
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_R_1_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[0];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[1];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_B_3_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[2];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_A_4_Float = 0;
            float _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float;
            Unity_Multiply_float_float(_Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float);
            float _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float);
            float _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float);
            float _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float, _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float);
            UnityTexture2D _Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_36e64648ad8a6a849bc794b8693519da;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv0 = IN.uv0;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv2 = IN.uv2;
            float4 _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_36e64648ad8a6a849bc794b8693519da, _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4);
            float _Split_198ec92f3e753d8a9ad50db7d6527324_R_1_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[0];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[1];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[2];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[3];
            float _Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float = _CoverHeightMapMin;
            float _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float = _CoverHeightMapMax;
            float2 _Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2 = float2(_Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float, _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float);
            float _Property_277f22c36084858981418fa95133a562_Out_0_Float = _CoverHeightMapOffset;
            float2 _Add_53997153562831859cc7b582f3068877_Out_2_Vector2;
            Unity_Add_float2(_Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2, (_Property_277f22c36084858981418fa95133a562_Out_0_Float.xx), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2);
            float _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float, float2 (0, 1), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float);
            float _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float, _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float);
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float = IN.VertexColor[0];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float = IN.VertexColor[1];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_B_3_Float = IN.VertexColor[2];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_A_4_Float = IN.VertexColor[3];
            float _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float, _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float, _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float);
            float _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float;
            Unity_Saturate_float(_Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float);
            float _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float);
            float _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float;
            Unity_Branch_float(_Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float);
            float3 _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3;
            Unity_Lerp_float3(_BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3, (_Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4.xyz), (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxx), _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3);
            float4 _Property_e687576468764d85b6b46dca96d8a8e3_Out_0_Vector4 = _WetColor;
            float3 _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3;
            Unity_Multiply_float3_float3((_Property_e687576468764d85b6b46dca96d8a8e3_Out_0_Vector4.xyz), _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3, _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3);
            float _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float;
            Unity_OneMinus_float(_Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float);
            float3 _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
            Unity_Lerp_float3(_Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3, _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3, (_OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float.xxx), _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3);
            UnityTexture2D _Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv0 = IN.uv0;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv2 = IN.uv2;
            float4 _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4);
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_R_1_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[0];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[1];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_B_3_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[2];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[3];
            float _Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float = _BaseAORemapMin;
            float _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float = _BaseAORemapMax;
            float2 _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2 = float2(_Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float, _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float);
            float _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float, float2 (0, 1), _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2, _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float);
            float _Property_e353baf414594b8882fb914562e81165_Out_0_Float = _BaseSmoothnessRemapMin;
            float _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float = _BaseSmoothnessRemapMax;
            float2 _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2 = float2(_Property_e353baf414594b8882fb914562e81165_Out_0_Float, _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float);
            float _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float, float2 (0, 1), _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2, _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float);
            float _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float, 2, _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float);
            float _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float;
            Unity_Add_float(_Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float, -1, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float);
            float _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float = _DetailSmoothnessScale;
            float _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float;
            Unity_Multiply_float_float(_Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float, _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float);
            float _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float;
            Unity_Saturate_float(_Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float, _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float);
            float _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float;
            Unity_Absolute_float(_Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float);
            Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da;
            float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float;
            SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(_Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float);
            float _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float;
            Unity_Saturate_float(_BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float2 _Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2 = float2(_Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float _Property_5e08cfb127183a8993376f9087501eee_Out_0_Float = _CoverAORemapMin;
            float _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float = _CoverAORemapMax;
            float2 _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2 = float2(_Property_5e08cfb127183a8993376f9087501eee_Out_0_Float, _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float);
            float _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float, float2 (0, 1), _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2, _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float);
            float _Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float = _CoverSmoothnessRemapMin;
            float _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float = _CoverSmoothnessRemapMax;
            float2 _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2 = float2(_Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float, _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float);
            float _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float, float2 (0, 1), _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2 = float2(_Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2;
            Unity_Lerp_float2(_Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2, _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xx), _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2);
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_R_1_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[0];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[1];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_B_3_Float = 0;
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_A_4_Float = 0;
            float _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float = _WetSmoothness;
            float _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            Unity_Lerp_float(_Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float, _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float, _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float);
            float _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float = _CoverNormalScale;
            float3 _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3);
            float3 _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxx), _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3);
            UnityTexture2D _Property_f617479b11216b84b89956263f8d3c08_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_SpecularColorMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.uv0 = IN.uv0;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.uv2 = IN.uv2;
            float4 _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_f617479b11216b84b89956263f8d3c08_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d, _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4);
            float4 _Property_112303b9c27a1284b20f0a5c49fb436a_Out_0_Vector4 = _SpecularColor;
            float4 _Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4, _Property_112303b9c27a1284b20f0a5c49fb436a_Out_0_Vector4, _Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4);
            UnityTexture2D _Property_0c768f7d1094a8878d837f25970dbd49_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverSpecularColorMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_4b88db16993b7d84a6c9e021b5992a38;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.uv0 = IN.uv0;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.uv2 = IN.uv2;
            float4 _PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_0c768f7d1094a8878d837f25970dbd49_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_4b88db16993b7d84a6c9e021b5992a38, _PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4);
            float4 _Property_51d3c44a7110108d9e8c9a3acf54125f_Out_0_Vector4 = _CoverSpecularColor;
            float4 _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4, _Property_51d3c44a7110108d9e8c9a3acf54125f_Out_0_Vector4, _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4);
            float4 _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4;
            Unity_Lerp_float4(_Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4, _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxxx), _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4);
            surface.BaseColor = _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
            surface.Emission = float3(0, 0, 0);
            surface.Alpha = 1;
            surface.BentNormal = IN.TangentSpaceNormal;
            surface.Smoothness = _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            surface.Occlusion = _Split_beb57fcf05cbb6809f536625bac5fcbc_R_1_Float;
            surface.NormalTS = _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            surface.Specular = (_Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4.xyz);
            {
                surface.VTPackedFeedback = float4(1.0f,1.0f,1.0f,1.0f);
            }
            return surface;
        }
        
            // --------------------------------------------------
            // Build Graph Inputs
            #ifdef HAVE_VFX_MODIFICATION
            #define VFX_SRP_ATTRIBUTES AttributesMesh
            #define VaryingsMeshType VaryingsMeshToPS
            #define VFX_SRP_VARYINGS VaryingsMeshType
            #define VFX_SRP_SURFACE_INPUTS FragInputs
            #endif
            
        VertexDescriptionInputs AttributesMeshToVertexDescriptionInputs(AttributesMesh input)
        {
            VertexDescriptionInputs output;
            ZERO_INITIALIZE(VertexDescriptionInputs, output);
        
            output.ObjectSpaceNormal =                          input.normalOS;
            output.ObjectSpaceTangent =                         input.tangentOS.xyz;
            output.ObjectSpacePosition =                        input.positionOS;
        
            return output;
        }
        
        VertexDescription GetVertexDescription(AttributesMesh input, float3 timeParameters
        #ifdef HAVE_VFX_MODIFICATION
            , AttributesElement element
        #endif
        )
        {
            // build graph inputs
            VertexDescriptionInputs vertexDescriptionInputs = AttributesMeshToVertexDescriptionInputs(input);
            // Override time parameters with used one (This is required to correctly handle motion vectors for vertex animation based on time)
        
            // evaluate vertex graph
        #ifdef HAVE_VFX_MODIFICATION
            GraphProperties properties;
            ZERO_INITIALIZE(GraphProperties, properties);
        
            // Fetch the vertex graph properties for the particle instance.
            GetElementVertexProperties(element, properties);
        
            VertexDescription vertexDescription = VertexDescriptionFunction(vertexDescriptionInputs, properties);
        #else
            VertexDescription vertexDescription = VertexDescriptionFunction(vertexDescriptionInputs);
        #endif
            return vertexDescription;
        
        }
        
        AttributesMesh ApplyMeshModification(AttributesMesh input, float3 timeParameters
        #ifdef USE_CUSTOMINTERP_SUBSTRUCT
            #ifdef TESSELLATION_ON
            , inout VaryingsMeshToDS varyings
            #else
            , inout VaryingsMeshToPS varyings
            #endif
        #endif
        #ifdef HAVE_VFX_MODIFICATION
                , AttributesElement element
        #endif
            )
        {
            VertexDescription vertexDescription = GetVertexDescription(input, timeParameters
        #ifdef HAVE_VFX_MODIFICATION
                , element
        #endif
            );
        
            // copy graph output to the results
            input.positionOS = vertexDescription.Position;
            input.normalOS = vertexDescription.Normal;
            input.tangentOS.xyz = vertexDescription.Tangent;
        
            
        
            return input;
        }
        
        #if defined(_ADD_CUSTOM_VELOCITY) // For shader graph custom velocity
        // Return precomputed Velocity in object space
        float3 GetCustomVelocity(AttributesMesh input
        #ifdef HAVE_VFX_MODIFICATION
            , AttributesElement element
        #endif
        )
        {
            VertexDescription vertexDescription = GetVertexDescription(input, _TimeParameters.xyz
        #ifdef HAVE_VFX_MODIFICATION
                , element
        #endif
            );
            return vertexDescription.CustomVelocity;
        }
        #endif
        
        FragInputs BuildFragInputs(VaryingsMeshToPS input)
        {
            FragInputs output;
            ZERO_INITIALIZE(FragInputs, output);
        
            // Init to some default value to make the computer quiet (else it output 'divide by zero' warning even if value is not used).
            // TODO: this is a really poor workaround, but the variable is used in a bunch of places
            // to compute normals which are then passed on elsewhere to compute other values...
            output.tangentToWorld = k_identity3x3;
            output.positionSS = input.positionCS;       // input.positionCS is SV_Position
        
            output.positionRWS =                input.positionRWS;
            output.tangentToWorld =             BuildTangentToWorld(input.tangentWS, input.normalWS);
            output.texCoord0 =                  input.texCoord0;
            output.texCoord1 =                  input.texCoord1;
            output.texCoord2 =                  input.texCoord2;
            output.color =                      input.color;
        
        #ifdef HAVE_VFX_MODIFICATION
            // FragInputs from VFX come from two places: Interpolator or CBuffer.
        #if VFX_USE_GRAPH_VALUES
            uint instanceActiveIndex = asuint(UNITY_ACCESS_INSTANCED_PROP(PerInstance, _InstanceActiveIndex));
            /* WARNING: $splice Could not find named fragment 'VFXLoadGraphValues' */
        #endif
        
            /* WARNING: $splice Could not find named fragment 'VFXSetFragInputs' */
        
        #endif
        
            // splice point to copy custom interpolator fields from varyings to frag inputs
            
        
            return output;
        }
        
        // existing HDRP code uses the combined function to go directly from packed to frag inputs
        FragInputs UnpackVaryingsMeshToFragInputs(PackedVaryingsMeshToPS input)
        {
            UNITY_SETUP_INSTANCE_ID(input);
        #if defined(HAVE_VFX_MODIFICATION) && defined(UNITY_INSTANCING_ENABLED)
            unity_InstanceID = input.instanceID;
        #endif
            VaryingsMeshToPS unpacked = UnpackVaryingsMeshToPS(input);
            return BuildFragInputs(unpacked);
        }
            SurfaceDescriptionInputs FragInputsToSurfaceDescriptionInputs(FragInputs input, float3 viewWS)
        {
            SurfaceDescriptionInputs output;
            ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
        
            output.WorldSpaceNormal =                           normalize(input.tangentToWorld[2].xyz);
            #if defined(SHADER_STAGE_RAY_TRACING)
            #else
            #endif
            output.TangentSpaceNormal =                         float3(0.0f, 0.0f, 1.0f);
            output.WorldSpaceTangent =                          input.tangentToWorld[0].xyz;
            output.WorldSpaceBiTangent =                        input.tangentToWorld[1].xyz;
            output.AbsoluteWorldSpacePosition =                 GetAbsolutePositionWS(input.positionRWS);
        
        #if UNITY_UV_STARTS_AT_TOP
        #else
        #endif
        
        
            output.uv0 =                                        input.texCoord0;
            output.uv2 =                                        input.texCoord2;
            output.VertexColor =                                input.color;
        
            // splice point to copy frag inputs custom interpolator pack into the SDI
            
        
            return output;
        }
        
            // --------------------------------------------------
            // Build Surface Data (Specific Material)
        
        void ApplyDecalToSurfaceDataNoNormal(DecalSurfaceData decalSurfaceData, inout SurfaceData surfaceData);
        
        void ApplyDecalAndGetNormal(FragInputs fragInputs, PositionInputs posInput, SurfaceDescription surfaceDescription,
            inout SurfaceData surfaceData)
        {
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
        #ifdef DECAL_NORMAL_BLENDING
            // SG nodes don't ouptut surface gradients, so if decals require surf grad blending, we have to convert
            // the normal to gradient before applying the decal. We then have to resolve the gradient back to world space
            float3 normalTS;
        
            normalTS = SurfaceGradientFromTangentSpaceNormalAndFromTBN(surfaceDescription.NormalTS,
            fragInputs.tangentToWorld[0], fragInputs.tangentToWorld[1]);
        
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, fragInputs.tangentToWorld[2], normalTS);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        
            GetNormalWS_SG(fragInputs, normalTS, surfaceData.normalWS, doubleSidedConstants);
        #else
            // normal delivered to master node
            GetNormalWS(fragInputs, surfaceDescription.NormalTS, surfaceData.normalWS, doubleSidedConstants);
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                // Both uses and modifies 'surfaceData.normalWS'.
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, surfaceData.normalWS.xyz);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        #endif
        }
        void BuildSurfaceData(FragInputs fragInputs, inout SurfaceDescription surfaceDescription, float3 V, PositionInputs posInput, out SurfaceData surfaceData, out float3 bentNormalWS)
        {
            ZERO_INITIALIZE(SurfaceData, surfaceData);
        
            // specularOcclusion need to be init ahead of decal to quiet the compiler that modify the SurfaceData struct
            // however specularOcclusion can come from the graph, so need to be init here so it can be override.
            surfaceData.specularOcclusion = 1.0;
        
            surfaceData.baseColor =                 surfaceDescription.BaseColor;
            surfaceData.perceptualSmoothness =      surfaceDescription.Smoothness;
            surfaceData.ambientOcclusion =          surfaceDescription.Occlusion;
            surfaceData.specularColor =             surfaceDescription.Specular;
        
            #if defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE) || defined(_REFRACTION_THIN)
                if (_EnableSSRefraction)
                {
        
                    surfaceData.transmittanceMask = (1.0 - surfaceDescription.Alpha);
                    surfaceDescription.Alpha = 1.0;
                }
                else
                {
                    surfaceData.ior = 1.0;
                    surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                    surfaceData.atDistance = 1.0;
                    surfaceData.transmittanceMask = 0.0;
                    surfaceDescription.Alpha = 1.0;
                }
            #else
                surfaceData.ior = 1.0;
                surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                surfaceData.atDistance = 1.0;
                surfaceData.transmittanceMask = 0.0;
            #endif
        
            // These static material feature allow compile time optimization
            surfaceData.materialFeatures = MATERIALFEATUREFLAGS_LIT_STANDARD;
            #ifdef _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SUBSURFACE_SCATTERING;
            #endif
        
            #ifdef _MATERIAL_FEATURE_TRANSMISSION
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
            #endif
        
            #ifdef _MATERIAL_FEATURE_ANISOTROPY
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_ANISOTROPY;
        
                // Initialize the normal to something non-zero to avoid a div-zero warning for anisotropy.
                surfaceData.normalWS = float3(0, 1, 0);
            #endif
        
            #ifdef _MATERIAL_FEATURE_IRIDESCENCE
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_IRIDESCENCE;
            #endif
        
            #ifdef _MATERIAL_FEATURE_SPECULAR_COLOR
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SPECULAR_COLOR;
            #endif
        
            #ifdef _MATERIAL_FEATURE_CLEAR_COAT
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_CLEAR_COAT;
            #endif
        
            #if defined (_MATERIAL_FEATURE_SPECULAR_COLOR) && defined (_ENERGY_CONSERVING_SPECULAR)
                // Require to have setup baseColor
                // Reproduce the energy conservation done in legacy Unity. Not ideal but better for compatibility and users can unchek it
                surfaceData.baseColor *= (1.0 - Max3(surfaceData.specularColor.r, surfaceData.specularColor.g, surfaceData.specularColor.b));
            #endif
        
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
            ApplyDecalAndGetNormal(fragInputs, posInput, surfaceDescription, surfaceData);
        
            surfaceData.geomNormalWS = fragInputs.tangentToWorld[2];
        
            surfaceData.tangentWS = normalize(fragInputs.tangentToWorld[0].xyz);    // The tangent is not normalize in tangentToWorld for mikkt. TODO: Check if it expected that we normalize with Morten. Tag: SURFACE_GRADIENT
        
        
            bentNormalWS = surfaceData.normalWS;
        
            surfaceData.tangentWS = Orthonormalize(surfaceData.tangentWS, surfaceData.normalWS);
        
            #ifdef DEBUG_DISPLAY
                if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
                {
                    // TODO: need to update mip info
                    surfaceData.metallic = 0;
                }
        
                // We need to call ApplyDebugToSurfaceData after filling the surfarcedata and before filling builtinData
                // as it can modify attribute use for static lighting
                ApplyDebugToSurfaceData(fragInputs.tangentToWorld, surfaceData);
            #endif
        
            // By default we use the ambient occlusion with Tri-ace trick (apply outside) for specular occlusion.
            // If user provide bent normal then we process a better term
            #if defined(_SPECULAR_OCCLUSION_CUSTOM)
                // Just use the value passed through via the slot (not active otherwise)
            #elif defined(_SPECULAR_OCCLUSION_FROM_AO_BENT_NORMAL)
                // If we have bent normal and ambient occlusion, process a specular occlusion
                surfaceData.specularOcclusion = GetSpecularOcclusionFromBentAO(V, bentNormalWS, surfaceData.normalWS, surfaceData.ambientOcclusion, PerceptualSmoothnessToPerceptualRoughness(surfaceData.perceptualSmoothness));
            #elif defined(_AMBIENT_OCCLUSION) && defined(_SPECULAR_OCCLUSION_FROM_AO)
                surfaceData.specularOcclusion = GetSpecularOcclusionFromAmbientOcclusion(ClampNdotV(dot(surfaceData.normalWS, V)), surfaceData.ambientOcclusion, PerceptualSmoothnessToRoughness(surfaceData.perceptualSmoothness));
            #endif
        
            #if defined(_ENABLE_GEOMETRIC_SPECULAR_AA) && !defined(SHADER_STAGE_RAY_TRACING)
                surfaceData.perceptualSmoothness = GeometricNormalFiltering(surfaceData.perceptualSmoothness, fragInputs.tangentToWorld[2], surfaceDescription.SpecularAAScreenSpaceVariance, surfaceDescription.SpecularAAThreshold);
            #endif
        }
        
            // --------------------------------------------------
            // Get Surface And BuiltinData
        
            void GetSurfaceAndBuiltinData(FragInputs fragInputs, float3 V, inout PositionInputs posInput, out SurfaceData surfaceData, out BuiltinData builtinData RAY_TRACING_OPTIONAL_PARAMETERS)
            {
                // Don't dither if displaced tessellation (we're fading out the displacement instead to match the next LOD)
                #if !defined(SHADER_STAGE_RAY_TRACING) && !defined(_TESSELLATION_DISPLACEMENT)
                #ifdef LOD_FADE_CROSSFADE // enable dithering LOD transition if user select CrossFade transition in LOD group
                LODDitheringTransition(ComputeFadeMaskSeed(V, posInput.positionSS), unity_LODFade.x);
                #endif
                #endif
        
                #ifndef SHADER_UNLIT
                #ifdef _DOUBLESIDED_ON
                    float3 doubleSidedConstants = _DoubleSidedConstants.xyz;
                #else
                    float3 doubleSidedConstants = float3(1.0, 1.0, 1.0);
                #endif
        
                ApplyDoubleSidedFlipOrMirror(fragInputs, doubleSidedConstants); // Apply double sided flip on the vertex normal
                #endif // SHADER_UNLIT
        
                SurfaceDescriptionInputs surfaceDescriptionInputs = FragInputsToSurfaceDescriptionInputs(fragInputs, V);
        
                #if defined(HAVE_VFX_MODIFICATION)
                GraphProperties properties;
                ZERO_INITIALIZE(GraphProperties, properties);
        
                GetElementPixelProperties(fragInputs, properties);
        
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs, properties);
                #else
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs);
                #endif
        
                // Perform alpha test very early to save performance (a killed pixel will not sample textures)
                // TODO: split graph evaluation to grab just alpha dependencies first? tricky..
                #ifdef _ALPHATEST_ON
                    float alphaCutoff = surfaceDescription.AlphaClipThreshold;
                    #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
                    // The TransparentDepthPrepass is also used with SSR transparent.
                    // If an artists enable transaprent SSR but not the TransparentDepthPrepass itself, then we use AlphaClipThreshold
                    // otherwise if TransparentDepthPrepass is enabled we use AlphaClipThresholdDepthPrepass
                    #elif SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_POSTPASS
                    // DepthPostpass always use its own alpha threshold
                    alphaCutoff = surfaceDescription.AlphaClipThresholdDepthPostpass;
                    #elif (SHADERPASS == SHADERPASS_SHADOWS) || (SHADERPASS == SHADERPASS_RAYTRACING_VISIBILITY)
                    // If use shadow threshold isn't enable we don't allow any test
                    #endif
        
                    GENERIC_ALPHA_TEST(surfaceDescription.Alpha, alphaCutoff);
                #endif
        
                #if !defined(SHADER_STAGE_RAY_TRACING) && _DEPTHOFFSET_ON
                ApplyDepthOffsetPositionInput(V, surfaceDescription.DepthOffset, GetViewForwardDir(), GetWorldToHClipMatrix(), posInput);
                #endif
        
                #ifndef SHADER_UNLIT
                float3 bentNormalWS;
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData, bentNormalWS);
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD1
                    float4 lightmapTexCoord1 = fragInputs.texCoord1;
                #else
                    float4 lightmapTexCoord1 = float4(0,0,0,0);
                #endif
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD2
                    float4 lightmapTexCoord2 = fragInputs.texCoord2;
                #else
                    float4 lightmapTexCoord2 = float4(0,0,0,0);
                #endif
        
                // Builtin Data
                // For back lighting we use the oposite vertex normal
                InitBuiltinData(posInput, surfaceDescription.Alpha, bentNormalWS, -fragInputs.tangentToWorld[2], lightmapTexCoord1, lightmapTexCoord2, builtinData);
        
                #else
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData);
        
                ZERO_BUILTIN_INITIALIZE(builtinData); // No call to InitBuiltinData as we don't have any lighting
                builtinData.opacity = surfaceDescription.Alpha;
        
                #if defined(DEBUG_DISPLAY)
                    // Light Layers are currently not used for the Unlit shader (because it is not lit)
                    // But Unlit objects do cast shadows according to their rendering layer mask, which is what we want to
                    // display in the light layers visualization mode, therefore we need the renderingLayers
                    builtinData.renderingLayers = GetMeshRenderingLightLayer();
                #endif
        
                #endif // SHADER_UNLIT
        
                #ifdef _ALPHATEST_ON
                    // Used for sharpening by alpha to mask - Alpha to covertage is only used with depth only and forward pass (no shadow pass, no transparent pass)
                    builtinData.alphaClipTreshold = alphaCutoff;
                #endif
        
                // override sampleBakedGI - not used by Unlit
        
                builtinData.emissiveColor = surfaceDescription.Emission;
        
                // Note this will not fully work on transparent surfaces (can check with _SURFACE_TYPE_TRANSPARENT define)
                // We will always overwrite vt feeback with the nearest. So behind transparent surfaces vt will not be resolved
                // This is a limitation of the current MRT approach.
                #ifdef UNITY_VIRTUAL_TEXTURING
                builtinData.vtPackedFeedback = surfaceDescription.VTPackedFeedback;
                #endif
        
                #if _DEPTHOFFSET_ON
                builtinData.depthOffset = surfaceDescription.DepthOffset;
                #endif
        
                // TODO: We should generate distortion / distortionBlur for non distortion pass
                #if (SHADERPASS == SHADERPASS_DISTORTION)
                builtinData.distortion = surfaceDescription.Distortion;
                builtinData.distortionBlur = surfaceDescription.DistortionBlur;
                #endif
        
                #ifndef SHADER_UNLIT
                // PostInitBuiltinData call ApplyDebugToBuiltinData
                PostInitBuiltinData(V, posInput, surfaceData, builtinData);
                #else
                ApplyDebugToBuiltinData(builtinData);
                #endif
        
                RAY_TRACING_OPTIONAL_ALPHA_TEST_PASS
            }
        
            // --------------------------------------------------
            // Main
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassGBuffer.hlsl"
        
            // --------------------------------------------------
            // Visual Effect Vertex Invocations
        
        	#ifdef HAVE_VFX_MODIFICATION
        	#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
        	#endif
        
            ENDHLSL
        }
        Pass
        {
            Name "Forward"
            Tags
            {
                "LightMode" = "Forward"
            }
        
            // Render State
            Cull [_CullModeForward]
        Blend [_SrcBlend] [_DstBlend], [_AlphaSrcBlend] [_AlphaDstBlend]
        Blend 1 SrcAlpha OneMinusSrcAlpha
        ZTest [_ZTestDepthEqualForOpaque]
        ZWrite [_ZWrite]
        ColorMask [_ColorMaskTransparentVelOne] 1
        ColorMask [_ColorMaskTransparentVelTwo] 2
        Stencil
        {
        WriteMask [_StencilWriteMask]
        Ref [_StencilRef]
        CompFront Always
        PassFront Replace
        CompBack Always
        PassBack Replace
        }
        
            // Debug
            // <None>
        
            // --------------------------------------------------
            // Pass
        
            HLSLPROGRAM
        
            // Pragmas
            #pragma multi_compile _ DOTS_INSTANCING_ON
        #pragma instancing_options renderinglayer
        #pragma target 4.5
        #pragma vertex Vert
        #pragma fragment Frag
        #pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal switch
        #pragma multi_compile_instancing
        
            // Keywords
            #pragma shader_feature _ _SURFACE_TYPE_TRANSPARENT
        #pragma shader_feature_local _ _DOUBLESIDED_ON
        #pragma shader_feature_local _ _ADD_PRECOMPUTED_VELOCITY
        #pragma shader_feature_local _ _TRANSPARENT_WRITES_MOTION_VEC
        #pragma shader_feature_local_fragment _ _ENABLE_FOG_ON_TRANSPARENT
        #pragma multi_compile _ DEBUG_DISPLAY
        #pragma multi_compile _ LOD_FADE_CROSSFADE
        #pragma shader_feature_local_fragment _ _DISABLE_DECALS
        #pragma shader_feature_local_raytracing _ _DISABLE_DECALS
        #pragma shader_feature_local_fragment _ _DISABLE_SSR
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR
        #pragma shader_feature_local_fragment _ _DISABLE_SSR_TRANSPARENT
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR_TRANSPARENT
        #pragma multi_compile _ LIGHTMAP_ON
        #pragma multi_compile _ DIRLIGHTMAP_COMBINED
        #pragma multi_compile_fragment PROBE_VOLUMES_OFF PROBE_VOLUMES_L1 PROBE_VOLUMES_L2
        #pragma multi_compile_raytracing PROBE_VOLUMES_OFF PROBE_VOLUMES_L1 PROBE_VOLUMES_L2
        #pragma multi_compile _ DYNAMICLIGHTMAP_ON
        #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK
        #pragma multi_compile_raytracing _ SHADOWS_SHADOWMASK
        #pragma multi_compile_fragment DECALS_OFF DECALS_3RT DECALS_4RT
        #pragma multi_compile_fragment _ DECAL_SURFACE_GRADIENT
        #pragma multi_compile_fragment SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH
        #pragma multi_compile_fragment AREA_SHADOW_MEDIUM AREA_SHADOW_HIGH
        #pragma multi_compile_fragment SCREEN_SPACE_SHADOWS_OFF SCREEN_SPACE_SHADOWS_ON
        #pragma multi_compile_fragment USE_FPTL_LIGHTLIST USE_CLUSTERED_LIGHTLIST
        #pragma shader_feature_local _ _REFRACTION_PLANE _REFRACTION_SPHERE _REFRACTION_THIN
            // GraphKeywords: <None>
        
            // For custom interpolators to inject a substruct definition before FragInputs definition,
            // allowing for FragInputs to capture CI's intended for ShaderGraph's SDI.
            struct CustomInterpolators
        {
        };
        #define USE_CUSTOMINTERP_SUBSTRUCT
        
        
        
            // TODO: Merge FragInputsVFX substruct with CustomInterpolators.
        	#ifdef HAVE_VFX_MODIFICATION
        	struct FragInputsVFX
            {
                /* WARNING: $splice Could not find named fragment 'FragInputsVFX' */
            };
            #endif
        
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/GeometricTools.hlsl" // Required by Tessellation.hlsl
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Tessellation.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl" // Required to be include before we include properties as it define DECLARE_STACK_CB
            // Always include Shader Graph version
            // Always include last to avoid double macros
            #include "Packages/com.unity.shadergraph/ShaderGraphLibrary/Functions.hlsl" // Need to be here for Gradient struct definition
        
            // --------------------------------------------------
            // Defines
        
            // Attribute
            #define ATTRIBUTES_NEED_NORMAL
            #define ATTRIBUTES_NEED_TANGENT
            #define ATTRIBUTES_NEED_TEXCOORD0
            #define ATTRIBUTES_NEED_TEXCOORD1
            #define ATTRIBUTES_NEED_TEXCOORD2
            #define ATTRIBUTES_NEED_COLOR
            #define VARYINGS_NEED_POSITION_WS
            #define VARYINGS_NEED_TANGENT_TO_WORLD
            #define VARYINGS_NEED_TEXCOORD0
            #define VARYINGS_NEED_TEXCOORD1
            #define VARYINGS_NEED_TEXCOORD2
            #define VARYINGS_NEED_COLOR
        
            #define HAVE_MESH_MODIFICATION
        
            //Strip down the FragInputs.hlsl (on graphics), so we can only optimize the interpolators we use.
            //if by accident something requests contents of FragInputs.hlsl, it will be caught as a compiler error
            //Frag inputs stripping is only enabled when FRAG_INPUTS_ENABLE_STRIPPING is set
            #if !defined(SHADER_STAGE_RAY_TRACING) && SHADERPASS != SHADERPASS_RAYTRACING_GBUFFER && SHADERPASS != SHADERPASS_FULL_SCREEN_DEBUG
            #define FRAG_INPUTS_ENABLE_STRIPPING
            #endif
            #define FRAG_INPUTS_USE_TEXCOORD0
            #define FRAG_INPUTS_USE_TEXCOORD1
            #define FRAG_INPUTS_USE_TEXCOORD2
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/FragInputs.hlsl"
        
        
        
            #define SHADERPASS SHADERPASS_FORWARD
        #define SUPPORT_BLENDMODE_PRESERVE_SPECULAR_LIGHTING 1
        #define HAS_LIGHTLOOP 1
        #define RAYTRACING_SHADER_GRAPH_DEFAULT
        #define SHADER_LIT 1
        
        
            // Following two define are a workaround introduce in 10.1.x for RaytracingQualityNode
            // The ShaderGraph don't support correctly migration of this node as it serialize all the node data
            // in the json file making it impossible to uprgrade. Until we get a fix, we do a workaround here
            // to still allow us to rename the field and keyword of this node without breaking existing code.
            #ifdef RAYTRACING_SHADER_GRAPH_DEFAULT
            #define RAYTRACING_SHADER_GRAPH_HIGH
            #endif
        
            #ifdef RAYTRACING_SHADER_GRAPH_RAYTRACED
            #define RAYTRACING_SHADER_GRAPH_LOW
            #endif
            // end
        
            #ifndef SHADER_UNLIT
            // We need isFrontFace when using double sided - it is not required for unlit as in case of unlit double sided only drive the cullmode
            // VARYINGS_NEED_CULLFACE can be define by VaryingsMeshToPS.FaceSign input if a IsFrontFace Node is included in the shader graph.
            #if defined(_DOUBLESIDED_ON) && !defined(VARYINGS_NEED_CULLFACE)
                #define VARYINGS_NEED_CULLFACE
            #endif
            #endif
        
            // Specific Material Define
        #define _MATERIAL_FEATURE_SPECULAR_COLOR 1
        #define _AMBIENT_OCCLUSION 1
        #define _SPECULAR_OCCLUSION_FROM_AO 1
        #define _ENERGY_CONSERVING_SPECULAR 1
        
        // If we use subsurface scattering, enable output split lighting (for forward pass)
        #if defined(_MATERIAL_FEATURE_SUBSURFACE_SCATTERING) && !defined(_SURFACE_TYPE_TRANSPARENT)
            #define OUTPUT_SPLIT_LIGHTING
        #endif
        
        // This shader support recursive rendering for raytracing
        #define HAVE_RECURSIVE_RENDERING
        
        // In Path Tracing, For all single-sided, refractive materials, we want to force a thin refraction model
        #if (SHADERPASS == SHADERPASS_PATH_TRACING) && !defined(_DOUBLESIDED_ON) && (defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE))
            #undef  _REFRACTION_PLANE
            #undef  _REFRACTION_SPHERE
            #define _REFRACTION_THIN
        #endif
            // Caution: we can use the define SHADER_UNLIT onlit after the above Material include as it is the Unlit template who define it
        
            // To handle SSR on transparent correctly with a possibility to enable/disable it per framesettings
            // we should have a code like this:
            // if !defined(_DISABLE_SSR_TRANSPARENT)
            // pragma multi_compile _ WRITE_NORMAL_BUFFER
            // endif
            // i.e we enable the multicompile only if we can receive SSR or not, and then C# code drive
            // it based on if SSR transparent in frame settings and not (and stripper can strip it).
            // this is currently not possible with our current preprocessor as _DISABLE_SSR_TRANSPARENT is a keyword not a define
            // so instead we used this and chose to pay the extra cost of normal write even if SSR transaprent is disabled.
            // Ideally the shader graph generator should handle it but condition below can't be handle correctly for now.
            #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
            #if !defined(_DISABLE_SSR_TRANSPARENT) && !defined(SHADER_UNLIT)
                #define WRITE_NORMAL_BUFFER
            #endif
            #endif
        
            #ifndef DEBUG_DISPLAY
                // In case of opaque we don't want to perform the alpha test, it is done in depth prepass and we use depth equal for ztest (setup from UI)
                // Don't do it with debug display mode as it is possible there is no depth prepass in this case
                #if !defined(_SURFACE_TYPE_TRANSPARENT)
                    #if SHADERPASS == SHADERPASS_FORWARD
                    #define SHADERPASS_FORWARD_BYPASS_ALPHA_TEST
                    #elif SHADERPASS == SHADERPASS_GBUFFER
                    #define SHADERPASS_GBUFFER_BYPASS_ALPHA_TEST
                    #endif
                #endif
            #endif
        
            // Define _DEFERRED_CAPABLE_MATERIAL for shader capable to run in deferred pass
            #if defined(SHADER_LIT) && !defined(_SURFACE_TYPE_TRANSPARENT)
                #define _DEFERRED_CAPABLE_MATERIAL
            #endif
        
            // Translate transparent motion vector define
            #if defined(_TRANSPARENT_WRITES_MOTION_VEC) && defined(_SURFACE_TYPE_TRANSPARENT)
                #define _WRITE_TRANSPARENT_MOTION_VECTOR
            #endif
        
            // -- Graph Properties
            CBUFFER_START(UnityPerMaterial)
        float4 _BaseColor;
        float4 _BaseColorMap_TexelSize;
        float _BaseUsePlanarUV;
        float4 _BaseTilingOffset;
        float4 _SpecularColor;
        float4 _SpecularColorMap_TexelSize;
        float4 _BaseNormalMap_TexelSize;
        float _BaseNormalScale;
        float4 _BaseMaskMap_TexelSize;
        float _BaseAORemapMin;
        float _BaseAORemapMax;
        float _BaseSmoothnessRemapMin;
        float _BaseSmoothnessRemapMax;
        float _USEDYNAMICCOVERTSTATICMASKF;
        float4 _CoverMaskA_TexelSize;
        float _CoverMaskPower;
        float _Cover_Amount;
        float _Cover_Amount_Grow_Speed;
        float _Cover_Max_Angle;
        float _Cover_Min_Height;
        float _Cover_Min_Height_Blending;
        float4 _CoverBaseColor;
        float4 _CoverBaseColorMap_TexelSize;
        float _CoverUsePlanarUV;
        float4 _CoverTilingOffset;
        float4 _CoverSpecularColor;
        float4 _CoverSpecularColorMap_TexelSize;
        float4 _CoverNormalMap_TexelSize;
        float _CoverNormalScale;
        float _CoverNormalBlendHardness;
        float _CoverHardness;
        float _CoverHeightMapMin;
        float _CoverHeightMapMax;
        float _CoverHeightMapOffset;
        float4 _CoverMaskMap_TexelSize;
        float _CoverAORemapMin;
        float _CoverAORemapMax;
        float _CoverSmoothnessRemapMin;
        float _CoverSmoothnessRemapMax;
        float4 _DetailMap_TexelSize;
        float4 _DetailTilingOffset;
        float _DetailAlbedoScale;
        float _DetailNormalScale;
        float _DetailSmoothnessScale;
        float4 _WetColor;
        float _WetSmoothness;
        float4 _EmissionColor;
        float _UseShadowThreshold;
        float4 _DoubleSidedConstants;
        float _BlendMode;
        float _EnableBlendModePreserveSpecularLighting;
        float _RayTracing;
        float _RefractionModel;
        CBUFFER_END
        
        
        // Object and Global properties
        SAMPLER(SamplerState_Linear_Repeat);
        SAMPLER(SamplerState_Linear_Repeat_Aniso8);
        TEXTURE2D(_BaseColorMap);
        SAMPLER(sampler_BaseColorMap);
        TEXTURE2D(_SpecularColorMap);
        SAMPLER(sampler_SpecularColorMap);
        TEXTURE2D(_BaseNormalMap);
        SAMPLER(sampler_BaseNormalMap);
        TEXTURE2D(_BaseMaskMap);
        SAMPLER(sampler_BaseMaskMap);
        TEXTURE2D(_CoverMaskA);
        SAMPLER(sampler_CoverMaskA);
        TEXTURE2D(_CoverBaseColorMap);
        SAMPLER(sampler_CoverBaseColorMap);
        TEXTURE2D(_CoverSpecularColorMap);
        SAMPLER(sampler_CoverSpecularColorMap);
        TEXTURE2D(_CoverNormalMap);
        SAMPLER(sampler_CoverNormalMap);
        TEXTURE2D(_CoverMaskMap);
        SAMPLER(sampler_CoverMaskMap);
        TEXTURE2D(_DetailMap);
        SAMPLER(sampler_DetailMap);
        
            // -- Property used by ScenePickingPass
            #ifdef SCENEPICKINGPASS
            float4 _SelectionID;
            #endif
        
            // -- Properties used by SceneSelectionPass
            #ifdef SCENESELECTIONPASS
            int _ObjectId;
            int _PassValue;
            #endif
        
            // Includes
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl"
        #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/NormalSurfaceGradient.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Lighting.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/BuiltinUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/DecalUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitDecalData.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderGraphFunctions.hlsl"
        	#include "./NM_Object_VSPro_Indirect.cginc"
        
            // --------------------------------------------------
            // Structs and Packing
        
            struct AttributesMesh
        {
             float3 positionOS : POSITION;
             float3 normalOS : NORMAL;
             float4 tangentOS : TANGENT;
             float4 uv0 : TEXCOORD0;
             float4 uv1 : TEXCOORD1;
             float4 uv2 : TEXCOORD2;
             float4 color : COLOR;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : INSTANCEID_SEMANTIC;
            #endif
        };
        struct VaryingsMeshToPS
        {
            SV_POSITION_QUALIFIERS float4 positionCS : SV_POSITION;
             float3 positionRWS;
             float3 normalWS;
             float4 tangentWS;
             float4 texCoord0;
             float4 texCoord1;
             float4 texCoord2;
             float4 color;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : CUSTOM_INSTANCE_ID;
            #endif
        };
        struct VertexDescriptionInputs
        {
             float3 ObjectSpaceNormal;
             float3 ObjectSpaceTangent;
             float3 ObjectSpacePosition;
        };
        struct SurfaceDescriptionInputs
        {
             float3 WorldSpaceNormal;
             float3 TangentSpaceNormal;
             float3 WorldSpaceTangent;
             float3 WorldSpaceBiTangent;
             float3 AbsoluteWorldSpacePosition;
             float4 uv0;
             float4 uv2;
             float4 VertexColor;
        };
        struct PackedVaryingsMeshToPS
        {
            SV_POSITION_QUALIFIERS float4 positionCS : SV_POSITION;
             float4 tangentWS : INTERP0;
             float4 texCoord0 : INTERP1;
             float4 texCoord1 : INTERP2;
             float4 texCoord2 : INTERP3;
             float4 color : INTERP4;
             float3 positionRWS : INTERP5;
             float3 normalWS : INTERP6;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : CUSTOM_INSTANCE_ID;
            #endif
        };
        
            PackedVaryingsMeshToPS PackVaryingsMeshToPS (VaryingsMeshToPS input)
        {
            PackedVaryingsMeshToPS output;
            ZERO_INITIALIZE(PackedVaryingsMeshToPS, output);
            output.positionCS = input.positionCS;
            output.tangentWS.xyzw = input.tangentWS;
            output.texCoord0.xyzw = input.texCoord0;
            output.texCoord1.xyzw = input.texCoord1;
            output.texCoord2.xyzw = input.texCoord2;
            output.color.xyzw = input.color;
            output.positionRWS.xyz = input.positionRWS;
            output.normalWS.xyz = input.normalWS;
            #if UNITY_ANY_INSTANCING_ENABLED
            output.instanceID = input.instanceID;
            #endif
            return output;
        }
        
        VaryingsMeshToPS UnpackVaryingsMeshToPS (PackedVaryingsMeshToPS input)
        {
            VaryingsMeshToPS output;
            output.positionCS = input.positionCS;
            output.tangentWS = input.tangentWS.xyzw;
            output.texCoord0 = input.texCoord0.xyzw;
            output.texCoord1 = input.texCoord1.xyzw;
            output.texCoord2 = input.texCoord2.xyzw;
            output.color = input.color.xyzw;
            output.positionRWS = input.positionRWS.xyz;
            output.normalWS = input.normalWS.xyz;
            #if UNITY_ANY_INSTANCING_ENABLED
            output.instanceID = input.instanceID;
            #endif
            return output;
        }
        
        
            // --------------------------------------------------
            // Graph
        
        
            // Graph Functions
            
        void AddPragma_float(float3 A, out float3 Out){
        #pragma instancing_options procedural:setupVSPro
        Out = A;
        }
        
        struct Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float
        {
        };
        
        void SG_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float(float3 Vector3_314C8600, Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float IN, out float3 ObjectSpacePosition_1)
        {
        float3 _Property_5ec158abd968858c9d31ab40df5e9e6f_Out_0_Vector3 = Vector3_314C8600;
        float3 _InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3;
        InjectSetup_float(_Property_5ec158abd968858c9d31ab40df5e9e6f_Out_0_Vector3, _InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3);
        float3 _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3;
        AddPragma_float(_InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3, _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3);
        ObjectSpacePosition_1 = _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3;
        }
        
        void Unity_Combine_float(float R, float G, float B, float A, out float4 RGBA, out float3 RGB, out float2 RG)
        {
            RGBA = float4(R, G, B, A);
            RGB = float3(R, G, B);
            RG = float2(R, G);
        }
        
        void Unity_Divide_float(float A, float B, out float Out)
        {
            Out = A / B;
        }
        
        void Unity_Multiply_float4_float4(float4 A, float4 B, out float4 Out)
        {
        Out = A * B;
        }
        
        void Unity_Branch_float4(float Predicate, float4 True, float4 False, out float4 Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_TilingAndOffset_float(float2 UV, float2 Tiling, float2 Offset, out float2 Out)
        {
            Out = UV * Tiling + Offset;
        }
        
        void Unity_Branch_float2(float Predicate, float2 True, float2 False, out float2 Out)
        {
            Out = Predicate ? True : False;
        }
        
        struct Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float
        {
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_2EBA7A3B, float Boolean_7ABB9909, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float IN, out float4 XZ_2)
        {
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Property_30834f691775a0898a45b1c868520436_Out_0_Boolean = Boolean_7ABB9909;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4 = Vector4_2EBA7A3B;
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[0];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[1];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[2];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[3];
        float _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float;
        Unity_Divide_float(1, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4 = IN.uv0;
        float4 _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4 = IN.uv2;
        float4 _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4;
        Unity_Branch_float4(_Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean, _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4, _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4, _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4);
        float2 _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float);
        float2 _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float);
        float2 _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4.xy), _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2, _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2, _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2);
        float2 _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2;
        Unity_Branch_float2(_Property_30834f691775a0898a45b1c868520436_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2, _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2);
        UnitySamplerState _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2) );
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        XZ_2 = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4;
        }
        
        void Unity_Multiply_float_float(float A, float B, out float Out)
        {
            Out = A * B;
        }
        
        void Unity_Add_float(float A, float B, out float Out)
        {
            Out = A + B;
        }
        
        void Unity_Saturate_float(float In, out float Out)
        {
            Out = saturate(In);
        }
        
        void Unity_Absolute_float(float In, out float Out)
        {
            Out = abs(In);
        }
        
        void Unity_SquareRoot_float4(float4 In, out float4 Out)
        {
            Out = sqrt(In);
        }
        
        void Unity_Sign_float(float In, out float Out)
        {
            Out = sign(In);
        }
        
        void Unity_Ceiling_float(float In, out float Out)
        {
            Out = ceil(In);
        }
        
        void Unity_Lerp_float4(float4 A, float4 B, float4 T, out float4 Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float
        {
        };
        
        void SG_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float(float4 Color_9AA111D3, float Vector1_FBE622A2, float Vector1_8C15C351, Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float IN, out float3 OutVector4_1)
        {
        float4 _Property_012510d774fb7f8b860f5270dca4500f_Out_0_Vector4 = Color_9AA111D3;
        float4 _SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4;
        Unity_SquareRoot_float4(_Property_012510d774fb7f8b860f5270dca4500f_Out_0_Vector4, _SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4);
        float _Property_a00e29241d12f983b30177515b367ec9_Out_0_Float = Vector1_FBE622A2;
        float _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float;
        Unity_Sign_float(_Property_a00e29241d12f983b30177515b367ec9_Out_0_Float, _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float);
        float _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float;
        Unity_Add_float(_Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float, 1, _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float);
        float _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float;
        Unity_Multiply_float_float(_Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float, 0.5, _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float);
        float _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float;
        Unity_Ceiling_float(_Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float);
        float _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float = Vector1_8C15C351;
        float _Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float;
        Unity_Multiply_float_float(_Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float);
        float4 _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4;
        Unity_Lerp_float4(_SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4, (_Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float.xxxx), (_Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float.xxxx), _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4);
        float4 _Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4, _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4, _Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4);
        OutVector4_1 = (_Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4.xyz);
        }
        
        void Unity_Clamp_float(float In, float Min, float Max, out float Out)
        {
            Out = clamp(In, Min, Max);
        }
        
        void Unity_Multiply_float2_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A * B;
        }
        
        void Unity_Add_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A + B;
        }
        
        void Unity_DotProduct_float2(float2 A, float2 B, out float Out)
        {
            Out = dot(A, B);
        }
        
        void Unity_OneMinus_float(float In, out float Out)
        {
            Out = 1 - In;
        }
        
        void Unity_SquareRoot_float(float In, out float Out)
        {
            Out = sqrt(In);
        }
        
        void Unity_Sign_float3(float3 In, out float3 Out)
        {
            Out = sign(In);
        }
        
        void Unity_Normalize_float3(float3 In, out float3 Out)
        {
            Out = normalize(In);
        }
        
        void Unity_Branch_float3(float Predicate, float3 True, float3 False, out float3 Out)
        {
            Out = Predicate ? True : False;
        }
        
        struct Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float
        {
        float3 WorldSpaceNormal;
        float3 WorldSpaceTangent;
        float3 WorldSpaceBiTangent;
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_82674548, float Boolean_9FF42DF6, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float IN, out float4 XZ_2)
        {
        float _Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean = Boolean_9FF42DF6;
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4 = Vector4_82674548;
        float _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[0];
        float _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[1];
        float _Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[2];
        float _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[3];
        float _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float;
        Unity_Divide_float(1, _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4 = IN.uv0;
        float4 _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4 = IN.uv2;
        float4 _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4;
        Unity_Branch_float4(_Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean, _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4, _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4, _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4);
        float2 _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float);
        float2 _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float, _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float);
        float2 _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4.xy), _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2, _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2, _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2);
        float2 _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2;
        Unity_Branch_float2(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2, _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2);
        UnitySamplerState _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2) );
        _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.rgb = UnpackNormal(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4);
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        float2 _Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2 = float2(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float, _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float);
        float3 _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3;
        Unity_Sign_float3(IN.WorldSpaceNormal, _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3);
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_R_1_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[0];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[1];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_B_3_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[2];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_A_4_Float = 0;
        float2 _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2 = float2(_Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float, 1);
        float2 _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2;
        Unity_Multiply_float2_float2(_Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2, _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2, _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2);
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float = IN.WorldSpaceNormal[0];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float = IN.WorldSpaceNormal[1];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float = IN.WorldSpaceNormal[2];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_A_4_Float = 0;
        float2 _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2 = float2(_Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float);
        float2 _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2;
        Unity_Add_float2(_Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2, _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2, _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2);
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[0];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[1];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_B_3_Float = 0;
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_A_4_Float = 0;
        float _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float;
        Unity_Multiply_float_float(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float);
        float3 _Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3 = float3(_Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float, _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float);
        float3 _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3;
        {
        float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
        _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3 = TransformWorldToTangent(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
        }
        float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
        Unity_Normalize_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3);
        float3 _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3;
        Unity_Branch_float3(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3, (_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.xyz), _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3);
        XZ_2 = (float4(_Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3, 1.0));
        }
        
        void Unity_NormalStrength_float(float3 In, float Strength, out float3 Out)
        {
            Out = float3(In.rg * Strength, lerp(1, In.b, saturate(Strength)));
        }
        
        void Unity_NormalBlend_float(float3 A, float3 B, out float3 Out)
        {
            Out = SafeNormalize(float3(A.rg + B.rg, A.b * B.b));
        }
        
        void Unity_Subtract_float(float A, float B, out float Out)
        {
            Out = A - B;
        }
        
        void Unity_Power_float(float A, float B, out float Out)
        {
            Out = pow(A, B);
        }
        
        void Unity_Lerp_float3(float3 A, float3 B, float3 T, out float3 Out)
        {
            Out = lerp(A, B, T);
        }
        
        void Unity_Remap_float(float In, float2 InMinMax, float2 OutMinMax, out float Out)
        {
            Out = OutMinMax.x + (In - InMinMax.x) * (OutMinMax.y - OutMinMax.x) / (InMinMax.y - InMinMax.x);
        }
        
        void Unity_Branch_float(float Predicate, float True, float False, out float Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_Multiply_float3_float3(float3 A, float3 B, out float3 Out)
        {
            Out = A * B;
        }
        
        void Unity_Lerp_float(float A, float B, float T, out float Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float
        {
        };
        
        void SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(float Vector1_32317166, float Vector1_FBE622A2, float Vector1_8C15C351, Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float IN, out float SmoothnessOverlay_1)
        {
        float _Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float = Vector1_32317166;
        float _Property_a00e29241d12f983b30177515b367ec9_Out_0_Float = Vector1_FBE622A2;
        float _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float;
        Unity_Sign_float(_Property_a00e29241d12f983b30177515b367ec9_Out_0_Float, _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float);
        float _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float;
        Unity_Add_float(_Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float, 1, _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float);
        float _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float;
        Unity_Multiply_float_float(_Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float, 0.5, _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float);
        float _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float;
        Unity_Ceiling_float(_Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float);
        float _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float = Vector1_8C15C351;
        float _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        Unity_Lerp_float(_Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float, _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float);
        SmoothnessOverlay_1 = _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        }
        
        void Unity_Lerp_float2(float2 A, float2 B, float2 T, out float2 Out)
        {
            Out = lerp(A, B, T);
        }
        
            // Graph Vertex
            struct VertexDescription
        {
            float3 Position;
            float3 Normal;
            float3 Tangent;
        };
        
        VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
        {
            VertexDescription description = (VertexDescription)0;
            Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430;
            float3 _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3;
            SG_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float(IN.ObjectSpacePosition, _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430, _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3);
            description.Position = _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3;
            description.Normal = IN.ObjectSpaceNormal;
            description.Tangent = IN.ObjectSpaceTangent;
            return description;
        }
        
            // Graph Pixel
            struct SurfaceDescription
        {
            float3 BaseColor;
            float3 Emission;
            float Alpha;
            float3 BentNormal;
            float Smoothness;
            float Occlusion;
            float3 NormalTS;
            float3 Specular;
            float4 VTPackedFeedback;
        };
        
        SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
        {
            SurfaceDescription surface = (SurfaceDescription)0;
            UnityTexture2D _Property_9c271219f828108f958217e55cd6dc1d_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseColorMap);
            float4 _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4 = _BaseTilingOffset;
            float _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean = _BaseUsePlanarUV;
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_f392575634df5b86b63ff6e287282b30;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.uv0 = IN.uv0;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.uv2 = IN.uv2;
            float4 _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_9c271219f828108f958217e55cd6dc1d_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_f392575634df5b86b63ff6e287282b30, _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4);
            float4 _Property_4f676fce92c9378db3c3b92ae77fbff9_Out_0_Vector4 = _BaseColor;
            float4 _Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4, _Property_4f676fce92c9378db3c3b92ae77fbff9_Out_0_Vector4, _Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4);
            UnityTexture2D _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_DetailMap);
            float4 _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4 = _DetailTilingOffset;
            float _Split_9fa8573190399e8da2a843a4cab68164_R_1_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[0];
            float _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[1];
            float _Split_9fa8573190399e8da2a843a4cab68164_B_3_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[2];
            float _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[3];
            float2 _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_R_1_Float, _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float);
            float2 _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_B_3_Float, _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float);
            float2 _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2;
            Unity_TilingAndOffset_float(IN.uv0.xy, _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2, _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2, _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2);
            float4 _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.tex, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.samplerstate, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.GetTransformedUV(_TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2) );
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_R_4_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.r;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.g;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.b;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.a;
            float _Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_R_4_Float, 2, _Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float);
            float _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float;
            Unity_Add_float(_Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float, -1, _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float);
            float _Property_7d68da97cd169d8e8649255aec16158a_Out_0_Float = _DetailAlbedoScale;
            float _Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float;
            Unity_Multiply_float_float(_Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float, _Property_7d68da97cd169d8e8649255aec16158a_Out_0_Float, _Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float);
            float _Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float;
            Unity_Saturate_float(_Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float, _Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float);
            float _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float;
            Unity_Absolute_float(_Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float, _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float);
            Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83;
            float3 _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3;
            SG_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float(_Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4, _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float, _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float, _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83, _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3);
            UnityTexture2D _Property_5ca167b35599f78ab3722ec527327841_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverBaseColorMap);
            float4 _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4 = _CoverTilingOffset;
            float _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean = _CoverUsePlanarUV;
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_ad1db3524021ac898447cb6f6daa4180;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.uv0 = IN.uv0;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.uv2 = IN.uv2;
            float4 _PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_5ca167b35599f78ab3722ec527327841_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_ad1db3524021ac898447cb6f6daa4180, _PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4);
            float4 _Property_b34e94e0b1171480b3e35ff7f4793d7c_Out_0_Vector4 = _CoverBaseColor;
            float4 _Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4, _Property_b34e94e0b1171480b3e35ff7f4793d7c_Out_0_Vector4, _Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4);
            float _Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean = _USEDYNAMICCOVERTSTATICMASKF;
            UnityTexture2D _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskA);
            float4 _UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4 = IN.uv0;
            float4 _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.tex, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.samplerstate, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.GetTransformedUV((_UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4.xy)) );
            float _SampleTexture2D_79111e5af287b084822e60563309a632_R_4_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.r;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_G_5_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.g;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_B_6_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.b;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.a;
            float _Property_c022d8255938838aa73170f05c226269_Out_0_Float = _CoverMaskPower;
            float _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float, _Property_c022d8255938838aa73170f05c226269_Out_0_Float, _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float);
            float _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float;
            Unity_Clamp_float(_Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float, 0, 1, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float);
            float2 _Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2 = float2(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float, _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float);
            float2 _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2, float2(2, 2), _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2);
            float2 _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2;
            Unity_Add_float2(_Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2, float2(-1, -1), _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2);
            float _Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float = _DetailNormalScale;
            float2 _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2, (_Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float.xx), _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2);
            float _Split_492de324af96c482b50573c79f9fb6a0_R_1_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[0];
            float _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[1];
            float _Split_492de324af96c482b50573c79f9fb6a0_B_3_Float = 0;
            float _Split_492de324af96c482b50573c79f9fb6a0_A_4_Float = 0;
            float _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float;
            Unity_DotProduct_float2(_Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float);
            float _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float;
            Unity_Saturate_float(_DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float, _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float);
            float _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float;
            Unity_OneMinus_float(_Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float, _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float);
            float _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float;
            Unity_SquareRoot_float(_OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            float3 _Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3 = float3(_Split_492de324af96c482b50573c79f9fb6a0_R_1_Float, _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            UnityTexture2D _Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseNormalMap);
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv0 = IN.uv0;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv2 = IN.uv2;
            float4 _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4);
            float _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float = _BaseNormalScale;
            float3 _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4.xyz), _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3);
            float3 _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3;
            Unity_NormalBlend_float(_Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3, _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3);
            UnityTexture2D _Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverNormalMap);
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv0 = IN.uv0;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv2 = IN.uv2;
            float4 _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4);
            float _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float = _CoverNormalBlendHardness;
            float3 _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3);
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_R_1_Float = IN.WorldSpaceNormal[0];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float = IN.WorldSpaceNormal[1];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_B_3_Float = IN.WorldSpaceNormal[2];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_A_4_Float = 0;
            float _Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float = _Cover_Amount;
            float _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float = _Cover_Amount_Grow_Speed;
            float _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float;
            Unity_Subtract_float(4, _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float);
            float _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float;
            Unity_Divide_float(_Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float);
            float _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float;
            Unity_Absolute_float(_Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float, _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float);
            float _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float;
            Unity_Power_float(_Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float);
            float _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float;
            Unity_Clamp_float(_Power_c11fc5724f830485a9c4df249a854571_Out_2_Float, 0, 2, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float);
            float _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float;
            Unity_Multiply_float_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float);
            float _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float;
            Unity_Saturate_float(_Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float, _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float);
            float _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float;
            Unity_Clamp_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, 0, 0.9999, _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float);
            float _Property_89633a46f34e1f8996557a9178d78478_Out_0_Float = _Cover_Max_Angle;
            float _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float;
            Unity_Divide_float(_Property_89633a46f34e1f8996557a9178d78478_Out_0_Float, 45, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float);
            float _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float;
            Unity_OneMinus_float(_Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float);
            float _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float;
            Unity_Subtract_float(_Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float, _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float);
            float _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float;
            Unity_Clamp_float(_Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float, 0, 2, _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
            float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
            Unity_Divide_float(1, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float);
            float _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_67dcc607b6da848097d3412324311616_Out_3_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float, _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float);
            float _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float;
            Unity_Absolute_float(_Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float, _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float);
            float _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float = _CoverHardness;
            float _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float;
            Unity_Power_float(_Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float);
            float _Property_f8753bb05d835089bda460d144f93c48_Out_0_Float = _Cover_Min_Height;
            float _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float;
            Unity_OneMinus_float(_Property_f8753bb05d835089bda460d144f93c48_Out_0_Float, _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float);
            float _Split_c66e04f85a2a7f87884040056599e65d_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
            float _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
            float _Split_c66e04f85a2a7f87884040056599e65d_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
            float _Split_c66e04f85a2a7f87884040056599e65d_A_4_Float = 0;
            float _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float;
            Unity_Add_float(_OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float, _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float);
            float _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, 1, _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
            float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
            Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, 0, 1, _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float);
            float _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float = _Cover_Min_Height_Blending;
            float _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float, _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float);
            float _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float;
            Unity_Divide_float(_Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float);
            float _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float;
            Unity_OneMinus_float(_Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float, _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float);
            float _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float;
            Unity_Add_float(_OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float, -0.5, _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
            float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
            Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, 0, 1, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float);
            float _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float;
            Unity_Add_float(_Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float, _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float);
            float _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float;
            Unity_Clamp_float(_Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float, 0, 1, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float);
            float _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float;
            Unity_Multiply_float_float(_Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float);
            float _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float;
            Unity_Multiply_float_float(_Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float);
            float3 _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3, (_Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float.xxx), _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3);
            float3 _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3;
            {
                float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
                _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3 = TransformTangentToWorldDir(_Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3.xyz, tangentTransform, false).xyz;
            }
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_R_1_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[0];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[1];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_B_3_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[2];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_A_4_Float = 0;
            float _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float;
            Unity_Multiply_float_float(_Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float);
            float _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float);
            float _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float);
            float _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float, _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float);
            UnityTexture2D _Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_36e64648ad8a6a849bc794b8693519da;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv0 = IN.uv0;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv2 = IN.uv2;
            float4 _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_36e64648ad8a6a849bc794b8693519da, _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4);
            float _Split_198ec92f3e753d8a9ad50db7d6527324_R_1_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[0];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[1];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[2];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[3];
            float _Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float = _CoverHeightMapMin;
            float _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float = _CoverHeightMapMax;
            float2 _Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2 = float2(_Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float, _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float);
            float _Property_277f22c36084858981418fa95133a562_Out_0_Float = _CoverHeightMapOffset;
            float2 _Add_53997153562831859cc7b582f3068877_Out_2_Vector2;
            Unity_Add_float2(_Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2, (_Property_277f22c36084858981418fa95133a562_Out_0_Float.xx), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2);
            float _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float, float2 (0, 1), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float);
            float _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float, _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float);
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float = IN.VertexColor[0];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float = IN.VertexColor[1];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_B_3_Float = IN.VertexColor[2];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_A_4_Float = IN.VertexColor[3];
            float _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float, _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float, _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float);
            float _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float;
            Unity_Saturate_float(_Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float);
            float _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float);
            float _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float;
            Unity_Branch_float(_Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float);
            float3 _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3;
            Unity_Lerp_float3(_BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3, (_Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4.xyz), (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxx), _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3);
            float4 _Property_e687576468764d85b6b46dca96d8a8e3_Out_0_Vector4 = _WetColor;
            float3 _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3;
            Unity_Multiply_float3_float3((_Property_e687576468764d85b6b46dca96d8a8e3_Out_0_Vector4.xyz), _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3, _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3);
            float _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float;
            Unity_OneMinus_float(_Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float);
            float3 _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
            Unity_Lerp_float3(_Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3, _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3, (_OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float.xxx), _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3);
            UnityTexture2D _Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv0 = IN.uv0;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv2 = IN.uv2;
            float4 _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4);
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_R_1_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[0];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[1];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_B_3_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[2];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[3];
            float _Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float = _BaseAORemapMin;
            float _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float = _BaseAORemapMax;
            float2 _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2 = float2(_Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float, _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float);
            float _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float, float2 (0, 1), _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2, _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float);
            float _Property_e353baf414594b8882fb914562e81165_Out_0_Float = _BaseSmoothnessRemapMin;
            float _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float = _BaseSmoothnessRemapMax;
            float2 _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2 = float2(_Property_e353baf414594b8882fb914562e81165_Out_0_Float, _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float);
            float _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float, float2 (0, 1), _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2, _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float);
            float _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float, 2, _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float);
            float _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float;
            Unity_Add_float(_Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float, -1, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float);
            float _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float = _DetailSmoothnessScale;
            float _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float;
            Unity_Multiply_float_float(_Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float, _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float);
            float _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float;
            Unity_Saturate_float(_Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float, _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float);
            float _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float;
            Unity_Absolute_float(_Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float);
            Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da;
            float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float;
            SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(_Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float);
            float _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float;
            Unity_Saturate_float(_BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float2 _Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2 = float2(_Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float _Property_5e08cfb127183a8993376f9087501eee_Out_0_Float = _CoverAORemapMin;
            float _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float = _CoverAORemapMax;
            float2 _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2 = float2(_Property_5e08cfb127183a8993376f9087501eee_Out_0_Float, _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float);
            float _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float, float2 (0, 1), _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2, _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float);
            float _Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float = _CoverSmoothnessRemapMin;
            float _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float = _CoverSmoothnessRemapMax;
            float2 _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2 = float2(_Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float, _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float);
            float _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float, float2 (0, 1), _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2 = float2(_Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2;
            Unity_Lerp_float2(_Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2, _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xx), _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2);
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_R_1_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[0];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[1];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_B_3_Float = 0;
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_A_4_Float = 0;
            float _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float = _WetSmoothness;
            float _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            Unity_Lerp_float(_Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float, _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float, _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float);
            float _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float = _CoverNormalScale;
            float3 _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3);
            float3 _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxx), _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3);
            UnityTexture2D _Property_f617479b11216b84b89956263f8d3c08_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_SpecularColorMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.uv0 = IN.uv0;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.uv2 = IN.uv2;
            float4 _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_f617479b11216b84b89956263f8d3c08_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d, _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4);
            float4 _Property_112303b9c27a1284b20f0a5c49fb436a_Out_0_Vector4 = _SpecularColor;
            float4 _Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4, _Property_112303b9c27a1284b20f0a5c49fb436a_Out_0_Vector4, _Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4);
            UnityTexture2D _Property_0c768f7d1094a8878d837f25970dbd49_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverSpecularColorMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_4b88db16993b7d84a6c9e021b5992a38;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.uv0 = IN.uv0;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.uv2 = IN.uv2;
            float4 _PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_0c768f7d1094a8878d837f25970dbd49_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_4b88db16993b7d84a6c9e021b5992a38, _PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4);
            float4 _Property_51d3c44a7110108d9e8c9a3acf54125f_Out_0_Vector4 = _CoverSpecularColor;
            float4 _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4, _Property_51d3c44a7110108d9e8c9a3acf54125f_Out_0_Vector4, _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4);
            float4 _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4;
            Unity_Lerp_float4(_Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4, _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxxx), _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4);
            surface.BaseColor = _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
            surface.Emission = float3(0, 0, 0);
            surface.Alpha = 1;
            surface.BentNormal = IN.TangentSpaceNormal;
            surface.Smoothness = _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            surface.Occlusion = _Split_beb57fcf05cbb6809f536625bac5fcbc_R_1_Float;
            surface.NormalTS = _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            surface.Specular = (_Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4.xyz);
            {
                surface.VTPackedFeedback = float4(1.0f,1.0f,1.0f,1.0f);
            }
            return surface;
        }
        
            // --------------------------------------------------
            // Build Graph Inputs
            #ifdef HAVE_VFX_MODIFICATION
            #define VFX_SRP_ATTRIBUTES AttributesMesh
            #define VaryingsMeshType VaryingsMeshToPS
            #define VFX_SRP_VARYINGS VaryingsMeshType
            #define VFX_SRP_SURFACE_INPUTS FragInputs
            #endif
            
        VertexDescriptionInputs AttributesMeshToVertexDescriptionInputs(AttributesMesh input)
        {
            VertexDescriptionInputs output;
            ZERO_INITIALIZE(VertexDescriptionInputs, output);
        
            output.ObjectSpaceNormal =                          input.normalOS;
            output.ObjectSpaceTangent =                         input.tangentOS.xyz;
            output.ObjectSpacePosition =                        input.positionOS;
        
            return output;
        }
        
        VertexDescription GetVertexDescription(AttributesMesh input, float3 timeParameters
        #ifdef HAVE_VFX_MODIFICATION
            , AttributesElement element
        #endif
        )
        {
            // build graph inputs
            VertexDescriptionInputs vertexDescriptionInputs = AttributesMeshToVertexDescriptionInputs(input);
            // Override time parameters with used one (This is required to correctly handle motion vectors for vertex animation based on time)
        
            // evaluate vertex graph
        #ifdef HAVE_VFX_MODIFICATION
            GraphProperties properties;
            ZERO_INITIALIZE(GraphProperties, properties);
        
            // Fetch the vertex graph properties for the particle instance.
            GetElementVertexProperties(element, properties);
        
            VertexDescription vertexDescription = VertexDescriptionFunction(vertexDescriptionInputs, properties);
        #else
            VertexDescription vertexDescription = VertexDescriptionFunction(vertexDescriptionInputs);
        #endif
            return vertexDescription;
        
        }
        
        AttributesMesh ApplyMeshModification(AttributesMesh input, float3 timeParameters
        #ifdef USE_CUSTOMINTERP_SUBSTRUCT
            #ifdef TESSELLATION_ON
            , inout VaryingsMeshToDS varyings
            #else
            , inout VaryingsMeshToPS varyings
            #endif
        #endif
        #ifdef HAVE_VFX_MODIFICATION
                , AttributesElement element
        #endif
            )
        {
            VertexDescription vertexDescription = GetVertexDescription(input, timeParameters
        #ifdef HAVE_VFX_MODIFICATION
                , element
        #endif
            );
        
            // copy graph output to the results
            input.positionOS = vertexDescription.Position;
            input.normalOS = vertexDescription.Normal;
            input.tangentOS.xyz = vertexDescription.Tangent;
        
            
        
            return input;
        }
        
        #if defined(_ADD_CUSTOM_VELOCITY) // For shader graph custom velocity
        // Return precomputed Velocity in object space
        float3 GetCustomVelocity(AttributesMesh input
        #ifdef HAVE_VFX_MODIFICATION
            , AttributesElement element
        #endif
        )
        {
            VertexDescription vertexDescription = GetVertexDescription(input, _TimeParameters.xyz
        #ifdef HAVE_VFX_MODIFICATION
                , element
        #endif
            );
            return vertexDescription.CustomVelocity;
        }
        #endif
        
        FragInputs BuildFragInputs(VaryingsMeshToPS input)
        {
            FragInputs output;
            ZERO_INITIALIZE(FragInputs, output);
        
            // Init to some default value to make the computer quiet (else it output 'divide by zero' warning even if value is not used).
            // TODO: this is a really poor workaround, but the variable is used in a bunch of places
            // to compute normals which are then passed on elsewhere to compute other values...
            output.tangentToWorld = k_identity3x3;
            output.positionSS = input.positionCS;       // input.positionCS is SV_Position
        
            output.positionRWS =                input.positionRWS;
            output.tangentToWorld =             BuildTangentToWorld(input.tangentWS, input.normalWS);
            output.texCoord0 =                  input.texCoord0;
            output.texCoord1 =                  input.texCoord1;
            output.texCoord2 =                  input.texCoord2;
            output.color =                      input.color;
        
        #ifdef HAVE_VFX_MODIFICATION
            // FragInputs from VFX come from two places: Interpolator or CBuffer.
        #if VFX_USE_GRAPH_VALUES
            uint instanceActiveIndex = asuint(UNITY_ACCESS_INSTANCED_PROP(PerInstance, _InstanceActiveIndex));
            /* WARNING: $splice Could not find named fragment 'VFXLoadGraphValues' */
        #endif
        
            /* WARNING: $splice Could not find named fragment 'VFXSetFragInputs' */
        
        #endif
        
            // splice point to copy custom interpolator fields from varyings to frag inputs
            
        
            return output;
        }
        
        // existing HDRP code uses the combined function to go directly from packed to frag inputs
        FragInputs UnpackVaryingsMeshToFragInputs(PackedVaryingsMeshToPS input)
        {
            UNITY_SETUP_INSTANCE_ID(input);
        #if defined(HAVE_VFX_MODIFICATION) && defined(UNITY_INSTANCING_ENABLED)
            unity_InstanceID = input.instanceID;
        #endif
            VaryingsMeshToPS unpacked = UnpackVaryingsMeshToPS(input);
            return BuildFragInputs(unpacked);
        }
            SurfaceDescriptionInputs FragInputsToSurfaceDescriptionInputs(FragInputs input, float3 viewWS)
        {
            SurfaceDescriptionInputs output;
            ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
        
            output.WorldSpaceNormal =                           normalize(input.tangentToWorld[2].xyz);
            #if defined(SHADER_STAGE_RAY_TRACING)
            #else
            #endif
            output.TangentSpaceNormal =                         float3(0.0f, 0.0f, 1.0f);
            output.WorldSpaceTangent =                          input.tangentToWorld[0].xyz;
            output.WorldSpaceBiTangent =                        input.tangentToWorld[1].xyz;
            output.AbsoluteWorldSpacePosition =                 GetAbsolutePositionWS(input.positionRWS);
        
        #if UNITY_UV_STARTS_AT_TOP
        #else
        #endif
        
        
            output.uv0 =                                        input.texCoord0;
            output.uv2 =                                        input.texCoord2;
            output.VertexColor =                                input.color;
        
            // splice point to copy frag inputs custom interpolator pack into the SDI
            
        
            return output;
        }
        
            // --------------------------------------------------
            // Build Surface Data (Specific Material)
        
        void ApplyDecalToSurfaceDataNoNormal(DecalSurfaceData decalSurfaceData, inout SurfaceData surfaceData);
        
        void ApplyDecalAndGetNormal(FragInputs fragInputs, PositionInputs posInput, SurfaceDescription surfaceDescription,
            inout SurfaceData surfaceData)
        {
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
        #ifdef DECAL_NORMAL_BLENDING
            // SG nodes don't ouptut surface gradients, so if decals require surf grad blending, we have to convert
            // the normal to gradient before applying the decal. We then have to resolve the gradient back to world space
            float3 normalTS;
        
            normalTS = SurfaceGradientFromTangentSpaceNormalAndFromTBN(surfaceDescription.NormalTS,
            fragInputs.tangentToWorld[0], fragInputs.tangentToWorld[1]);
        
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, fragInputs.tangentToWorld[2], normalTS);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        
            GetNormalWS_SG(fragInputs, normalTS, surfaceData.normalWS, doubleSidedConstants);
        #else
            // normal delivered to master node
            GetNormalWS(fragInputs, surfaceDescription.NormalTS, surfaceData.normalWS, doubleSidedConstants);
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                // Both uses and modifies 'surfaceData.normalWS'.
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, surfaceData.normalWS.xyz);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        #endif
        }
        void BuildSurfaceData(FragInputs fragInputs, inout SurfaceDescription surfaceDescription, float3 V, PositionInputs posInput, out SurfaceData surfaceData, out float3 bentNormalWS)
        {
            ZERO_INITIALIZE(SurfaceData, surfaceData);
        
            // specularOcclusion need to be init ahead of decal to quiet the compiler that modify the SurfaceData struct
            // however specularOcclusion can come from the graph, so need to be init here so it can be override.
            surfaceData.specularOcclusion = 1.0;
        
            surfaceData.baseColor =                 surfaceDescription.BaseColor;
            surfaceData.perceptualSmoothness =      surfaceDescription.Smoothness;
            surfaceData.ambientOcclusion =          surfaceDescription.Occlusion;
            surfaceData.specularColor =             surfaceDescription.Specular;
        
            #if defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE) || defined(_REFRACTION_THIN)
                if (_EnableSSRefraction)
                {
        
                    surfaceData.transmittanceMask = (1.0 - surfaceDescription.Alpha);
                    surfaceDescription.Alpha = 1.0;
                }
                else
                {
                    surfaceData.ior = 1.0;
                    surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                    surfaceData.atDistance = 1.0;
                    surfaceData.transmittanceMask = 0.0;
                    surfaceDescription.Alpha = 1.0;
                }
            #else
                surfaceData.ior = 1.0;
                surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                surfaceData.atDistance = 1.0;
                surfaceData.transmittanceMask = 0.0;
            #endif
        
            // These static material feature allow compile time optimization
            surfaceData.materialFeatures = MATERIALFEATUREFLAGS_LIT_STANDARD;
            #ifdef _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SUBSURFACE_SCATTERING;
            #endif
        
            #ifdef _MATERIAL_FEATURE_TRANSMISSION
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
            #endif
        
            #ifdef _MATERIAL_FEATURE_ANISOTROPY
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_ANISOTROPY;
        
                // Initialize the normal to something non-zero to avoid a div-zero warning for anisotropy.
                surfaceData.normalWS = float3(0, 1, 0);
            #endif
        
            #ifdef _MATERIAL_FEATURE_IRIDESCENCE
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_IRIDESCENCE;
            #endif
        
            #ifdef _MATERIAL_FEATURE_SPECULAR_COLOR
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SPECULAR_COLOR;
            #endif
        
            #ifdef _MATERIAL_FEATURE_CLEAR_COAT
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_CLEAR_COAT;
            #endif
        
            #if defined (_MATERIAL_FEATURE_SPECULAR_COLOR) && defined (_ENERGY_CONSERVING_SPECULAR)
                // Require to have setup baseColor
                // Reproduce the energy conservation done in legacy Unity. Not ideal but better for compatibility and users can unchek it
                surfaceData.baseColor *= (1.0 - Max3(surfaceData.specularColor.r, surfaceData.specularColor.g, surfaceData.specularColor.b));
            #endif
        
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
            ApplyDecalAndGetNormal(fragInputs, posInput, surfaceDescription, surfaceData);
        
            surfaceData.geomNormalWS = fragInputs.tangentToWorld[2];
        
            surfaceData.tangentWS = normalize(fragInputs.tangentToWorld[0].xyz);    // The tangent is not normalize in tangentToWorld for mikkt. TODO: Check if it expected that we normalize with Morten. Tag: SURFACE_GRADIENT
        
        
            bentNormalWS = surfaceData.normalWS;
        
            surfaceData.tangentWS = Orthonormalize(surfaceData.tangentWS, surfaceData.normalWS);
        
            #ifdef DEBUG_DISPLAY
                if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
                {
                    // TODO: need to update mip info
                    surfaceData.metallic = 0;
                }
        
                // We need to call ApplyDebugToSurfaceData after filling the surfarcedata and before filling builtinData
                // as it can modify attribute use for static lighting
                ApplyDebugToSurfaceData(fragInputs.tangentToWorld, surfaceData);
            #endif
        
            // By default we use the ambient occlusion with Tri-ace trick (apply outside) for specular occlusion.
            // If user provide bent normal then we process a better term
            #if defined(_SPECULAR_OCCLUSION_CUSTOM)
                // Just use the value passed through via the slot (not active otherwise)
            #elif defined(_SPECULAR_OCCLUSION_FROM_AO_BENT_NORMAL)
                // If we have bent normal and ambient occlusion, process a specular occlusion
                surfaceData.specularOcclusion = GetSpecularOcclusionFromBentAO(V, bentNormalWS, surfaceData.normalWS, surfaceData.ambientOcclusion, PerceptualSmoothnessToPerceptualRoughness(surfaceData.perceptualSmoothness));
            #elif defined(_AMBIENT_OCCLUSION) && defined(_SPECULAR_OCCLUSION_FROM_AO)
                surfaceData.specularOcclusion = GetSpecularOcclusionFromAmbientOcclusion(ClampNdotV(dot(surfaceData.normalWS, V)), surfaceData.ambientOcclusion, PerceptualSmoothnessToRoughness(surfaceData.perceptualSmoothness));
            #endif
        
            #if defined(_ENABLE_GEOMETRIC_SPECULAR_AA) && !defined(SHADER_STAGE_RAY_TRACING)
                surfaceData.perceptualSmoothness = GeometricNormalFiltering(surfaceData.perceptualSmoothness, fragInputs.tangentToWorld[2], surfaceDescription.SpecularAAScreenSpaceVariance, surfaceDescription.SpecularAAThreshold);
            #endif
        }
        
            // --------------------------------------------------
            // Get Surface And BuiltinData
        
            void GetSurfaceAndBuiltinData(FragInputs fragInputs, float3 V, inout PositionInputs posInput, out SurfaceData surfaceData, out BuiltinData builtinData RAY_TRACING_OPTIONAL_PARAMETERS)
            {
                // Don't dither if displaced tessellation (we're fading out the displacement instead to match the next LOD)
                #if !defined(SHADER_STAGE_RAY_TRACING) && !defined(_TESSELLATION_DISPLACEMENT)
                #ifdef LOD_FADE_CROSSFADE // enable dithering LOD transition if user select CrossFade transition in LOD group
                LODDitheringTransition(ComputeFadeMaskSeed(V, posInput.positionSS), unity_LODFade.x);
                #endif
                #endif
        
                #ifndef SHADER_UNLIT
                #ifdef _DOUBLESIDED_ON
                    float3 doubleSidedConstants = _DoubleSidedConstants.xyz;
                #else
                    float3 doubleSidedConstants = float3(1.0, 1.0, 1.0);
                #endif
        
                ApplyDoubleSidedFlipOrMirror(fragInputs, doubleSidedConstants); // Apply double sided flip on the vertex normal
                #endif // SHADER_UNLIT
        
                SurfaceDescriptionInputs surfaceDescriptionInputs = FragInputsToSurfaceDescriptionInputs(fragInputs, V);
        
                #if defined(HAVE_VFX_MODIFICATION)
                GraphProperties properties;
                ZERO_INITIALIZE(GraphProperties, properties);
        
                GetElementPixelProperties(fragInputs, properties);
        
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs, properties);
                #else
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs);
                #endif
        
                // Perform alpha test very early to save performance (a killed pixel will not sample textures)
                // TODO: split graph evaluation to grab just alpha dependencies first? tricky..
                #ifdef _ALPHATEST_ON
                    float alphaCutoff = surfaceDescription.AlphaClipThreshold;
                    #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
                    // The TransparentDepthPrepass is also used with SSR transparent.
                    // If an artists enable transaprent SSR but not the TransparentDepthPrepass itself, then we use AlphaClipThreshold
                    // otherwise if TransparentDepthPrepass is enabled we use AlphaClipThresholdDepthPrepass
                    #elif SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_POSTPASS
                    // DepthPostpass always use its own alpha threshold
                    alphaCutoff = surfaceDescription.AlphaClipThresholdDepthPostpass;
                    #elif (SHADERPASS == SHADERPASS_SHADOWS) || (SHADERPASS == SHADERPASS_RAYTRACING_VISIBILITY)
                    // If use shadow threshold isn't enable we don't allow any test
                    #endif
        
                    GENERIC_ALPHA_TEST(surfaceDescription.Alpha, alphaCutoff);
                #endif
        
                #if !defined(SHADER_STAGE_RAY_TRACING) && _DEPTHOFFSET_ON
                ApplyDepthOffsetPositionInput(V, surfaceDescription.DepthOffset, GetViewForwardDir(), GetWorldToHClipMatrix(), posInput);
                #endif
        
                #ifndef SHADER_UNLIT
                float3 bentNormalWS;
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData, bentNormalWS);
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD1
                    float4 lightmapTexCoord1 = fragInputs.texCoord1;
                #else
                    float4 lightmapTexCoord1 = float4(0,0,0,0);
                #endif
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD2
                    float4 lightmapTexCoord2 = fragInputs.texCoord2;
                #else
                    float4 lightmapTexCoord2 = float4(0,0,0,0);
                #endif
        
                // Builtin Data
                // For back lighting we use the oposite vertex normal
                InitBuiltinData(posInput, surfaceDescription.Alpha, bentNormalWS, -fragInputs.tangentToWorld[2], lightmapTexCoord1, lightmapTexCoord2, builtinData);
        
                #else
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData);
        
                ZERO_BUILTIN_INITIALIZE(builtinData); // No call to InitBuiltinData as we don't have any lighting
                builtinData.opacity = surfaceDescription.Alpha;
        
                #if defined(DEBUG_DISPLAY)
                    // Light Layers are currently not used for the Unlit shader (because it is not lit)
                    // But Unlit objects do cast shadows according to their rendering layer mask, which is what we want to
                    // display in the light layers visualization mode, therefore we need the renderingLayers
                    builtinData.renderingLayers = GetMeshRenderingLightLayer();
                #endif
        
                #endif // SHADER_UNLIT
        
                #ifdef _ALPHATEST_ON
                    // Used for sharpening by alpha to mask - Alpha to covertage is only used with depth only and forward pass (no shadow pass, no transparent pass)
                    builtinData.alphaClipTreshold = alphaCutoff;
                #endif
        
                // override sampleBakedGI - not used by Unlit
        
                builtinData.emissiveColor = surfaceDescription.Emission;
        
                // Note this will not fully work on transparent surfaces (can check with _SURFACE_TYPE_TRANSPARENT define)
                // We will always overwrite vt feeback with the nearest. So behind transparent surfaces vt will not be resolved
                // This is a limitation of the current MRT approach.
                #ifdef UNITY_VIRTUAL_TEXTURING
                builtinData.vtPackedFeedback = surfaceDescription.VTPackedFeedback;
                #endif
        
                #if _DEPTHOFFSET_ON
                builtinData.depthOffset = surfaceDescription.DepthOffset;
                #endif
        
                // TODO: We should generate distortion / distortionBlur for non distortion pass
                #if (SHADERPASS == SHADERPASS_DISTORTION)
                builtinData.distortion = surfaceDescription.Distortion;
                builtinData.distortionBlur = surfaceDescription.DistortionBlur;
                #endif
        
                #ifndef SHADER_UNLIT
                // PostInitBuiltinData call ApplyDebugToBuiltinData
                PostInitBuiltinData(V, posInput, surfaceData, builtinData);
                #else
                ApplyDebugToBuiltinData(builtinData);
                #endif
        
                RAY_TRACING_OPTIONAL_ALPHA_TEST_PASS
            }
        
            // --------------------------------------------------
            // Main
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassForward.hlsl"
        
            // --------------------------------------------------
            // Visual Effect Vertex Invocations
        
        	#ifdef HAVE_VFX_MODIFICATION
        	#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
        	#endif
        
            ENDHLSL
        }
        Pass
        {
            Name "RayTracingPrepass"
            Tags
            {
                "LightMode" = "RayTracingPrepass"
            }
        
            // Render State
            Cull [_CullMode]
        Blend One Zero
        ZWrite On
        
            // Debug
            // <None>
        
            // --------------------------------------------------
            // Pass
        
            HLSLPROGRAM
        
            // Pragmas
            #pragma target 4.5
        #pragma vertex Vert
        #pragma fragment Frag
        #pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal switch
        #pragma multi_compile_instancing
        
            // Keywords
            #pragma shader_feature _ _SURFACE_TYPE_TRANSPARENT
        #pragma shader_feature_local _ _DOUBLESIDED_ON
        #pragma shader_feature_local _ _ADD_PRECOMPUTED_VELOCITY
        #pragma shader_feature_local _ _TRANSPARENT_WRITES_MOTION_VEC
        #pragma shader_feature_local_fragment _ _ENABLE_FOG_ON_TRANSPARENT
        #pragma shader_feature_local_fragment _ _DISABLE_DECALS
        #pragma shader_feature_local_raytracing _ _DISABLE_DECALS
        #pragma shader_feature_local_fragment _ _DISABLE_SSR
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR
        #pragma shader_feature_local_fragment _ _DISABLE_SSR_TRANSPARENT
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR_TRANSPARENT
        #pragma shader_feature_local _ _REFRACTION_PLANE _REFRACTION_SPHERE _REFRACTION_THIN
            // GraphKeywords: <None>
        
            // For custom interpolators to inject a substruct definition before FragInputs definition,
            // allowing for FragInputs to capture CI's intended for ShaderGraph's SDI.
            struct CustomInterpolators
        {
        };
        #define USE_CUSTOMINTERP_SUBSTRUCT
        
        
        
            // TODO: Merge FragInputsVFX substruct with CustomInterpolators.
        	#ifdef HAVE_VFX_MODIFICATION
        	struct FragInputsVFX
            {
                /* WARNING: $splice Could not find named fragment 'FragInputsVFX' */
            };
            #endif
        
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/GeometricTools.hlsl" // Required by Tessellation.hlsl
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Tessellation.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl" // Required to be include before we include properties as it define DECLARE_STACK_CB
            // Always include Shader Graph version
            // Always include last to avoid double macros
            #include "Packages/com.unity.shadergraph/ShaderGraphLibrary/Functions.hlsl" // Need to be here for Gradient struct definition
        
            // --------------------------------------------------
            // Defines
        
            // Attribute
            #define ATTRIBUTES_NEED_NORMAL
            #define ATTRIBUTES_NEED_TANGENT
            #define ATTRIBUTES_NEED_TEXCOORD0
            #define ATTRIBUTES_NEED_TEXCOORD2
            #define ATTRIBUTES_NEED_COLOR
            #define VARYINGS_NEED_POSITION_WS
            #define VARYINGS_NEED_TANGENT_TO_WORLD
            #define VARYINGS_NEED_TEXCOORD0
            #define VARYINGS_NEED_TEXCOORD2
            #define VARYINGS_NEED_COLOR
        
            #define HAVE_MESH_MODIFICATION
        
            //Strip down the FragInputs.hlsl (on graphics), so we can only optimize the interpolators we use.
            //if by accident something requests contents of FragInputs.hlsl, it will be caught as a compiler error
            //Frag inputs stripping is only enabled when FRAG_INPUTS_ENABLE_STRIPPING is set
            #if !defined(SHADER_STAGE_RAY_TRACING) && SHADERPASS != SHADERPASS_RAYTRACING_GBUFFER && SHADERPASS != SHADERPASS_FULL_SCREEN_DEBUG
            #define FRAG_INPUTS_ENABLE_STRIPPING
            #endif
            #define FRAG_INPUTS_USE_TEXCOORD0
            #define FRAG_INPUTS_USE_TEXCOORD2
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/FragInputs.hlsl"
        
        
        
            #define SHADERPASS SHADERPASS_CONSTANT
        #define RAYTRACING_SHADER_GRAPH_DEFAULT
        
        
            // Following two define are a workaround introduce in 10.1.x for RaytracingQualityNode
            // The ShaderGraph don't support correctly migration of this node as it serialize all the node data
            // in the json file making it impossible to uprgrade. Until we get a fix, we do a workaround here
            // to still allow us to rename the field and keyword of this node without breaking existing code.
            #ifdef RAYTRACING_SHADER_GRAPH_DEFAULT
            #define RAYTRACING_SHADER_GRAPH_HIGH
            #endif
        
            #ifdef RAYTRACING_SHADER_GRAPH_RAYTRACED
            #define RAYTRACING_SHADER_GRAPH_LOW
            #endif
            // end
        
            #ifndef SHADER_UNLIT
            // We need isFrontFace when using double sided - it is not required for unlit as in case of unlit double sided only drive the cullmode
            // VARYINGS_NEED_CULLFACE can be define by VaryingsMeshToPS.FaceSign input if a IsFrontFace Node is included in the shader graph.
            #if defined(_DOUBLESIDED_ON) && !defined(VARYINGS_NEED_CULLFACE)
                #define VARYINGS_NEED_CULLFACE
            #endif
            #endif
        
            // Specific Material Define
        #define _MATERIAL_FEATURE_SPECULAR_COLOR 1
        #define _AMBIENT_OCCLUSION 1
        #define _SPECULAR_OCCLUSION_FROM_AO 1
        #define _ENERGY_CONSERVING_SPECULAR 1
        
        // If we use subsurface scattering, enable output split lighting (for forward pass)
        #if defined(_MATERIAL_FEATURE_SUBSURFACE_SCATTERING) && !defined(_SURFACE_TYPE_TRANSPARENT)
            #define OUTPUT_SPLIT_LIGHTING
        #endif
        
        // This shader support recursive rendering for raytracing
        #define HAVE_RECURSIVE_RENDERING
        
        // In Path Tracing, For all single-sided, refractive materials, we want to force a thin refraction model
        #if (SHADERPASS == SHADERPASS_PATH_TRACING) && !defined(_DOUBLESIDED_ON) && (defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE))
            #undef  _REFRACTION_PLANE
            #undef  _REFRACTION_SPHERE
            #define _REFRACTION_THIN
        #endif
            // Caution: we can use the define SHADER_UNLIT onlit after the above Material include as it is the Unlit template who define it
        
            // To handle SSR on transparent correctly with a possibility to enable/disable it per framesettings
            // we should have a code like this:
            // if !defined(_DISABLE_SSR_TRANSPARENT)
            // pragma multi_compile _ WRITE_NORMAL_BUFFER
            // endif
            // i.e we enable the multicompile only if we can receive SSR or not, and then C# code drive
            // it based on if SSR transparent in frame settings and not (and stripper can strip it).
            // this is currently not possible with our current preprocessor as _DISABLE_SSR_TRANSPARENT is a keyword not a define
            // so instead we used this and chose to pay the extra cost of normal write even if SSR transaprent is disabled.
            // Ideally the shader graph generator should handle it but condition below can't be handle correctly for now.
            #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
            #if !defined(_DISABLE_SSR_TRANSPARENT) && !defined(SHADER_UNLIT)
                #define WRITE_NORMAL_BUFFER
            #endif
            #endif
        
            #ifndef DEBUG_DISPLAY
                // In case of opaque we don't want to perform the alpha test, it is done in depth prepass and we use depth equal for ztest (setup from UI)
                // Don't do it with debug display mode as it is possible there is no depth prepass in this case
                #if !defined(_SURFACE_TYPE_TRANSPARENT)
                    #if SHADERPASS == SHADERPASS_FORWARD
                    #define SHADERPASS_FORWARD_BYPASS_ALPHA_TEST
                    #elif SHADERPASS == SHADERPASS_GBUFFER
                    #define SHADERPASS_GBUFFER_BYPASS_ALPHA_TEST
                    #endif
                #endif
            #endif
        
            // Define _DEFERRED_CAPABLE_MATERIAL for shader capable to run in deferred pass
            #if defined(SHADER_LIT) && !defined(_SURFACE_TYPE_TRANSPARENT)
                #define _DEFERRED_CAPABLE_MATERIAL
            #endif
        
            // Translate transparent motion vector define
            #if defined(_TRANSPARENT_WRITES_MOTION_VEC) && defined(_SURFACE_TYPE_TRANSPARENT)
                #define _WRITE_TRANSPARENT_MOTION_VECTOR
            #endif
        
            // -- Graph Properties
            CBUFFER_START(UnityPerMaterial)
        float4 _BaseColor;
        float4 _BaseColorMap_TexelSize;
        float _BaseUsePlanarUV;
        float4 _BaseTilingOffset;
        float4 _SpecularColor;
        float4 _SpecularColorMap_TexelSize;
        float4 _BaseNormalMap_TexelSize;
        float _BaseNormalScale;
        float4 _BaseMaskMap_TexelSize;
        float _BaseAORemapMin;
        float _BaseAORemapMax;
        float _BaseSmoothnessRemapMin;
        float _BaseSmoothnessRemapMax;
        float _USEDYNAMICCOVERTSTATICMASKF;
        float4 _CoverMaskA_TexelSize;
        float _CoverMaskPower;
        float _Cover_Amount;
        float _Cover_Amount_Grow_Speed;
        float _Cover_Max_Angle;
        float _Cover_Min_Height;
        float _Cover_Min_Height_Blending;
        float4 _CoverBaseColor;
        float4 _CoverBaseColorMap_TexelSize;
        float _CoverUsePlanarUV;
        float4 _CoverTilingOffset;
        float4 _CoverSpecularColor;
        float4 _CoverSpecularColorMap_TexelSize;
        float4 _CoverNormalMap_TexelSize;
        float _CoverNormalScale;
        float _CoverNormalBlendHardness;
        float _CoverHardness;
        float _CoverHeightMapMin;
        float _CoverHeightMapMax;
        float _CoverHeightMapOffset;
        float4 _CoverMaskMap_TexelSize;
        float _CoverAORemapMin;
        float _CoverAORemapMax;
        float _CoverSmoothnessRemapMin;
        float _CoverSmoothnessRemapMax;
        float4 _DetailMap_TexelSize;
        float4 _DetailTilingOffset;
        float _DetailAlbedoScale;
        float _DetailNormalScale;
        float _DetailSmoothnessScale;
        float4 _WetColor;
        float _WetSmoothness;
        float4 _EmissionColor;
        float _UseShadowThreshold;
        float4 _DoubleSidedConstants;
        float _BlendMode;
        float _EnableBlendModePreserveSpecularLighting;
        float _RayTracing;
        float _RefractionModel;
        CBUFFER_END
        
        
        // Object and Global properties
        SAMPLER(SamplerState_Linear_Repeat);
        SAMPLER(SamplerState_Linear_Repeat_Aniso8);
        TEXTURE2D(_BaseColorMap);
        SAMPLER(sampler_BaseColorMap);
        TEXTURE2D(_SpecularColorMap);
        SAMPLER(sampler_SpecularColorMap);
        TEXTURE2D(_BaseNormalMap);
        SAMPLER(sampler_BaseNormalMap);
        TEXTURE2D(_BaseMaskMap);
        SAMPLER(sampler_BaseMaskMap);
        TEXTURE2D(_CoverMaskA);
        SAMPLER(sampler_CoverMaskA);
        TEXTURE2D(_CoverBaseColorMap);
        SAMPLER(sampler_CoverBaseColorMap);
        TEXTURE2D(_CoverSpecularColorMap);
        SAMPLER(sampler_CoverSpecularColorMap);
        TEXTURE2D(_CoverNormalMap);
        SAMPLER(sampler_CoverNormalMap);
        TEXTURE2D(_CoverMaskMap);
        SAMPLER(sampler_CoverMaskMap);
        TEXTURE2D(_DetailMap);
        SAMPLER(sampler_DetailMap);
        
            // -- Property used by ScenePickingPass
            #ifdef SCENEPICKINGPASS
            float4 _SelectionID;
            #endif
        
            // -- Properties used by SceneSelectionPass
            #ifdef SCENESELECTIONPASS
            int _ObjectId;
            int _PassValue;
            #endif
        
            // Includes
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl"
        #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/NormalSurfaceGradient.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/BuiltinUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/DecalUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitDecalData.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderGraphFunctions.hlsl"
        	#include "./NM_Object_VSPro_Indirect.cginc"
        
            // --------------------------------------------------
            // Structs and Packing
        
            struct AttributesMesh
        {
             float3 positionOS : POSITION;
             float3 normalOS : NORMAL;
             float4 tangentOS : TANGENT;
             float4 uv0 : TEXCOORD0;
             float4 uv2 : TEXCOORD2;
             float4 color : COLOR;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : INSTANCEID_SEMANTIC;
            #endif
        };
        struct VaryingsMeshToPS
        {
            SV_POSITION_QUALIFIERS float4 positionCS : SV_POSITION;
             float3 positionRWS;
             float3 normalWS;
             float4 tangentWS;
             float4 texCoord0;
             float4 texCoord2;
             float4 color;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : CUSTOM_INSTANCE_ID;
            #endif
        };
        struct VertexDescriptionInputs
        {
             float3 ObjectSpaceNormal;
             float3 ObjectSpaceTangent;
             float3 ObjectSpacePosition;
        };
        struct SurfaceDescriptionInputs
        {
             float3 WorldSpaceNormal;
             float3 TangentSpaceNormal;
             float3 WorldSpaceTangent;
             float3 WorldSpaceBiTangent;
             float3 AbsoluteWorldSpacePosition;
             float4 uv0;
             float4 uv2;
             float4 VertexColor;
        };
        struct PackedVaryingsMeshToPS
        {
            SV_POSITION_QUALIFIERS float4 positionCS : SV_POSITION;
             float4 tangentWS : INTERP0;
             float4 texCoord0 : INTERP1;
             float4 texCoord2 : INTERP2;
             float4 color : INTERP3;
             float3 positionRWS : INTERP4;
             float3 normalWS : INTERP5;
            #if UNITY_ANY_INSTANCING_ENABLED
             uint instanceID : CUSTOM_INSTANCE_ID;
            #endif
        };
        
            PackedVaryingsMeshToPS PackVaryingsMeshToPS (VaryingsMeshToPS input)
        {
            PackedVaryingsMeshToPS output;
            ZERO_INITIALIZE(PackedVaryingsMeshToPS, output);
            output.positionCS = input.positionCS;
            output.tangentWS.xyzw = input.tangentWS;
            output.texCoord0.xyzw = input.texCoord0;
            output.texCoord2.xyzw = input.texCoord2;
            output.color.xyzw = input.color;
            output.positionRWS.xyz = input.positionRWS;
            output.normalWS.xyz = input.normalWS;
            #if UNITY_ANY_INSTANCING_ENABLED
            output.instanceID = input.instanceID;
            #endif
            return output;
        }
        
        VaryingsMeshToPS UnpackVaryingsMeshToPS (PackedVaryingsMeshToPS input)
        {
            VaryingsMeshToPS output;
            output.positionCS = input.positionCS;
            output.tangentWS = input.tangentWS.xyzw;
            output.texCoord0 = input.texCoord0.xyzw;
            output.texCoord2 = input.texCoord2.xyzw;
            output.color = input.color.xyzw;
            output.positionRWS = input.positionRWS.xyz;
            output.normalWS = input.normalWS.xyz;
            #if UNITY_ANY_INSTANCING_ENABLED
            output.instanceID = input.instanceID;
            #endif
            return output;
        }
        
        
            // --------------------------------------------------
            // Graph
        
        
            // Graph Functions
            
        void AddPragma_float(float3 A, out float3 Out){
        #pragma instancing_options procedural:setupVSPro
        Out = A;
        }
        
        struct Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float
        {
        };
        
        void SG_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float(float3 Vector3_314C8600, Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float IN, out float3 ObjectSpacePosition_1)
        {
        float3 _Property_5ec158abd968858c9d31ab40df5e9e6f_Out_0_Vector3 = Vector3_314C8600;
        float3 _InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3;
        InjectSetup_float(_Property_5ec158abd968858c9d31ab40df5e9e6f_Out_0_Vector3, _InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3);
        float3 _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3;
        AddPragma_float(_InjectSetupCustomFunction_dec9b26544b4a788b8ecb4117dc3d24a_Out_1_Vector3, _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3);
        ObjectSpacePosition_1 = _AddPragmaCustomFunction_b2a053178906d0848480a1f463521a1b_Out_1_Vector3;
        }
        
        void Unity_Combine_float(float R, float G, float B, float A, out float4 RGBA, out float3 RGB, out float2 RG)
        {
            RGBA = float4(R, G, B, A);
            RGB = float3(R, G, B);
            RG = float2(R, G);
        }
        
        void Unity_Divide_float(float A, float B, out float Out)
        {
            Out = A / B;
        }
        
        void Unity_Multiply_float4_float4(float4 A, float4 B, out float4 Out)
        {
        Out = A * B;
        }
        
        void Unity_Branch_float4(float Predicate, float4 True, float4 False, out float4 Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_TilingAndOffset_float(float2 UV, float2 Tiling, float2 Offset, out float2 Out)
        {
            Out = UV * Tiling + Offset;
        }
        
        void Unity_Branch_float2(float Predicate, float2 True, float2 False, out float2 Out)
        {
            Out = Predicate ? True : False;
        }
        
        struct Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float
        {
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_2EBA7A3B, float Boolean_7ABB9909, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float IN, out float4 XZ_2)
        {
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Property_30834f691775a0898a45b1c868520436_Out_0_Boolean = Boolean_7ABB9909;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4 = Vector4_2EBA7A3B;
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[0];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[1];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[2];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[3];
        float _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float;
        Unity_Divide_float(1, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4 = IN.uv0;
        float4 _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4 = IN.uv2;
        float4 _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4;
        Unity_Branch_float4(_Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean, _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4, _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4, _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4);
        float2 _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float);
        float2 _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float);
        float2 _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4.xy), _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2, _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2, _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2);
        float2 _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2;
        Unity_Branch_float2(_Property_30834f691775a0898a45b1c868520436_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2, _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2);
        UnitySamplerState _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2) );
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        XZ_2 = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4;
        }
        
        void Unity_Multiply_float_float(float A, float B, out float Out)
        {
            Out = A * B;
        }
        
        void Unity_Add_float(float A, float B, out float Out)
        {
            Out = A + B;
        }
        
        void Unity_Saturate_float(float In, out float Out)
        {
            Out = saturate(In);
        }
        
        void Unity_Absolute_float(float In, out float Out)
        {
            Out = abs(In);
        }
        
        void Unity_SquareRoot_float4(float4 In, out float4 Out)
        {
            Out = sqrt(In);
        }
        
        void Unity_Sign_float(float In, out float Out)
        {
            Out = sign(In);
        }
        
        void Unity_Ceiling_float(float In, out float Out)
        {
            Out = ceil(In);
        }
        
        void Unity_Lerp_float4(float4 A, float4 B, float4 T, out float4 Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float
        {
        };
        
        void SG_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float(float4 Color_9AA111D3, float Vector1_FBE622A2, float Vector1_8C15C351, Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float IN, out float3 OutVector4_1)
        {
        float4 _Property_012510d774fb7f8b860f5270dca4500f_Out_0_Vector4 = Color_9AA111D3;
        float4 _SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4;
        Unity_SquareRoot_float4(_Property_012510d774fb7f8b860f5270dca4500f_Out_0_Vector4, _SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4);
        float _Property_a00e29241d12f983b30177515b367ec9_Out_0_Float = Vector1_FBE622A2;
        float _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float;
        Unity_Sign_float(_Property_a00e29241d12f983b30177515b367ec9_Out_0_Float, _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float);
        float _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float;
        Unity_Add_float(_Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float, 1, _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float);
        float _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float;
        Unity_Multiply_float_float(_Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float, 0.5, _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float);
        float _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float;
        Unity_Ceiling_float(_Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float);
        float _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float = Vector1_8C15C351;
        float _Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float;
        Unity_Multiply_float_float(_Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float);
        float4 _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4;
        Unity_Lerp_float4(_SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4, (_Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float.xxxx), (_Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float.xxxx), _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4);
        float4 _Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4, _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4, _Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4);
        OutVector4_1 = (_Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4.xyz);
        }
        
        void Unity_Clamp_float(float In, float Min, float Max, out float Out)
        {
            Out = clamp(In, Min, Max);
        }
        
        void Unity_Multiply_float2_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A * B;
        }
        
        void Unity_Add_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A + B;
        }
        
        void Unity_DotProduct_float2(float2 A, float2 B, out float Out)
        {
            Out = dot(A, B);
        }
        
        void Unity_OneMinus_float(float In, out float Out)
        {
            Out = 1 - In;
        }
        
        void Unity_SquareRoot_float(float In, out float Out)
        {
            Out = sqrt(In);
        }
        
        void Unity_Sign_float3(float3 In, out float3 Out)
        {
            Out = sign(In);
        }
        
        void Unity_Normalize_float3(float3 In, out float3 Out)
        {
            Out = normalize(In);
        }
        
        void Unity_Branch_float3(float Predicate, float3 True, float3 False, out float3 Out)
        {
            Out = Predicate ? True : False;
        }
        
        struct Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float
        {
        float3 WorldSpaceNormal;
        float3 WorldSpaceTangent;
        float3 WorldSpaceBiTangent;
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_82674548, float Boolean_9FF42DF6, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float IN, out float4 XZ_2)
        {
        float _Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean = Boolean_9FF42DF6;
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4 = Vector4_82674548;
        float _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[0];
        float _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[1];
        float _Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[2];
        float _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[3];
        float _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float;
        Unity_Divide_float(1, _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4 = IN.uv0;
        float4 _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4 = IN.uv2;
        float4 _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4;
        Unity_Branch_float4(_Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean, _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4, _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4, _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4);
        float2 _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float);
        float2 _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float, _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float);
        float2 _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4.xy), _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2, _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2, _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2);
        float2 _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2;
        Unity_Branch_float2(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2, _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2);
        UnitySamplerState _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2) );
        _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.rgb = UnpackNormal(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4);
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        float2 _Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2 = float2(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float, _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float);
        float3 _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3;
        Unity_Sign_float3(IN.WorldSpaceNormal, _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3);
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_R_1_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[0];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[1];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_B_3_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[2];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_A_4_Float = 0;
        float2 _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2 = float2(_Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float, 1);
        float2 _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2;
        Unity_Multiply_float2_float2(_Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2, _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2, _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2);
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float = IN.WorldSpaceNormal[0];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float = IN.WorldSpaceNormal[1];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float = IN.WorldSpaceNormal[2];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_A_4_Float = 0;
        float2 _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2 = float2(_Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float);
        float2 _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2;
        Unity_Add_float2(_Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2, _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2, _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2);
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[0];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[1];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_B_3_Float = 0;
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_A_4_Float = 0;
        float _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float;
        Unity_Multiply_float_float(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float);
        float3 _Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3 = float3(_Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float, _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float);
        float3 _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3;
        {
        float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
        _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3 = TransformWorldToTangent(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
        }
        float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
        Unity_Normalize_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3);
        float3 _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3;
        Unity_Branch_float3(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3, (_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.xyz), _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3);
        XZ_2 = (float4(_Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3, 1.0));
        }
        
        void Unity_NormalStrength_float(float3 In, float Strength, out float3 Out)
        {
            Out = float3(In.rg * Strength, lerp(1, In.b, saturate(Strength)));
        }
        
        void Unity_NormalBlend_float(float3 A, float3 B, out float3 Out)
        {
            Out = SafeNormalize(float3(A.rg + B.rg, A.b * B.b));
        }
        
        void Unity_Subtract_float(float A, float B, out float Out)
        {
            Out = A - B;
        }
        
        void Unity_Power_float(float A, float B, out float Out)
        {
            Out = pow(A, B);
        }
        
        void Unity_Lerp_float3(float3 A, float3 B, float3 T, out float3 Out)
        {
            Out = lerp(A, B, T);
        }
        
        void Unity_Remap_float(float In, float2 InMinMax, float2 OutMinMax, out float Out)
        {
            Out = OutMinMax.x + (In - InMinMax.x) * (OutMinMax.y - OutMinMax.x) / (InMinMax.y - InMinMax.x);
        }
        
        void Unity_Branch_float(float Predicate, float True, float False, out float Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_Multiply_float3_float3(float3 A, float3 B, out float3 Out)
        {
            Out = A * B;
        }
        
        void Unity_Lerp_float(float A, float B, float T, out float Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float
        {
        };
        
        void SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(float Vector1_32317166, float Vector1_FBE622A2, float Vector1_8C15C351, Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float IN, out float SmoothnessOverlay_1)
        {
        float _Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float = Vector1_32317166;
        float _Property_a00e29241d12f983b30177515b367ec9_Out_0_Float = Vector1_FBE622A2;
        float _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float;
        Unity_Sign_float(_Property_a00e29241d12f983b30177515b367ec9_Out_0_Float, _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float);
        float _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float;
        Unity_Add_float(_Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float, 1, _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float);
        float _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float;
        Unity_Multiply_float_float(_Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float, 0.5, _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float);
        float _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float;
        Unity_Ceiling_float(_Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float);
        float _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float = Vector1_8C15C351;
        float _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        Unity_Lerp_float(_Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float, _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float);
        SmoothnessOverlay_1 = _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        }
        
        void Unity_Lerp_float2(float2 A, float2 B, float2 T, out float2 Out)
        {
            Out = lerp(A, B, T);
        }
        
            // Graph Vertex
            struct VertexDescription
        {
            float3 Position;
            float3 Normal;
            float3 Tangent;
        };
        
        VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
        {
            VertexDescription description = (VertexDescription)0;
            Bindings_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430;
            float3 _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3;
            SG_NMObjectVSProIndirect_0cfe1e4f145944241ab304331e53c93b_float(IN.ObjectSpacePosition, _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430, _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3);
            description.Position = _NMObjectVSProIndirect_1ff5034131c0ed85866739fc0d606430_ObjectSpacePosition_1_Vector3;
            description.Normal = IN.ObjectSpaceNormal;
            description.Tangent = IN.ObjectSpaceTangent;
            return description;
        }
        
            // Graph Pixel
            struct SurfaceDescription
        {
            float3 BaseColor;
            float3 Emission;
            float Alpha;
            float3 BentNormal;
            float Smoothness;
            float Occlusion;
            float3 NormalTS;
            float3 Specular;
        };
        
        SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
        {
            SurfaceDescription surface = (SurfaceDescription)0;
            UnityTexture2D _Property_9c271219f828108f958217e55cd6dc1d_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseColorMap);
            float4 _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4 = _BaseTilingOffset;
            float _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean = _BaseUsePlanarUV;
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_f392575634df5b86b63ff6e287282b30;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.uv0 = IN.uv0;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.uv2 = IN.uv2;
            float4 _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_9c271219f828108f958217e55cd6dc1d_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_f392575634df5b86b63ff6e287282b30, _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4);
            float4 _Property_4f676fce92c9378db3c3b92ae77fbff9_Out_0_Vector4 = _BaseColor;
            float4 _Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4, _Property_4f676fce92c9378db3c3b92ae77fbff9_Out_0_Vector4, _Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4);
            UnityTexture2D _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_DetailMap);
            float4 _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4 = _DetailTilingOffset;
            float _Split_9fa8573190399e8da2a843a4cab68164_R_1_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[0];
            float _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[1];
            float _Split_9fa8573190399e8da2a843a4cab68164_B_3_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[2];
            float _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[3];
            float2 _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_R_1_Float, _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float);
            float2 _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_B_3_Float, _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float);
            float2 _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2;
            Unity_TilingAndOffset_float(IN.uv0.xy, _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2, _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2, _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2);
            float4 _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.tex, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.samplerstate, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.GetTransformedUV(_TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2) );
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_R_4_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.r;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.g;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.b;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.a;
            float _Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_R_4_Float, 2, _Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float);
            float _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float;
            Unity_Add_float(_Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float, -1, _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float);
            float _Property_7d68da97cd169d8e8649255aec16158a_Out_0_Float = _DetailAlbedoScale;
            float _Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float;
            Unity_Multiply_float_float(_Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float, _Property_7d68da97cd169d8e8649255aec16158a_Out_0_Float, _Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float);
            float _Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float;
            Unity_Saturate_float(_Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float, _Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float);
            float _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float;
            Unity_Absolute_float(_Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float, _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float);
            Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83;
            float3 _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3;
            SG_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float(_Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4, _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float, _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float, _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83, _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3);
            UnityTexture2D _Property_5ca167b35599f78ab3722ec527327841_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverBaseColorMap);
            float4 _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4 = _CoverTilingOffset;
            float _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean = _CoverUsePlanarUV;
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_ad1db3524021ac898447cb6f6daa4180;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.uv0 = IN.uv0;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.uv2 = IN.uv2;
            float4 _PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_5ca167b35599f78ab3722ec527327841_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_ad1db3524021ac898447cb6f6daa4180, _PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4);
            float4 _Property_b34e94e0b1171480b3e35ff7f4793d7c_Out_0_Vector4 = _CoverBaseColor;
            float4 _Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4, _Property_b34e94e0b1171480b3e35ff7f4793d7c_Out_0_Vector4, _Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4);
            float _Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean = _USEDYNAMICCOVERTSTATICMASKF;
            UnityTexture2D _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskA);
            float4 _UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4 = IN.uv0;
            float4 _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.tex, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.samplerstate, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.GetTransformedUV((_UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4.xy)) );
            float _SampleTexture2D_79111e5af287b084822e60563309a632_R_4_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.r;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_G_5_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.g;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_B_6_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.b;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.a;
            float _Property_c022d8255938838aa73170f05c226269_Out_0_Float = _CoverMaskPower;
            float _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float, _Property_c022d8255938838aa73170f05c226269_Out_0_Float, _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float);
            float _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float;
            Unity_Clamp_float(_Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float, 0, 1, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float);
            float2 _Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2 = float2(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float, _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float);
            float2 _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2, float2(2, 2), _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2);
            float2 _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2;
            Unity_Add_float2(_Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2, float2(-1, -1), _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2);
            float _Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float = _DetailNormalScale;
            float2 _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2, (_Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float.xx), _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2);
            float _Split_492de324af96c482b50573c79f9fb6a0_R_1_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[0];
            float _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[1];
            float _Split_492de324af96c482b50573c79f9fb6a0_B_3_Float = 0;
            float _Split_492de324af96c482b50573c79f9fb6a0_A_4_Float = 0;
            float _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float;
            Unity_DotProduct_float2(_Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float);
            float _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float;
            Unity_Saturate_float(_DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float, _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float);
            float _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float;
            Unity_OneMinus_float(_Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float, _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float);
            float _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float;
            Unity_SquareRoot_float(_OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            float3 _Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3 = float3(_Split_492de324af96c482b50573c79f9fb6a0_R_1_Float, _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            UnityTexture2D _Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseNormalMap);
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv0 = IN.uv0;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv2 = IN.uv2;
            float4 _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4);
            float _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float = _BaseNormalScale;
            float3 _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4.xyz), _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3);
            float3 _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3;
            Unity_NormalBlend_float(_Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3, _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3);
            UnityTexture2D _Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverNormalMap);
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv0 = IN.uv0;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv2 = IN.uv2;
            float4 _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4);
            float _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float = _CoverNormalBlendHardness;
            float3 _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3);
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_R_1_Float = IN.WorldSpaceNormal[0];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float = IN.WorldSpaceNormal[1];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_B_3_Float = IN.WorldSpaceNormal[2];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_A_4_Float = 0;
            float _Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float = _Cover_Amount;
            float _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float = _Cover_Amount_Grow_Speed;
            float _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float;
            Unity_Subtract_float(4, _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float);
            float _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float;
            Unity_Divide_float(_Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float);
            float _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float;
            Unity_Absolute_float(_Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float, _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float);
            float _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float;
            Unity_Power_float(_Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float);
            float _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float;
            Unity_Clamp_float(_Power_c11fc5724f830485a9c4df249a854571_Out_2_Float, 0, 2, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float);
            float _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float;
            Unity_Multiply_float_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float);
            float _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float;
            Unity_Saturate_float(_Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float, _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float);
            float _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float;
            Unity_Clamp_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, 0, 0.9999, _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float);
            float _Property_89633a46f34e1f8996557a9178d78478_Out_0_Float = _Cover_Max_Angle;
            float _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float;
            Unity_Divide_float(_Property_89633a46f34e1f8996557a9178d78478_Out_0_Float, 45, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float);
            float _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float;
            Unity_OneMinus_float(_Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float);
            float _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float;
            Unity_Subtract_float(_Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float, _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float);
            float _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float;
            Unity_Clamp_float(_Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float, 0, 2, _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
            float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
            Unity_Divide_float(1, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float);
            float _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_67dcc607b6da848097d3412324311616_Out_3_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float, _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float);
            float _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float;
            Unity_Absolute_float(_Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float, _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float);
            float _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float = _CoverHardness;
            float _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float;
            Unity_Power_float(_Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float);
            float _Property_f8753bb05d835089bda460d144f93c48_Out_0_Float = _Cover_Min_Height;
            float _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float;
            Unity_OneMinus_float(_Property_f8753bb05d835089bda460d144f93c48_Out_0_Float, _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float);
            float _Split_c66e04f85a2a7f87884040056599e65d_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
            float _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
            float _Split_c66e04f85a2a7f87884040056599e65d_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
            float _Split_c66e04f85a2a7f87884040056599e65d_A_4_Float = 0;
            float _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float;
            Unity_Add_float(_OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float, _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float);
            float _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, 1, _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
            float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
            Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, 0, 1, _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float);
            float _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float = _Cover_Min_Height_Blending;
            float _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float, _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float);
            float _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float;
            Unity_Divide_float(_Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float);
            float _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float;
            Unity_OneMinus_float(_Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float, _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float);
            float _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float;
            Unity_Add_float(_OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float, -0.5, _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
            float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
            Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, 0, 1, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float);
            float _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float;
            Unity_Add_float(_Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float, _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float);
            float _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float;
            Unity_Clamp_float(_Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float, 0, 1, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float);
            float _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float;
            Unity_Multiply_float_float(_Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float);
            float _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float;
            Unity_Multiply_float_float(_Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float);
            float3 _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3, (_Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float.xxx), _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3);
            float3 _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3;
            {
                float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
                _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3 = TransformTangentToWorldDir(_Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3.xyz, tangentTransform, false).xyz;
            }
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_R_1_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[0];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[1];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_B_3_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[2];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_A_4_Float = 0;
            float _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float;
            Unity_Multiply_float_float(_Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float);
            float _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float);
            float _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float);
            float _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float, _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float);
            UnityTexture2D _Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_36e64648ad8a6a849bc794b8693519da;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv0 = IN.uv0;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv2 = IN.uv2;
            float4 _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_36e64648ad8a6a849bc794b8693519da, _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4);
            float _Split_198ec92f3e753d8a9ad50db7d6527324_R_1_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[0];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[1];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[2];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[3];
            float _Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float = _CoverHeightMapMin;
            float _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float = _CoverHeightMapMax;
            float2 _Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2 = float2(_Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float, _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float);
            float _Property_277f22c36084858981418fa95133a562_Out_0_Float = _CoverHeightMapOffset;
            float2 _Add_53997153562831859cc7b582f3068877_Out_2_Vector2;
            Unity_Add_float2(_Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2, (_Property_277f22c36084858981418fa95133a562_Out_0_Float.xx), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2);
            float _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float, float2 (0, 1), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float);
            float _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float, _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float);
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float = IN.VertexColor[0];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float = IN.VertexColor[1];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_B_3_Float = IN.VertexColor[2];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_A_4_Float = IN.VertexColor[3];
            float _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float, _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float, _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float);
            float _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float;
            Unity_Saturate_float(_Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float);
            float _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float);
            float _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float;
            Unity_Branch_float(_Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float);
            float3 _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3;
            Unity_Lerp_float3(_BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3, (_Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4.xyz), (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxx), _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3);
            float4 _Property_e687576468764d85b6b46dca96d8a8e3_Out_0_Vector4 = _WetColor;
            float3 _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3;
            Unity_Multiply_float3_float3((_Property_e687576468764d85b6b46dca96d8a8e3_Out_0_Vector4.xyz), _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3, _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3);
            float _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float;
            Unity_OneMinus_float(_Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float);
            float3 _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
            Unity_Lerp_float3(_Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3, _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3, (_OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float.xxx), _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3);
            UnityTexture2D _Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv0 = IN.uv0;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv2 = IN.uv2;
            float4 _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4);
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_R_1_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[0];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[1];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_B_3_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[2];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[3];
            float _Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float = _BaseAORemapMin;
            float _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float = _BaseAORemapMax;
            float2 _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2 = float2(_Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float, _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float);
            float _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float, float2 (0, 1), _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2, _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float);
            float _Property_e353baf414594b8882fb914562e81165_Out_0_Float = _BaseSmoothnessRemapMin;
            float _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float = _BaseSmoothnessRemapMax;
            float2 _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2 = float2(_Property_e353baf414594b8882fb914562e81165_Out_0_Float, _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float);
            float _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float, float2 (0, 1), _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2, _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float);
            float _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float, 2, _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float);
            float _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float;
            Unity_Add_float(_Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float, -1, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float);
            float _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float = _DetailSmoothnessScale;
            float _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float;
            Unity_Multiply_float_float(_Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float, _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float);
            float _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float;
            Unity_Saturate_float(_Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float, _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float);
            float _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float;
            Unity_Absolute_float(_Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float);
            Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da;
            float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float;
            SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(_Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float);
            float _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float;
            Unity_Saturate_float(_BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float2 _Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2 = float2(_Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float _Property_5e08cfb127183a8993376f9087501eee_Out_0_Float = _CoverAORemapMin;
            float _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float = _CoverAORemapMax;
            float2 _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2 = float2(_Property_5e08cfb127183a8993376f9087501eee_Out_0_Float, _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float);
            float _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float, float2 (0, 1), _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2, _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float);
            float _Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float = _CoverSmoothnessRemapMin;
            float _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float = _CoverSmoothnessRemapMax;
            float2 _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2 = float2(_Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float, _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float);
            float _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float, float2 (0, 1), _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2 = float2(_Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2;
            Unity_Lerp_float2(_Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2, _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xx), _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2);
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_R_1_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[0];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[1];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_B_3_Float = 0;
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_A_4_Float = 0;
            float _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float = _WetSmoothness;
            float _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            Unity_Lerp_float(_Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float, _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float, _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float);
            float _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float = _CoverNormalScale;
            float3 _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3);
            float3 _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxx), _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3);
            UnityTexture2D _Property_f617479b11216b84b89956263f8d3c08_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_SpecularColorMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.uv0 = IN.uv0;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.uv2 = IN.uv2;
            float4 _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_f617479b11216b84b89956263f8d3c08_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d, _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4);
            float4 _Property_112303b9c27a1284b20f0a5c49fb436a_Out_0_Vector4 = _SpecularColor;
            float4 _Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4, _Property_112303b9c27a1284b20f0a5c49fb436a_Out_0_Vector4, _Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4);
            UnityTexture2D _Property_0c768f7d1094a8878d837f25970dbd49_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverSpecularColorMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_4b88db16993b7d84a6c9e021b5992a38;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.uv0 = IN.uv0;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.uv2 = IN.uv2;
            float4 _PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_0c768f7d1094a8878d837f25970dbd49_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_4b88db16993b7d84a6c9e021b5992a38, _PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4);
            float4 _Property_51d3c44a7110108d9e8c9a3acf54125f_Out_0_Vector4 = _CoverSpecularColor;
            float4 _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4, _Property_51d3c44a7110108d9e8c9a3acf54125f_Out_0_Vector4, _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4);
            float4 _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4;
            Unity_Lerp_float4(_Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4, _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxxx), _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4);
            surface.BaseColor = _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
            surface.Emission = float3(0, 0, 0);
            surface.Alpha = 1;
            surface.BentNormal = IN.TangentSpaceNormal;
            surface.Smoothness = _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            surface.Occlusion = _Split_beb57fcf05cbb6809f536625bac5fcbc_R_1_Float;
            surface.NormalTS = _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            surface.Specular = (_Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4.xyz);
            return surface;
        }
        
            // --------------------------------------------------
            // Build Graph Inputs
            #ifdef HAVE_VFX_MODIFICATION
            #define VFX_SRP_ATTRIBUTES AttributesMesh
            #define VaryingsMeshType VaryingsMeshToPS
            #define VFX_SRP_VARYINGS VaryingsMeshType
            #define VFX_SRP_SURFACE_INPUTS FragInputs
            #endif
            
        VertexDescriptionInputs AttributesMeshToVertexDescriptionInputs(AttributesMesh input)
        {
            VertexDescriptionInputs output;
            ZERO_INITIALIZE(VertexDescriptionInputs, output);
        
            output.ObjectSpaceNormal =                          input.normalOS;
            output.ObjectSpaceTangent =                         input.tangentOS.xyz;
            output.ObjectSpacePosition =                        input.positionOS;
        
            return output;
        }
        
        VertexDescription GetVertexDescription(AttributesMesh input, float3 timeParameters
        #ifdef HAVE_VFX_MODIFICATION
            , AttributesElement element
        #endif
        )
        {
            // build graph inputs
            VertexDescriptionInputs vertexDescriptionInputs = AttributesMeshToVertexDescriptionInputs(input);
            // Override time parameters with used one (This is required to correctly handle motion vectors for vertex animation based on time)
        
            // evaluate vertex graph
        #ifdef HAVE_VFX_MODIFICATION
            GraphProperties properties;
            ZERO_INITIALIZE(GraphProperties, properties);
        
            // Fetch the vertex graph properties for the particle instance.
            GetElementVertexProperties(element, properties);
        
            VertexDescription vertexDescription = VertexDescriptionFunction(vertexDescriptionInputs, properties);
        #else
            VertexDescription vertexDescription = VertexDescriptionFunction(vertexDescriptionInputs);
        #endif
            return vertexDescription;
        
        }
        
        AttributesMesh ApplyMeshModification(AttributesMesh input, float3 timeParameters
        #ifdef USE_CUSTOMINTERP_SUBSTRUCT
            #ifdef TESSELLATION_ON
            , inout VaryingsMeshToDS varyings
            #else
            , inout VaryingsMeshToPS varyings
            #endif
        #endif
        #ifdef HAVE_VFX_MODIFICATION
                , AttributesElement element
        #endif
            )
        {
            VertexDescription vertexDescription = GetVertexDescription(input, timeParameters
        #ifdef HAVE_VFX_MODIFICATION
                , element
        #endif
            );
        
            // copy graph output to the results
            input.positionOS = vertexDescription.Position;
            input.normalOS = vertexDescription.Normal;
            input.tangentOS.xyz = vertexDescription.Tangent;
        
            
        
            return input;
        }
        
        #if defined(_ADD_CUSTOM_VELOCITY) // For shader graph custom velocity
        // Return precomputed Velocity in object space
        float3 GetCustomVelocity(AttributesMesh input
        #ifdef HAVE_VFX_MODIFICATION
            , AttributesElement element
        #endif
        )
        {
            VertexDescription vertexDescription = GetVertexDescription(input, _TimeParameters.xyz
        #ifdef HAVE_VFX_MODIFICATION
                , element
        #endif
            );
            return vertexDescription.CustomVelocity;
        }
        #endif
        
        FragInputs BuildFragInputs(VaryingsMeshToPS input)
        {
            FragInputs output;
            ZERO_INITIALIZE(FragInputs, output);
        
            // Init to some default value to make the computer quiet (else it output 'divide by zero' warning even if value is not used).
            // TODO: this is a really poor workaround, but the variable is used in a bunch of places
            // to compute normals which are then passed on elsewhere to compute other values...
            output.tangentToWorld = k_identity3x3;
            output.positionSS = input.positionCS;       // input.positionCS is SV_Position
        
            output.positionRWS =                input.positionRWS;
            output.tangentToWorld =             BuildTangentToWorld(input.tangentWS, input.normalWS);
            output.texCoord0 =                  input.texCoord0;
            output.texCoord2 =                  input.texCoord2;
            output.color =                      input.color;
        
        #ifdef HAVE_VFX_MODIFICATION
            // FragInputs from VFX come from two places: Interpolator or CBuffer.
        #if VFX_USE_GRAPH_VALUES
            uint instanceActiveIndex = asuint(UNITY_ACCESS_INSTANCED_PROP(PerInstance, _InstanceActiveIndex));
            /* WARNING: $splice Could not find named fragment 'VFXLoadGraphValues' */
        #endif
        
            /* WARNING: $splice Could not find named fragment 'VFXSetFragInputs' */
        
        #endif
        
            // splice point to copy custom interpolator fields from varyings to frag inputs
            
        
            return output;
        }
        
        // existing HDRP code uses the combined function to go directly from packed to frag inputs
        FragInputs UnpackVaryingsMeshToFragInputs(PackedVaryingsMeshToPS input)
        {
            UNITY_SETUP_INSTANCE_ID(input);
        #if defined(HAVE_VFX_MODIFICATION) && defined(UNITY_INSTANCING_ENABLED)
            unity_InstanceID = input.instanceID;
        #endif
            VaryingsMeshToPS unpacked = UnpackVaryingsMeshToPS(input);
            return BuildFragInputs(unpacked);
        }
            SurfaceDescriptionInputs FragInputsToSurfaceDescriptionInputs(FragInputs input, float3 viewWS)
        {
            SurfaceDescriptionInputs output;
            ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
        
            output.WorldSpaceNormal =                           normalize(input.tangentToWorld[2].xyz);
            #if defined(SHADER_STAGE_RAY_TRACING)
            #else
            #endif
            output.TangentSpaceNormal =                         float3(0.0f, 0.0f, 1.0f);
            output.WorldSpaceTangent =                          input.tangentToWorld[0].xyz;
            output.WorldSpaceBiTangent =                        input.tangentToWorld[1].xyz;
            output.AbsoluteWorldSpacePosition =                 GetAbsolutePositionWS(input.positionRWS);
        
        #if UNITY_UV_STARTS_AT_TOP
        #else
        #endif
        
        
            output.uv0 =                                        input.texCoord0;
            output.uv2 =                                        input.texCoord2;
            output.VertexColor =                                input.color;
        
            // splice point to copy frag inputs custom interpolator pack into the SDI
            
        
            return output;
        }
        
            // --------------------------------------------------
            // Build Surface Data (Specific Material)
        
        void ApplyDecalToSurfaceDataNoNormal(DecalSurfaceData decalSurfaceData, inout SurfaceData surfaceData);
        
        void ApplyDecalAndGetNormal(FragInputs fragInputs, PositionInputs posInput, SurfaceDescription surfaceDescription,
            inout SurfaceData surfaceData)
        {
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
        #ifdef DECAL_NORMAL_BLENDING
            // SG nodes don't ouptut surface gradients, so if decals require surf grad blending, we have to convert
            // the normal to gradient before applying the decal. We then have to resolve the gradient back to world space
            float3 normalTS;
        
            normalTS = SurfaceGradientFromTangentSpaceNormalAndFromTBN(surfaceDescription.NormalTS,
            fragInputs.tangentToWorld[0], fragInputs.tangentToWorld[1]);
        
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, fragInputs.tangentToWorld[2], normalTS);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        
            GetNormalWS_SG(fragInputs, normalTS, surfaceData.normalWS, doubleSidedConstants);
        #else
            // normal delivered to master node
            GetNormalWS(fragInputs, surfaceDescription.NormalTS, surfaceData.normalWS, doubleSidedConstants);
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                // Both uses and modifies 'surfaceData.normalWS'.
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, surfaceData.normalWS.xyz);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        #endif
        }
        void BuildSurfaceData(FragInputs fragInputs, inout SurfaceDescription surfaceDescription, float3 V, PositionInputs posInput, out SurfaceData surfaceData, out float3 bentNormalWS)
        {
            ZERO_INITIALIZE(SurfaceData, surfaceData);
        
            // specularOcclusion need to be init ahead of decal to quiet the compiler that modify the SurfaceData struct
            // however specularOcclusion can come from the graph, so need to be init here so it can be override.
            surfaceData.specularOcclusion = 1.0;
        
            surfaceData.baseColor =                 surfaceDescription.BaseColor;
            surfaceData.perceptualSmoothness =      surfaceDescription.Smoothness;
            surfaceData.ambientOcclusion =          surfaceDescription.Occlusion;
            surfaceData.specularColor =             surfaceDescription.Specular;
        
            #if defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE) || defined(_REFRACTION_THIN)
                if (_EnableSSRefraction)
                {
        
                    surfaceData.transmittanceMask = (1.0 - surfaceDescription.Alpha);
                    surfaceDescription.Alpha = 1.0;
                }
                else
                {
                    surfaceData.ior = 1.0;
                    surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                    surfaceData.atDistance = 1.0;
                    surfaceData.transmittanceMask = 0.0;
                    surfaceDescription.Alpha = 1.0;
                }
            #else
                surfaceData.ior = 1.0;
                surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                surfaceData.atDistance = 1.0;
                surfaceData.transmittanceMask = 0.0;
            #endif
        
            // These static material feature allow compile time optimization
            surfaceData.materialFeatures = MATERIALFEATUREFLAGS_LIT_STANDARD;
            #ifdef _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SUBSURFACE_SCATTERING;
            #endif
        
            #ifdef _MATERIAL_FEATURE_TRANSMISSION
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
            #endif
        
            #ifdef _MATERIAL_FEATURE_ANISOTROPY
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_ANISOTROPY;
        
                // Initialize the normal to something non-zero to avoid a div-zero warning for anisotropy.
                surfaceData.normalWS = float3(0, 1, 0);
            #endif
        
            #ifdef _MATERIAL_FEATURE_IRIDESCENCE
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_IRIDESCENCE;
            #endif
        
            #ifdef _MATERIAL_FEATURE_SPECULAR_COLOR
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SPECULAR_COLOR;
            #endif
        
            #ifdef _MATERIAL_FEATURE_CLEAR_COAT
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_CLEAR_COAT;
            #endif
        
            #if defined (_MATERIAL_FEATURE_SPECULAR_COLOR) && defined (_ENERGY_CONSERVING_SPECULAR)
                // Require to have setup baseColor
                // Reproduce the energy conservation done in legacy Unity. Not ideal but better for compatibility and users can unchek it
                surfaceData.baseColor *= (1.0 - Max3(surfaceData.specularColor.r, surfaceData.specularColor.g, surfaceData.specularColor.b));
            #endif
        
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
            ApplyDecalAndGetNormal(fragInputs, posInput, surfaceDescription, surfaceData);
        
            surfaceData.geomNormalWS = fragInputs.tangentToWorld[2];
        
            surfaceData.tangentWS = normalize(fragInputs.tangentToWorld[0].xyz);    // The tangent is not normalize in tangentToWorld for mikkt. TODO: Check if it expected that we normalize with Morten. Tag: SURFACE_GRADIENT
        
        
            bentNormalWS = surfaceData.normalWS;
        
            surfaceData.tangentWS = Orthonormalize(surfaceData.tangentWS, surfaceData.normalWS);
        
            #ifdef DEBUG_DISPLAY
                if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
                {
                    // TODO: need to update mip info
                    surfaceData.metallic = 0;
                }
        
                // We need to call ApplyDebugToSurfaceData after filling the surfarcedata and before filling builtinData
                // as it can modify attribute use for static lighting
                ApplyDebugToSurfaceData(fragInputs.tangentToWorld, surfaceData);
            #endif
        
            // By default we use the ambient occlusion with Tri-ace trick (apply outside) for specular occlusion.
            // If user provide bent normal then we process a better term
            #if defined(_SPECULAR_OCCLUSION_CUSTOM)
                // Just use the value passed through via the slot (not active otherwise)
            #elif defined(_SPECULAR_OCCLUSION_FROM_AO_BENT_NORMAL)
                // If we have bent normal and ambient occlusion, process a specular occlusion
                surfaceData.specularOcclusion = GetSpecularOcclusionFromBentAO(V, bentNormalWS, surfaceData.normalWS, surfaceData.ambientOcclusion, PerceptualSmoothnessToPerceptualRoughness(surfaceData.perceptualSmoothness));
            #elif defined(_AMBIENT_OCCLUSION) && defined(_SPECULAR_OCCLUSION_FROM_AO)
                surfaceData.specularOcclusion = GetSpecularOcclusionFromAmbientOcclusion(ClampNdotV(dot(surfaceData.normalWS, V)), surfaceData.ambientOcclusion, PerceptualSmoothnessToRoughness(surfaceData.perceptualSmoothness));
            #endif
        
            #if defined(_ENABLE_GEOMETRIC_SPECULAR_AA) && !defined(SHADER_STAGE_RAY_TRACING)
                surfaceData.perceptualSmoothness = GeometricNormalFiltering(surfaceData.perceptualSmoothness, fragInputs.tangentToWorld[2], surfaceDescription.SpecularAAScreenSpaceVariance, surfaceDescription.SpecularAAThreshold);
            #endif
        }
        
            // --------------------------------------------------
            // Get Surface And BuiltinData
        
            void GetSurfaceAndBuiltinData(FragInputs fragInputs, float3 V, inout PositionInputs posInput, out SurfaceData surfaceData, out BuiltinData builtinData RAY_TRACING_OPTIONAL_PARAMETERS)
            {
                // Don't dither if displaced tessellation (we're fading out the displacement instead to match the next LOD)
                #if !defined(SHADER_STAGE_RAY_TRACING) && !defined(_TESSELLATION_DISPLACEMENT)
                #ifdef LOD_FADE_CROSSFADE // enable dithering LOD transition if user select CrossFade transition in LOD group
                LODDitheringTransition(ComputeFadeMaskSeed(V, posInput.positionSS), unity_LODFade.x);
                #endif
                #endif
        
                #ifndef SHADER_UNLIT
                #ifdef _DOUBLESIDED_ON
                    float3 doubleSidedConstants = _DoubleSidedConstants.xyz;
                #else
                    float3 doubleSidedConstants = float3(1.0, 1.0, 1.0);
                #endif
        
                ApplyDoubleSidedFlipOrMirror(fragInputs, doubleSidedConstants); // Apply double sided flip on the vertex normal
                #endif // SHADER_UNLIT
        
                SurfaceDescriptionInputs surfaceDescriptionInputs = FragInputsToSurfaceDescriptionInputs(fragInputs, V);
        
                #if defined(HAVE_VFX_MODIFICATION)
                GraphProperties properties;
                ZERO_INITIALIZE(GraphProperties, properties);
        
                GetElementPixelProperties(fragInputs, properties);
        
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs, properties);
                #else
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs);
                #endif
        
                // Perform alpha test very early to save performance (a killed pixel will not sample textures)
                // TODO: split graph evaluation to grab just alpha dependencies first? tricky..
                #ifdef _ALPHATEST_ON
                    float alphaCutoff = surfaceDescription.AlphaClipThreshold;
                    #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
                    // The TransparentDepthPrepass is also used with SSR transparent.
                    // If an artists enable transaprent SSR but not the TransparentDepthPrepass itself, then we use AlphaClipThreshold
                    // otherwise if TransparentDepthPrepass is enabled we use AlphaClipThresholdDepthPrepass
                    #elif SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_POSTPASS
                    // DepthPostpass always use its own alpha threshold
                    alphaCutoff = surfaceDescription.AlphaClipThresholdDepthPostpass;
                    #elif (SHADERPASS == SHADERPASS_SHADOWS) || (SHADERPASS == SHADERPASS_RAYTRACING_VISIBILITY)
                    // If use shadow threshold isn't enable we don't allow any test
                    #endif
        
                    GENERIC_ALPHA_TEST(surfaceDescription.Alpha, alphaCutoff);
                #endif
        
                #if !defined(SHADER_STAGE_RAY_TRACING) && _DEPTHOFFSET_ON
                ApplyDepthOffsetPositionInput(V, surfaceDescription.DepthOffset, GetViewForwardDir(), GetWorldToHClipMatrix(), posInput);
                #endif
        
                #ifndef SHADER_UNLIT
                float3 bentNormalWS;
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData, bentNormalWS);
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD1
                    float4 lightmapTexCoord1 = fragInputs.texCoord1;
                #else
                    float4 lightmapTexCoord1 = float4(0,0,0,0);
                #endif
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD2
                    float4 lightmapTexCoord2 = fragInputs.texCoord2;
                #else
                    float4 lightmapTexCoord2 = float4(0,0,0,0);
                #endif
        
                // Builtin Data
                // For back lighting we use the oposite vertex normal
                InitBuiltinData(posInput, surfaceDescription.Alpha, bentNormalWS, -fragInputs.tangentToWorld[2], lightmapTexCoord1, lightmapTexCoord2, builtinData);
        
                #else
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData);
        
                ZERO_BUILTIN_INITIALIZE(builtinData); // No call to InitBuiltinData as we don't have any lighting
                builtinData.opacity = surfaceDescription.Alpha;
        
                #if defined(DEBUG_DISPLAY)
                    // Light Layers are currently not used for the Unlit shader (because it is not lit)
                    // But Unlit objects do cast shadows according to their rendering layer mask, which is what we want to
                    // display in the light layers visualization mode, therefore we need the renderingLayers
                    builtinData.renderingLayers = GetMeshRenderingLightLayer();
                #endif
        
                #endif // SHADER_UNLIT
        
                #ifdef _ALPHATEST_ON
                    // Used for sharpening by alpha to mask - Alpha to covertage is only used with depth only and forward pass (no shadow pass, no transparent pass)
                    builtinData.alphaClipTreshold = alphaCutoff;
                #endif
        
                // override sampleBakedGI - not used by Unlit
        
                builtinData.emissiveColor = surfaceDescription.Emission;
        
                // Note this will not fully work on transparent surfaces (can check with _SURFACE_TYPE_TRANSPARENT define)
                // We will always overwrite vt feeback with the nearest. So behind transparent surfaces vt will not be resolved
                // This is a limitation of the current MRT approach.
                #ifdef UNITY_VIRTUAL_TEXTURING
                #endif
        
                #if _DEPTHOFFSET_ON
                builtinData.depthOffset = surfaceDescription.DepthOffset;
                #endif
        
                // TODO: We should generate distortion / distortionBlur for non distortion pass
                #if (SHADERPASS == SHADERPASS_DISTORTION)
                builtinData.distortion = surfaceDescription.Distortion;
                builtinData.distortionBlur = surfaceDescription.DistortionBlur;
                #endif
        
                #ifndef SHADER_UNLIT
                // PostInitBuiltinData call ApplyDebugToBuiltinData
                PostInitBuiltinData(V, posInput, surfaceData, builtinData);
                #else
                ApplyDebugToBuiltinData(builtinData);
                #endif
        
                RAY_TRACING_OPTIONAL_ALPHA_TEST_PASS
            }
        
            // --------------------------------------------------
            // Main
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassConstant.hlsl"
        
            // --------------------------------------------------
            // Visual Effect Vertex Invocations
        
        	#ifdef HAVE_VFX_MODIFICATION
        	#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
        	#endif
        
            ENDHLSL
        }
    }
    SubShader
    {
        Tags
        {
            "RenderPipeline"="HDRenderPipeline"
            "RenderType"="HDLitShader"
            "Queue"="Geometry+225"
            "DisableBatching"="LODFading"
            "ShaderGraphShader"="true"
            "ShaderGraphTargetId"="HDLitSubTarget"
        }
        Pass
        {
            Name "IndirectDXR"
            Tags
            {
                "LightMode" = "IndirectDXR"
            }
        
            // Render State
            // RenderState: <None>
        
            // Debug
            // <None>
        
            // --------------------------------------------------
            // Pass
        
            HLSLPROGRAM
        
            // Pragmas
            #pragma target 5.0
        #pragma raytracing surface_shader
        #pragma only_renderers d3d11 xboxseries ps5
        
            // Keywords
            #pragma multi_compile _ MULTI_BOUNCE_INDIRECT
        #pragma shader_feature _ _SURFACE_TYPE_TRANSPARENT
        #pragma shader_feature_local _ _DOUBLESIDED_ON
        #pragma shader_feature_local _ _ADD_PRECOMPUTED_VELOCITY
        #pragma shader_feature_local _ _TRANSPARENT_WRITES_MOTION_VEC
        #pragma shader_feature_local_fragment _ _ENABLE_FOG_ON_TRANSPARENT
        #pragma multi_compile _ DEBUG_DISPLAY
        #pragma shader_feature_local_fragment _ _DISABLE_DECALS
        #pragma shader_feature_local_raytracing _ _DISABLE_DECALS
        #pragma shader_feature_local_fragment _ _DISABLE_SSR
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR
        #pragma shader_feature_local_fragment _ _DISABLE_SSR_TRANSPARENT
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR_TRANSPARENT
        #pragma multi_compile _ LIGHTMAP_ON
        #pragma multi_compile _ DIRLIGHTMAP_COMBINED
        #pragma multi_compile_fragment PROBE_VOLUMES_OFF PROBE_VOLUMES_L1 PROBE_VOLUMES_L2
        #pragma multi_compile_raytracing PROBE_VOLUMES_OFF PROBE_VOLUMES_L1 PROBE_VOLUMES_L2
        #pragma multi_compile _ DYNAMICLIGHTMAP_ON
        #pragma shader_feature_local _ _REFRACTION_PLANE _REFRACTION_SPHERE _REFRACTION_THIN
            // GraphKeywords: <None>
        
            // For custom interpolators to inject a substruct definition before FragInputs definition,
            // allowing for FragInputs to capture CI's intended for ShaderGraph's SDI.
            /* WARNING: $splice Could not find named fragment 'CustomInterpolatorPreInclude' */
        
        
            // TODO: Merge FragInputsVFX substruct with CustomInterpolators.
        	#ifdef HAVE_VFX_MODIFICATION
        	struct FragInputsVFX
            {
                /* WARNING: $splice Could not find named fragment 'FragInputsVFX' */
            };
            #endif
        
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/GeometricTools.hlsl" // Required by Tessellation.hlsl
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Tessellation.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl" // Required to be include before we include properties as it define DECLARE_STACK_CB
            // Always include Shader Graph version
            // Always include last to avoid double macros
            #include "Packages/com.unity.shadergraph/ShaderGraphLibrary/Functions.hlsl" // Need to be here for Gradient struct definition
        
            // --------------------------------------------------
            // Defines
        
            // Attribute
            #define ATTRIBUTES_NEED_NORMAL
            #define ATTRIBUTES_NEED_TANGENT
            #define ATTRIBUTES_NEED_TEXCOORD0
            #define ATTRIBUTES_NEED_TEXCOORD1
            #define ATTRIBUTES_NEED_TEXCOORD2
            #define ATTRIBUTES_NEED_COLOR
            #define VARYINGS_NEED_POSITION_WS
            #define VARYINGS_NEED_TANGENT_TO_WORLD
            #define VARYINGS_NEED_TEXCOORD0
            #define VARYINGS_NEED_TEXCOORD1
            #define VARYINGS_NEED_TEXCOORD2
            #define VARYINGS_NEED_COLOR
        
        
            //Strip down the FragInputs.hlsl (on graphics), so we can only optimize the interpolators we use.
            //if by accident something requests contents of FragInputs.hlsl, it will be caught as a compiler error
            //Frag inputs stripping is only enabled when FRAG_INPUTS_ENABLE_STRIPPING is set
            #if !defined(SHADER_STAGE_RAY_TRACING) && SHADERPASS != SHADERPASS_RAYTRACING_GBUFFER && SHADERPASS != SHADERPASS_FULL_SCREEN_DEBUG
            #define FRAG_INPUTS_ENABLE_STRIPPING
            #endif
            #define FRAG_INPUTS_USE_TEXCOORD0
            #define FRAG_INPUTS_USE_TEXCOORD1
            #define FRAG_INPUTS_USE_TEXCOORD2
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/FragInputs.hlsl"
        
        
        
            #define SHADERPASS SHADERPASS_RAYTRACING_INDIRECT
        #define SHADOW_LOW
        #define RAYTRACING_SHADER_GRAPH_RAYTRACED
        #define HAS_LIGHTLOOP 1
        
        
            // Following two define are a workaround introduce in 10.1.x for RaytracingQualityNode
            // The ShaderGraph don't support correctly migration of this node as it serialize all the node data
            // in the json file making it impossible to uprgrade. Until we get a fix, we do a workaround here
            // to still allow us to rename the field and keyword of this node without breaking existing code.
            #ifdef RAYTRACING_SHADER_GRAPH_DEFAULT
            #define RAYTRACING_SHADER_GRAPH_HIGH
            #endif
        
            #ifdef RAYTRACING_SHADER_GRAPH_RAYTRACED
            #define RAYTRACING_SHADER_GRAPH_LOW
            #endif
            // end
        
            #ifndef SHADER_UNLIT
            // We need isFrontFace when using double sided - it is not required for unlit as in case of unlit double sided only drive the cullmode
            // VARYINGS_NEED_CULLFACE can be define by VaryingsMeshToPS.FaceSign input if a IsFrontFace Node is included in the shader graph.
            #if defined(_DOUBLESIDED_ON) && !defined(VARYINGS_NEED_CULLFACE)
                #define VARYINGS_NEED_CULLFACE
            #endif
            #endif
        
            // Specific Material Define
        #define _MATERIAL_FEATURE_SPECULAR_COLOR 1
        #define _AMBIENT_OCCLUSION 1
        #define _SPECULAR_OCCLUSION_FROM_AO 1
        #define _ENERGY_CONSERVING_SPECULAR 1
        
        // If we use subsurface scattering, enable output split lighting (for forward pass)
        #if defined(_MATERIAL_FEATURE_SUBSURFACE_SCATTERING) && !defined(_SURFACE_TYPE_TRANSPARENT)
            #define OUTPUT_SPLIT_LIGHTING
        #endif
        
        // This shader support recursive rendering for raytracing
        #define HAVE_RECURSIVE_RENDERING
        
        // In Path Tracing, For all single-sided, refractive materials, we want to force a thin refraction model
        #if (SHADERPASS == SHADERPASS_PATH_TRACING) && !defined(_DOUBLESIDED_ON) && (defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE))
            #undef  _REFRACTION_PLANE
            #undef  _REFRACTION_SPHERE
            #define _REFRACTION_THIN
        #endif
            // Caution: we can use the define SHADER_UNLIT onlit after the above Material include as it is the Unlit template who define it
        
            // To handle SSR on transparent correctly with a possibility to enable/disable it per framesettings
            // we should have a code like this:
            // if !defined(_DISABLE_SSR_TRANSPARENT)
            // pragma multi_compile _ WRITE_NORMAL_BUFFER
            // endif
            // i.e we enable the multicompile only if we can receive SSR or not, and then C# code drive
            // it based on if SSR transparent in frame settings and not (and stripper can strip it).
            // this is currently not possible with our current preprocessor as _DISABLE_SSR_TRANSPARENT is a keyword not a define
            // so instead we used this and chose to pay the extra cost of normal write even if SSR transaprent is disabled.
            // Ideally the shader graph generator should handle it but condition below can't be handle correctly for now.
            #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
            #if !defined(_DISABLE_SSR_TRANSPARENT) && !defined(SHADER_UNLIT)
                #define WRITE_NORMAL_BUFFER
            #endif
            #endif
        
            #ifndef DEBUG_DISPLAY
                // In case of opaque we don't want to perform the alpha test, it is done in depth prepass and we use depth equal for ztest (setup from UI)
                // Don't do it with debug display mode as it is possible there is no depth prepass in this case
                #if !defined(_SURFACE_TYPE_TRANSPARENT)
                    #if SHADERPASS == SHADERPASS_FORWARD
                    #define SHADERPASS_FORWARD_BYPASS_ALPHA_TEST
                    #elif SHADERPASS == SHADERPASS_GBUFFER
                    #define SHADERPASS_GBUFFER_BYPASS_ALPHA_TEST
                    #endif
                #endif
            #endif
        
            // Define _DEFERRED_CAPABLE_MATERIAL for shader capable to run in deferred pass
            #if defined(SHADER_LIT) && !defined(_SURFACE_TYPE_TRANSPARENT)
                #define _DEFERRED_CAPABLE_MATERIAL
            #endif
        
            // Translate transparent motion vector define
            #if defined(_TRANSPARENT_WRITES_MOTION_VEC) && defined(_SURFACE_TYPE_TRANSPARENT)
                #define _WRITE_TRANSPARENT_MOTION_VECTOR
            #endif
        
            // -- Graph Properties
            CBUFFER_START(UnityPerMaterial)
        float4 _BaseColor;
        float4 _BaseColorMap_TexelSize;
        float _BaseUsePlanarUV;
        float4 _BaseTilingOffset;
        float4 _SpecularColor;
        float4 _SpecularColorMap_TexelSize;
        float4 _BaseNormalMap_TexelSize;
        float _BaseNormalScale;
        float4 _BaseMaskMap_TexelSize;
        float _BaseAORemapMin;
        float _BaseAORemapMax;
        float _BaseSmoothnessRemapMin;
        float _BaseSmoothnessRemapMax;
        float _USEDYNAMICCOVERTSTATICMASKF;
        float4 _CoverMaskA_TexelSize;
        float _CoverMaskPower;
        float _Cover_Amount;
        float _Cover_Amount_Grow_Speed;
        float _Cover_Max_Angle;
        float _Cover_Min_Height;
        float _Cover_Min_Height_Blending;
        float4 _CoverBaseColor;
        float4 _CoverBaseColorMap_TexelSize;
        float _CoverUsePlanarUV;
        float4 _CoverTilingOffset;
        float4 _CoverSpecularColor;
        float4 _CoverSpecularColorMap_TexelSize;
        float4 _CoverNormalMap_TexelSize;
        float _CoverNormalScale;
        float _CoverNormalBlendHardness;
        float _CoverHardness;
        float _CoverHeightMapMin;
        float _CoverHeightMapMax;
        float _CoverHeightMapOffset;
        float4 _CoverMaskMap_TexelSize;
        float _CoverAORemapMin;
        float _CoverAORemapMax;
        float _CoverSmoothnessRemapMin;
        float _CoverSmoothnessRemapMax;
        float4 _DetailMap_TexelSize;
        float4 _DetailTilingOffset;
        float _DetailAlbedoScale;
        float _DetailNormalScale;
        float _DetailSmoothnessScale;
        float4 _WetColor;
        float _WetSmoothness;
        float4 _EmissionColor;
        float _UseShadowThreshold;
        float4 _DoubleSidedConstants;
        float _BlendMode;
        float _EnableBlendModePreserveSpecularLighting;
        float _RayTracing;
        float _RefractionModel;
        CBUFFER_END
        
        
        // Object and Global properties
        SAMPLER(SamplerState_Linear_Repeat);
        SAMPLER(SamplerState_Linear_Repeat_Aniso8);
        TEXTURE2D(_BaseColorMap);
        SAMPLER(sampler_BaseColorMap);
        TEXTURE2D(_SpecularColorMap);
        SAMPLER(sampler_SpecularColorMap);
        TEXTURE2D(_BaseNormalMap);
        SAMPLER(sampler_BaseNormalMap);
        TEXTURE2D(_BaseMaskMap);
        SAMPLER(sampler_BaseMaskMap);
        TEXTURE2D(_CoverMaskA);
        SAMPLER(sampler_CoverMaskA);
        TEXTURE2D(_CoverBaseColorMap);
        SAMPLER(sampler_CoverBaseColorMap);
        TEXTURE2D(_CoverSpecularColorMap);
        SAMPLER(sampler_CoverSpecularColorMap);
        TEXTURE2D(_CoverNormalMap);
        SAMPLER(sampler_CoverNormalMap);
        TEXTURE2D(_CoverMaskMap);
        SAMPLER(sampler_CoverMaskMap);
        TEXTURE2D(_DetailMap);
        SAMPLER(sampler_DetailMap);
        
            // -- Property used by ScenePickingPass
            #ifdef SCENEPICKINGPASS
            float4 _SelectionID;
            #endif
        
            // -- Properties used by SceneSelectionPass
            #ifdef SCENESELECTIONPASS
            int _ObjectId;
            int _PassValue;
            #endif
        
            // Includes
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingMacros.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/ShaderVariablesRaytracing.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/ShaderVariablesRaytracingLightLoop.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingIntersection.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Lighting.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitRaytracing.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/BuiltinUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingLightLoop.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RayTracingCommon.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderGraphFunctions.hlsl"
        	// GraphIncludes: <None>
        
            // --------------------------------------------------
            // Structs and Packing
        
            struct SurfaceDescriptionInputs
        {
             float3 WorldSpaceNormal;
             float3 TangentSpaceNormal;
             float3 WorldSpaceTangent;
             float3 WorldSpaceBiTangent;
             float3 AbsoluteWorldSpacePosition;
             float4 uv0;
             float4 uv2;
             float4 VertexColor;
        };
        
            //Interpolator Packs: <None>
        
            // --------------------------------------------------
            // Graph
        
        
            // Graph Functions
            
        void Unity_Combine_float(float R, float G, float B, float A, out float4 RGBA, out float3 RGB, out float2 RG)
        {
            RGBA = float4(R, G, B, A);
            RGB = float3(R, G, B);
            RG = float2(R, G);
        }
        
        void Unity_Divide_float(float A, float B, out float Out)
        {
            Out = A / B;
        }
        
        void Unity_Multiply_float4_float4(float4 A, float4 B, out float4 Out)
        {
        Out = A * B;
        }
        
        void Unity_Branch_float4(float Predicate, float4 True, float4 False, out float4 Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_TilingAndOffset_float(float2 UV, float2 Tiling, float2 Offset, out float2 Out)
        {
            Out = UV * Tiling + Offset;
        }
        
        void Unity_Branch_float2(float Predicate, float2 True, float2 False, out float2 Out)
        {
            Out = Predicate ? True : False;
        }
        
        struct Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float
        {
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_2EBA7A3B, float Boolean_7ABB9909, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float IN, out float4 XZ_2)
        {
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Property_30834f691775a0898a45b1c868520436_Out_0_Boolean = Boolean_7ABB9909;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4 = Vector4_2EBA7A3B;
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[0];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[1];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[2];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[3];
        float _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float;
        Unity_Divide_float(1, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4 = IN.uv0;
        float4 _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4 = IN.uv2;
        float4 _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4;
        Unity_Branch_float4(_Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean, _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4, _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4, _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4);
        float2 _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float);
        float2 _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float);
        float2 _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4.xy), _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2, _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2, _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2);
        float2 _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2;
        Unity_Branch_float2(_Property_30834f691775a0898a45b1c868520436_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2, _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2);
        UnitySamplerState _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2) );
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        XZ_2 = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4;
        }
        
        void Unity_Multiply_float_float(float A, float B, out float Out)
        {
            Out = A * B;
        }
        
        void Unity_Add_float(float A, float B, out float Out)
        {
            Out = A + B;
        }
        
        void Unity_Saturate_float(float In, out float Out)
        {
            Out = saturate(In);
        }
        
        void Unity_Absolute_float(float In, out float Out)
        {
            Out = abs(In);
        }
        
        void Unity_SquareRoot_float4(float4 In, out float4 Out)
        {
            Out = sqrt(In);
        }
        
        void Unity_Sign_float(float In, out float Out)
        {
            Out = sign(In);
        }
        
        void Unity_Ceiling_float(float In, out float Out)
        {
            Out = ceil(In);
        }
        
        void Unity_Lerp_float4(float4 A, float4 B, float4 T, out float4 Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float
        {
        };
        
        void SG_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float(float4 Color_9AA111D3, float Vector1_FBE622A2, float Vector1_8C15C351, Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float IN, out float3 OutVector4_1)
        {
        float4 _Property_012510d774fb7f8b860f5270dca4500f_Out_0_Vector4 = Color_9AA111D3;
        float4 _SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4;
        Unity_SquareRoot_float4(_Property_012510d774fb7f8b860f5270dca4500f_Out_0_Vector4, _SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4);
        float _Property_a00e29241d12f983b30177515b367ec9_Out_0_Float = Vector1_FBE622A2;
        float _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float;
        Unity_Sign_float(_Property_a00e29241d12f983b30177515b367ec9_Out_0_Float, _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float);
        float _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float;
        Unity_Add_float(_Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float, 1, _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float);
        float _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float;
        Unity_Multiply_float_float(_Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float, 0.5, _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float);
        float _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float;
        Unity_Ceiling_float(_Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float);
        float _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float = Vector1_8C15C351;
        float _Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float;
        Unity_Multiply_float_float(_Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float);
        float4 _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4;
        Unity_Lerp_float4(_SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4, (_Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float.xxxx), (_Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float.xxxx), _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4);
        float4 _Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4, _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4, _Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4);
        OutVector4_1 = (_Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4.xyz);
        }
        
        void Unity_Clamp_float(float In, float Min, float Max, out float Out)
        {
            Out = clamp(In, Min, Max);
        }
        
        void Unity_Multiply_float2_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A * B;
        }
        
        void Unity_Add_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A + B;
        }
        
        void Unity_DotProduct_float2(float2 A, float2 B, out float Out)
        {
            Out = dot(A, B);
        }
        
        void Unity_OneMinus_float(float In, out float Out)
        {
            Out = 1 - In;
        }
        
        void Unity_SquareRoot_float(float In, out float Out)
        {
            Out = sqrt(In);
        }
        
        void Unity_Sign_float3(float3 In, out float3 Out)
        {
            Out = sign(In);
        }
        
        void Unity_Normalize_float3(float3 In, out float3 Out)
        {
            Out = normalize(In);
        }
        
        void Unity_Branch_float3(float Predicate, float3 True, float3 False, out float3 Out)
        {
            Out = Predicate ? True : False;
        }
        
        struct Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float
        {
        float3 WorldSpaceNormal;
        float3 WorldSpaceTangent;
        float3 WorldSpaceBiTangent;
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_82674548, float Boolean_9FF42DF6, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float IN, out float4 XZ_2)
        {
        float _Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean = Boolean_9FF42DF6;
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4 = Vector4_82674548;
        float _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[0];
        float _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[1];
        float _Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[2];
        float _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[3];
        float _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float;
        Unity_Divide_float(1, _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4 = IN.uv0;
        float4 _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4 = IN.uv2;
        float4 _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4;
        Unity_Branch_float4(_Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean, _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4, _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4, _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4);
        float2 _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float);
        float2 _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float, _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float);
        float2 _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4.xy), _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2, _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2, _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2);
        float2 _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2;
        Unity_Branch_float2(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2, _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2);
        UnitySamplerState _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2) );
        _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.rgb = UnpackNormal(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4);
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        float2 _Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2 = float2(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float, _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float);
        float3 _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3;
        Unity_Sign_float3(IN.WorldSpaceNormal, _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3);
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_R_1_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[0];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[1];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_B_3_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[2];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_A_4_Float = 0;
        float2 _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2 = float2(_Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float, 1);
        float2 _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2;
        Unity_Multiply_float2_float2(_Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2, _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2, _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2);
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float = IN.WorldSpaceNormal[0];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float = IN.WorldSpaceNormal[1];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float = IN.WorldSpaceNormal[2];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_A_4_Float = 0;
        float2 _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2 = float2(_Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float);
        float2 _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2;
        Unity_Add_float2(_Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2, _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2, _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2);
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[0];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[1];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_B_3_Float = 0;
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_A_4_Float = 0;
        float _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float;
        Unity_Multiply_float_float(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float);
        float3 _Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3 = float3(_Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float, _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float);
        float3 _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3;
        {
        float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
        _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3 = TransformWorldToTangent(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
        }
        float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
        Unity_Normalize_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3);
        float3 _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3;
        Unity_Branch_float3(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3, (_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.xyz), _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3);
        XZ_2 = (float4(_Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3, 1.0));
        }
        
        void Unity_NormalStrength_float(float3 In, float Strength, out float3 Out)
        {
            Out = float3(In.rg * Strength, lerp(1, In.b, saturate(Strength)));
        }
        
        void Unity_NormalBlend_float(float3 A, float3 B, out float3 Out)
        {
            Out = SafeNormalize(float3(A.rg + B.rg, A.b * B.b));
        }
        
        void Unity_Subtract_float(float A, float B, out float Out)
        {
            Out = A - B;
        }
        
        void Unity_Power_float(float A, float B, out float Out)
        {
            Out = pow(A, B);
        }
        
        void Unity_Lerp_float3(float3 A, float3 B, float3 T, out float3 Out)
        {
            Out = lerp(A, B, T);
        }
        
        void Unity_Remap_float(float In, float2 InMinMax, float2 OutMinMax, out float Out)
        {
            Out = OutMinMax.x + (In - InMinMax.x) * (OutMinMax.y - OutMinMax.x) / (InMinMax.y - InMinMax.x);
        }
        
        void Unity_Branch_float(float Predicate, float True, float False, out float Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_Multiply_float3_float3(float3 A, float3 B, out float3 Out)
        {
            Out = A * B;
        }
        
        void Unity_Lerp_float(float A, float B, float T, out float Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float
        {
        };
        
        void SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(float Vector1_32317166, float Vector1_FBE622A2, float Vector1_8C15C351, Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float IN, out float SmoothnessOverlay_1)
        {
        float _Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float = Vector1_32317166;
        float _Property_a00e29241d12f983b30177515b367ec9_Out_0_Float = Vector1_FBE622A2;
        float _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float;
        Unity_Sign_float(_Property_a00e29241d12f983b30177515b367ec9_Out_0_Float, _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float);
        float _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float;
        Unity_Add_float(_Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float, 1, _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float);
        float _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float;
        Unity_Multiply_float_float(_Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float, 0.5, _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float);
        float _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float;
        Unity_Ceiling_float(_Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float);
        float _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float = Vector1_8C15C351;
        float _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        Unity_Lerp_float(_Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float, _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float);
        SmoothnessOverlay_1 = _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        }
        
        void Unity_Lerp_float2(float2 A, float2 B, float2 T, out float2 Out)
        {
            Out = lerp(A, B, T);
        }
        
            // Graph Vertex
            // GraphVertex: <None>
        
            // Graph Pixel
            struct SurfaceDescription
        {
            float3 BaseColor;
            float3 Emission;
            float Alpha;
            float3 BentNormal;
            float Smoothness;
            float Occlusion;
            float3 NormalTS;
            float3 Specular;
        };
        
        SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
        {
            SurfaceDescription surface = (SurfaceDescription)0;
            UnityTexture2D _Property_9c271219f828108f958217e55cd6dc1d_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseColorMap);
            float4 _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4 = _BaseTilingOffset;
            float _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean = _BaseUsePlanarUV;
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_f392575634df5b86b63ff6e287282b30;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.uv0 = IN.uv0;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.uv2 = IN.uv2;
            float4 _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_9c271219f828108f958217e55cd6dc1d_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_f392575634df5b86b63ff6e287282b30, _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4);
            float4 _Property_4f676fce92c9378db3c3b92ae77fbff9_Out_0_Vector4 = _BaseColor;
            float4 _Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4, _Property_4f676fce92c9378db3c3b92ae77fbff9_Out_0_Vector4, _Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4);
            UnityTexture2D _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_DetailMap);
            float4 _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4 = _DetailTilingOffset;
            float _Split_9fa8573190399e8da2a843a4cab68164_R_1_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[0];
            float _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[1];
            float _Split_9fa8573190399e8da2a843a4cab68164_B_3_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[2];
            float _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[3];
            float2 _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_R_1_Float, _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float);
            float2 _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_B_3_Float, _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float);
            float2 _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2;
            Unity_TilingAndOffset_float(IN.uv0.xy, _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2, _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2, _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2);
            float4 _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.tex, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.samplerstate, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.GetTransformedUV(_TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2) );
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_R_4_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.r;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.g;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.b;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.a;
            float _Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_R_4_Float, 2, _Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float);
            float _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float;
            Unity_Add_float(_Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float, -1, _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float);
            float _Property_7d68da97cd169d8e8649255aec16158a_Out_0_Float = _DetailAlbedoScale;
            float _Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float;
            Unity_Multiply_float_float(_Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float, _Property_7d68da97cd169d8e8649255aec16158a_Out_0_Float, _Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float);
            float _Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float;
            Unity_Saturate_float(_Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float, _Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float);
            float _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float;
            Unity_Absolute_float(_Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float, _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float);
            Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83;
            float3 _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3;
            SG_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float(_Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4, _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float, _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float, _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83, _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3);
            UnityTexture2D _Property_5ca167b35599f78ab3722ec527327841_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverBaseColorMap);
            float4 _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4 = _CoverTilingOffset;
            float _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean = _CoverUsePlanarUV;
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_ad1db3524021ac898447cb6f6daa4180;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.uv0 = IN.uv0;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.uv2 = IN.uv2;
            float4 _PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_5ca167b35599f78ab3722ec527327841_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_ad1db3524021ac898447cb6f6daa4180, _PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4);
            float4 _Property_b34e94e0b1171480b3e35ff7f4793d7c_Out_0_Vector4 = _CoverBaseColor;
            float4 _Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4, _Property_b34e94e0b1171480b3e35ff7f4793d7c_Out_0_Vector4, _Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4);
            float _Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean = _USEDYNAMICCOVERTSTATICMASKF;
            UnityTexture2D _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskA);
            float4 _UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4 = IN.uv0;
            float4 _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.tex, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.samplerstate, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.GetTransformedUV((_UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4.xy)) );
            float _SampleTexture2D_79111e5af287b084822e60563309a632_R_4_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.r;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_G_5_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.g;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_B_6_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.b;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.a;
            float _Property_c022d8255938838aa73170f05c226269_Out_0_Float = _CoverMaskPower;
            float _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float, _Property_c022d8255938838aa73170f05c226269_Out_0_Float, _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float);
            float _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float;
            Unity_Clamp_float(_Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float, 0, 1, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float);
            float2 _Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2 = float2(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float, _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float);
            float2 _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2, float2(2, 2), _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2);
            float2 _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2;
            Unity_Add_float2(_Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2, float2(-1, -1), _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2);
            float _Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float = _DetailNormalScale;
            float2 _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2, (_Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float.xx), _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2);
            float _Split_492de324af96c482b50573c79f9fb6a0_R_1_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[0];
            float _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[1];
            float _Split_492de324af96c482b50573c79f9fb6a0_B_3_Float = 0;
            float _Split_492de324af96c482b50573c79f9fb6a0_A_4_Float = 0;
            float _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float;
            Unity_DotProduct_float2(_Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float);
            float _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float;
            Unity_Saturate_float(_DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float, _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float);
            float _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float;
            Unity_OneMinus_float(_Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float, _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float);
            float _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float;
            Unity_SquareRoot_float(_OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            float3 _Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3 = float3(_Split_492de324af96c482b50573c79f9fb6a0_R_1_Float, _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            UnityTexture2D _Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseNormalMap);
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv0 = IN.uv0;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv2 = IN.uv2;
            float4 _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4);
            float _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float = _BaseNormalScale;
            float3 _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4.xyz), _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3);
            float3 _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3;
            Unity_NormalBlend_float(_Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3, _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3);
            UnityTexture2D _Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverNormalMap);
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv0 = IN.uv0;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv2 = IN.uv2;
            float4 _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4);
            float _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float = _CoverNormalBlendHardness;
            float3 _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3);
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_R_1_Float = IN.WorldSpaceNormal[0];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float = IN.WorldSpaceNormal[1];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_B_3_Float = IN.WorldSpaceNormal[2];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_A_4_Float = 0;
            float _Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float = _Cover_Amount;
            float _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float = _Cover_Amount_Grow_Speed;
            float _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float;
            Unity_Subtract_float(4, _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float);
            float _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float;
            Unity_Divide_float(_Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float);
            float _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float;
            Unity_Absolute_float(_Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float, _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float);
            float _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float;
            Unity_Power_float(_Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float);
            float _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float;
            Unity_Clamp_float(_Power_c11fc5724f830485a9c4df249a854571_Out_2_Float, 0, 2, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float);
            float _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float;
            Unity_Multiply_float_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float);
            float _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float;
            Unity_Saturate_float(_Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float, _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float);
            float _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float;
            Unity_Clamp_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, 0, 0.9999, _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float);
            float _Property_89633a46f34e1f8996557a9178d78478_Out_0_Float = _Cover_Max_Angle;
            float _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float;
            Unity_Divide_float(_Property_89633a46f34e1f8996557a9178d78478_Out_0_Float, 45, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float);
            float _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float;
            Unity_OneMinus_float(_Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float);
            float _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float;
            Unity_Subtract_float(_Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float, _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float);
            float _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float;
            Unity_Clamp_float(_Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float, 0, 2, _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
            float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
            Unity_Divide_float(1, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float);
            float _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_67dcc607b6da848097d3412324311616_Out_3_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float, _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float);
            float _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float;
            Unity_Absolute_float(_Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float, _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float);
            float _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float = _CoverHardness;
            float _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float;
            Unity_Power_float(_Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float);
            float _Property_f8753bb05d835089bda460d144f93c48_Out_0_Float = _Cover_Min_Height;
            float _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float;
            Unity_OneMinus_float(_Property_f8753bb05d835089bda460d144f93c48_Out_0_Float, _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float);
            float _Split_c66e04f85a2a7f87884040056599e65d_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
            float _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
            float _Split_c66e04f85a2a7f87884040056599e65d_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
            float _Split_c66e04f85a2a7f87884040056599e65d_A_4_Float = 0;
            float _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float;
            Unity_Add_float(_OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float, _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float);
            float _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, 1, _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
            float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
            Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, 0, 1, _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float);
            float _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float = _Cover_Min_Height_Blending;
            float _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float, _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float);
            float _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float;
            Unity_Divide_float(_Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float);
            float _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float;
            Unity_OneMinus_float(_Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float, _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float);
            float _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float;
            Unity_Add_float(_OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float, -0.5, _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
            float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
            Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, 0, 1, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float);
            float _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float;
            Unity_Add_float(_Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float, _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float);
            float _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float;
            Unity_Clamp_float(_Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float, 0, 1, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float);
            float _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float;
            Unity_Multiply_float_float(_Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float);
            float _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float;
            Unity_Multiply_float_float(_Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float);
            float3 _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3, (_Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float.xxx), _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3);
            float3 _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3;
            {
                float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
                _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3 = TransformTangentToWorldDir(_Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3.xyz, tangentTransform, false).xyz;
            }
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_R_1_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[0];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[1];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_B_3_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[2];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_A_4_Float = 0;
            float _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float;
            Unity_Multiply_float_float(_Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float);
            float _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float);
            float _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float);
            float _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float, _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float);
            UnityTexture2D _Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_36e64648ad8a6a849bc794b8693519da;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv0 = IN.uv0;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv2 = IN.uv2;
            float4 _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_36e64648ad8a6a849bc794b8693519da, _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4);
            float _Split_198ec92f3e753d8a9ad50db7d6527324_R_1_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[0];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[1];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[2];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[3];
            float _Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float = _CoverHeightMapMin;
            float _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float = _CoverHeightMapMax;
            float2 _Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2 = float2(_Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float, _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float);
            float _Property_277f22c36084858981418fa95133a562_Out_0_Float = _CoverHeightMapOffset;
            float2 _Add_53997153562831859cc7b582f3068877_Out_2_Vector2;
            Unity_Add_float2(_Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2, (_Property_277f22c36084858981418fa95133a562_Out_0_Float.xx), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2);
            float _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float, float2 (0, 1), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float);
            float _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float, _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float);
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float = IN.VertexColor[0];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float = IN.VertexColor[1];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_B_3_Float = IN.VertexColor[2];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_A_4_Float = IN.VertexColor[3];
            float _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float, _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float, _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float);
            float _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float;
            Unity_Saturate_float(_Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float);
            float _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float);
            float _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float;
            Unity_Branch_float(_Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float);
            float3 _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3;
            Unity_Lerp_float3(_BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3, (_Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4.xyz), (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxx), _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3);
            float4 _Property_e687576468764d85b6b46dca96d8a8e3_Out_0_Vector4 = _WetColor;
            float3 _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3;
            Unity_Multiply_float3_float3((_Property_e687576468764d85b6b46dca96d8a8e3_Out_0_Vector4.xyz), _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3, _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3);
            float _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float;
            Unity_OneMinus_float(_Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float);
            float3 _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
            Unity_Lerp_float3(_Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3, _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3, (_OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float.xxx), _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3);
            UnityTexture2D _Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv0 = IN.uv0;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv2 = IN.uv2;
            float4 _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4);
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_R_1_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[0];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[1];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_B_3_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[2];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[3];
            float _Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float = _BaseAORemapMin;
            float _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float = _BaseAORemapMax;
            float2 _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2 = float2(_Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float, _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float);
            float _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float, float2 (0, 1), _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2, _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float);
            float _Property_e353baf414594b8882fb914562e81165_Out_0_Float = _BaseSmoothnessRemapMin;
            float _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float = _BaseSmoothnessRemapMax;
            float2 _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2 = float2(_Property_e353baf414594b8882fb914562e81165_Out_0_Float, _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float);
            float _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float, float2 (0, 1), _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2, _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float);
            float _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float, 2, _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float);
            float _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float;
            Unity_Add_float(_Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float, -1, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float);
            float _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float = _DetailSmoothnessScale;
            float _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float;
            Unity_Multiply_float_float(_Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float, _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float);
            float _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float;
            Unity_Saturate_float(_Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float, _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float);
            float _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float;
            Unity_Absolute_float(_Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float);
            Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da;
            float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float;
            SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(_Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float);
            float _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float;
            Unity_Saturate_float(_BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float2 _Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2 = float2(_Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float _Property_5e08cfb127183a8993376f9087501eee_Out_0_Float = _CoverAORemapMin;
            float _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float = _CoverAORemapMax;
            float2 _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2 = float2(_Property_5e08cfb127183a8993376f9087501eee_Out_0_Float, _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float);
            float _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float, float2 (0, 1), _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2, _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float);
            float _Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float = _CoverSmoothnessRemapMin;
            float _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float = _CoverSmoothnessRemapMax;
            float2 _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2 = float2(_Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float, _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float);
            float _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float, float2 (0, 1), _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2 = float2(_Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2;
            Unity_Lerp_float2(_Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2, _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xx), _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2);
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_R_1_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[0];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[1];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_B_3_Float = 0;
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_A_4_Float = 0;
            float _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float = _WetSmoothness;
            float _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            Unity_Lerp_float(_Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float, _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float, _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float);
            float _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float = _CoverNormalScale;
            float3 _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3);
            float3 _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxx), _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3);
            UnityTexture2D _Property_f617479b11216b84b89956263f8d3c08_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_SpecularColorMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.uv0 = IN.uv0;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.uv2 = IN.uv2;
            float4 _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_f617479b11216b84b89956263f8d3c08_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d, _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4);
            float4 _Property_112303b9c27a1284b20f0a5c49fb436a_Out_0_Vector4 = _SpecularColor;
            float4 _Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4, _Property_112303b9c27a1284b20f0a5c49fb436a_Out_0_Vector4, _Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4);
            UnityTexture2D _Property_0c768f7d1094a8878d837f25970dbd49_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverSpecularColorMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_4b88db16993b7d84a6c9e021b5992a38;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.uv0 = IN.uv0;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.uv2 = IN.uv2;
            float4 _PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_0c768f7d1094a8878d837f25970dbd49_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_4b88db16993b7d84a6c9e021b5992a38, _PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4);
            float4 _Property_51d3c44a7110108d9e8c9a3acf54125f_Out_0_Vector4 = _CoverSpecularColor;
            float4 _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4, _Property_51d3c44a7110108d9e8c9a3acf54125f_Out_0_Vector4, _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4);
            float4 _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4;
            Unity_Lerp_float4(_Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4, _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxxx), _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4);
            surface.BaseColor = _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
            surface.Emission = float3(0, 0, 0);
            surface.Alpha = 1;
            surface.BentNormal = IN.TangentSpaceNormal;
            surface.Smoothness = _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            surface.Occlusion = _Split_beb57fcf05cbb6809f536625bac5fcbc_R_1_Float;
            surface.NormalTS = _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            surface.Specular = (_Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4.xyz);
            return surface;
        }
        
            // --------------------------------------------------
            // Build Graph Inputs
            #ifdef HAVE_VFX_MODIFICATION
            #define VFX_SRP_ATTRIBUTES AttributesMesh
            #define VaryingsMeshType VaryingsMeshToPS
            #define VFX_SRP_VARYINGS VaryingsMeshType
            #define VFX_SRP_SURFACE_INPUTS FragInputs
            #endif
            SurfaceDescriptionInputs FragInputsToSurfaceDescriptionInputs(FragInputs input, float3 viewWS)
        {
            SurfaceDescriptionInputs output;
            ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
        
            output.WorldSpaceNormal =                           normalize(input.tangentToWorld[2].xyz);
            #if defined(SHADER_STAGE_RAY_TRACING)
            #else
            #endif
            output.TangentSpaceNormal =                         float3(0.0f, 0.0f, 1.0f);
            output.WorldSpaceTangent =                          input.tangentToWorld[0].xyz;
            output.WorldSpaceBiTangent =                        input.tangentToWorld[1].xyz;
            output.AbsoluteWorldSpacePosition =                 GetAbsolutePositionWS(input.positionRWS);
        
        #if UNITY_UV_STARTS_AT_TOP
        #else
        #endif
        
        
            output.uv0 =                                        input.texCoord0;
            output.uv2 =                                        input.texCoord2;
            output.VertexColor =                                input.color;
        
            // splice point to copy frag inputs custom interpolator pack into the SDI
            /* WARNING: $splice Could not find named fragment 'CustomInterpolatorCopyToSDI' */
        
            return output;
        }
        
            // --------------------------------------------------
            // Build Surface Data (Specific Material)
        
        void ApplyDecalToSurfaceDataNoNormal(DecalSurfaceData decalSurfaceData, inout SurfaceData surfaceData);
        
        void ApplyDecalAndGetNormal(FragInputs fragInputs, PositionInputs posInput, SurfaceDescription surfaceDescription,
            inout SurfaceData surfaceData)
        {
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
        #ifdef DECAL_NORMAL_BLENDING
            // SG nodes don't ouptut surface gradients, so if decals require surf grad blending, we have to convert
            // the normal to gradient before applying the decal. We then have to resolve the gradient back to world space
            float3 normalTS;
        
            normalTS = SurfaceGradientFromTangentSpaceNormalAndFromTBN(surfaceDescription.NormalTS,
            fragInputs.tangentToWorld[0], fragInputs.tangentToWorld[1]);
        
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, fragInputs.tangentToWorld[2], normalTS);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        
            GetNormalWS_SG(fragInputs, normalTS, surfaceData.normalWS, doubleSidedConstants);
        #else
            // normal delivered to master node
            GetNormalWS(fragInputs, surfaceDescription.NormalTS, surfaceData.normalWS, doubleSidedConstants);
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                // Both uses and modifies 'surfaceData.normalWS'.
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, surfaceData.normalWS.xyz);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        #endif
        }
        void BuildSurfaceData(FragInputs fragInputs, inout SurfaceDescription surfaceDescription, float3 V, PositionInputs posInput, out SurfaceData surfaceData, out float3 bentNormalWS)
        {
            ZERO_INITIALIZE(SurfaceData, surfaceData);
        
            // specularOcclusion need to be init ahead of decal to quiet the compiler that modify the SurfaceData struct
            // however specularOcclusion can come from the graph, so need to be init here so it can be override.
            surfaceData.specularOcclusion = 1.0;
        
            surfaceData.baseColor =                 surfaceDescription.BaseColor;
            surfaceData.perceptualSmoothness =      surfaceDescription.Smoothness;
            surfaceData.ambientOcclusion =          surfaceDescription.Occlusion;
            surfaceData.specularColor =             surfaceDescription.Specular;
        
            #if defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE) || defined(_REFRACTION_THIN)
                if (_EnableSSRefraction)
                {
        
                    surfaceData.transmittanceMask = (1.0 - surfaceDescription.Alpha);
                    surfaceDescription.Alpha = 1.0;
                }
                else
                {
                    surfaceData.ior = 1.0;
                    surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                    surfaceData.atDistance = 1.0;
                    surfaceData.transmittanceMask = 0.0;
                    surfaceDescription.Alpha = 1.0;
                }
            #else
                surfaceData.ior = 1.0;
                surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                surfaceData.atDistance = 1.0;
                surfaceData.transmittanceMask = 0.0;
            #endif
        
            // These static material feature allow compile time optimization
            surfaceData.materialFeatures = MATERIALFEATUREFLAGS_LIT_STANDARD;
            #ifdef _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SUBSURFACE_SCATTERING;
            #endif
        
            #ifdef _MATERIAL_FEATURE_TRANSMISSION
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
            #endif
        
            #ifdef _MATERIAL_FEATURE_ANISOTROPY
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_ANISOTROPY;
        
                // Initialize the normal to something non-zero to avoid a div-zero warning for anisotropy.
                surfaceData.normalWS = float3(0, 1, 0);
            #endif
        
            #ifdef _MATERIAL_FEATURE_IRIDESCENCE
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_IRIDESCENCE;
            #endif
        
            #ifdef _MATERIAL_FEATURE_SPECULAR_COLOR
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SPECULAR_COLOR;
            #endif
        
            #ifdef _MATERIAL_FEATURE_CLEAR_COAT
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_CLEAR_COAT;
            #endif
        
            #if defined (_MATERIAL_FEATURE_SPECULAR_COLOR) && defined (_ENERGY_CONSERVING_SPECULAR)
                // Require to have setup baseColor
                // Reproduce the energy conservation done in legacy Unity. Not ideal but better for compatibility and users can unchek it
                surfaceData.baseColor *= (1.0 - Max3(surfaceData.specularColor.r, surfaceData.specularColor.g, surfaceData.specularColor.b));
            #endif
        
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
            ApplyDecalAndGetNormal(fragInputs, posInput, surfaceDescription, surfaceData);
        
            surfaceData.geomNormalWS = fragInputs.tangentToWorld[2];
        
            surfaceData.tangentWS = normalize(fragInputs.tangentToWorld[0].xyz);    // The tangent is not normalize in tangentToWorld for mikkt. TODO: Check if it expected that we normalize with Morten. Tag: SURFACE_GRADIENT
        
        
            bentNormalWS = surfaceData.normalWS;
        
            surfaceData.tangentWS = Orthonormalize(surfaceData.tangentWS, surfaceData.normalWS);
        
            #ifdef DEBUG_DISPLAY
                if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
                {
                    // TODO: need to update mip info
                    surfaceData.metallic = 0;
                }
        
                // We need to call ApplyDebugToSurfaceData after filling the surfarcedata and before filling builtinData
                // as it can modify attribute use for static lighting
                ApplyDebugToSurfaceData(fragInputs.tangentToWorld, surfaceData);
            #endif
        
            // By default we use the ambient occlusion with Tri-ace trick (apply outside) for specular occlusion.
            // If user provide bent normal then we process a better term
            #if defined(_SPECULAR_OCCLUSION_CUSTOM)
                // Just use the value passed through via the slot (not active otherwise)
            #elif defined(_SPECULAR_OCCLUSION_FROM_AO_BENT_NORMAL)
                // If we have bent normal and ambient occlusion, process a specular occlusion
                surfaceData.specularOcclusion = GetSpecularOcclusionFromBentAO(V, bentNormalWS, surfaceData.normalWS, surfaceData.ambientOcclusion, PerceptualSmoothnessToPerceptualRoughness(surfaceData.perceptualSmoothness));
            #elif defined(_AMBIENT_OCCLUSION) && defined(_SPECULAR_OCCLUSION_FROM_AO)
                surfaceData.specularOcclusion = GetSpecularOcclusionFromAmbientOcclusion(ClampNdotV(dot(surfaceData.normalWS, V)), surfaceData.ambientOcclusion, PerceptualSmoothnessToRoughness(surfaceData.perceptualSmoothness));
            #endif
        
            #if defined(_ENABLE_GEOMETRIC_SPECULAR_AA) && !defined(SHADER_STAGE_RAY_TRACING)
                surfaceData.perceptualSmoothness = GeometricNormalFiltering(surfaceData.perceptualSmoothness, fragInputs.tangentToWorld[2], surfaceDescription.SpecularAAScreenSpaceVariance, surfaceDescription.SpecularAAThreshold);
            #endif
        }
        
            // --------------------------------------------------
            // Get Surface And BuiltinData
        
            void GetSurfaceAndBuiltinData(FragInputs fragInputs, float3 V, inout PositionInputs posInput, out SurfaceData surfaceData, out BuiltinData builtinData RAY_TRACING_OPTIONAL_PARAMETERS)
            {
                // Don't dither if displaced tessellation (we're fading out the displacement instead to match the next LOD)
                #if !defined(SHADER_STAGE_RAY_TRACING) && !defined(_TESSELLATION_DISPLACEMENT)
                #ifdef LOD_FADE_CROSSFADE // enable dithering LOD transition if user select CrossFade transition in LOD group
                LODDitheringTransition(ComputeFadeMaskSeed(V, posInput.positionSS), unity_LODFade.x);
                #endif
                #endif
        
                #ifndef SHADER_UNLIT
                #ifdef _DOUBLESIDED_ON
                    float3 doubleSidedConstants = _DoubleSidedConstants.xyz;
                #else
                    float3 doubleSidedConstants = float3(1.0, 1.0, 1.0);
                #endif
        
                ApplyDoubleSidedFlipOrMirror(fragInputs, doubleSidedConstants); // Apply double sided flip on the vertex normal
                #endif // SHADER_UNLIT
        
                SurfaceDescriptionInputs surfaceDescriptionInputs = FragInputsToSurfaceDescriptionInputs(fragInputs, V);
        
                #if defined(HAVE_VFX_MODIFICATION)
                GraphProperties properties;
                ZERO_INITIALIZE(GraphProperties, properties);
        
                GetElementPixelProperties(fragInputs, properties);
        
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs, properties);
                #else
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs);
                #endif
        
                // Perform alpha test very early to save performance (a killed pixel will not sample textures)
                // TODO: split graph evaluation to grab just alpha dependencies first? tricky..
                #ifdef _ALPHATEST_ON
                    float alphaCutoff = surfaceDescription.AlphaClipThreshold;
                    #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
                    // The TransparentDepthPrepass is also used with SSR transparent.
                    // If an artists enable transaprent SSR but not the TransparentDepthPrepass itself, then we use AlphaClipThreshold
                    // otherwise if TransparentDepthPrepass is enabled we use AlphaClipThresholdDepthPrepass
                    #elif SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_POSTPASS
                    // DepthPostpass always use its own alpha threshold
                    alphaCutoff = surfaceDescription.AlphaClipThresholdDepthPostpass;
                    #elif (SHADERPASS == SHADERPASS_SHADOWS) || (SHADERPASS == SHADERPASS_RAYTRACING_VISIBILITY)
                    // If use shadow threshold isn't enable we don't allow any test
                    #endif
        
                    GENERIC_ALPHA_TEST(surfaceDescription.Alpha, alphaCutoff);
                #endif
        
                #if !defined(SHADER_STAGE_RAY_TRACING) && _DEPTHOFFSET_ON
                ApplyDepthOffsetPositionInput(V, surfaceDescription.DepthOffset, GetViewForwardDir(), GetWorldToHClipMatrix(), posInput);
                #endif
        
                #ifndef SHADER_UNLIT
                float3 bentNormalWS;
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData, bentNormalWS);
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD1
                    float4 lightmapTexCoord1 = fragInputs.texCoord1;
                #else
                    float4 lightmapTexCoord1 = float4(0,0,0,0);
                #endif
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD2
                    float4 lightmapTexCoord2 = fragInputs.texCoord2;
                #else
                    float4 lightmapTexCoord2 = float4(0,0,0,0);
                #endif
        
                // Builtin Data
                // For back lighting we use the oposite vertex normal
                InitBuiltinData(posInput, surfaceDescription.Alpha, bentNormalWS, -fragInputs.tangentToWorld[2], lightmapTexCoord1, lightmapTexCoord2, builtinData);
        
                #else
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData);
        
                ZERO_BUILTIN_INITIALIZE(builtinData); // No call to InitBuiltinData as we don't have any lighting
                builtinData.opacity = surfaceDescription.Alpha;
        
                #if defined(DEBUG_DISPLAY)
                    // Light Layers are currently not used for the Unlit shader (because it is not lit)
                    // But Unlit objects do cast shadows according to their rendering layer mask, which is what we want to
                    // display in the light layers visualization mode, therefore we need the renderingLayers
                    builtinData.renderingLayers = GetMeshRenderingLightLayer();
                #endif
        
                #endif // SHADER_UNLIT
        
                #ifdef _ALPHATEST_ON
                    // Used for sharpening by alpha to mask - Alpha to covertage is only used with depth only and forward pass (no shadow pass, no transparent pass)
                    builtinData.alphaClipTreshold = alphaCutoff;
                #endif
        
                // override sampleBakedGI - not used by Unlit
        
                builtinData.emissiveColor = surfaceDescription.Emission;
        
                // Note this will not fully work on transparent surfaces (can check with _SURFACE_TYPE_TRANSPARENT define)
                // We will always overwrite vt feeback with the nearest. So behind transparent surfaces vt will not be resolved
                // This is a limitation of the current MRT approach.
                #ifdef UNITY_VIRTUAL_TEXTURING
                #endif
        
                #if _DEPTHOFFSET_ON
                builtinData.depthOffset = surfaceDescription.DepthOffset;
                #endif
        
                // TODO: We should generate distortion / distortionBlur for non distortion pass
                #if (SHADERPASS == SHADERPASS_DISTORTION)
                builtinData.distortion = surfaceDescription.Distortion;
                builtinData.distortionBlur = surfaceDescription.DistortionBlur;
                #endif
        
                #ifndef SHADER_UNLIT
                // PostInitBuiltinData call ApplyDebugToBuiltinData
                PostInitBuiltinData(V, posInput, surfaceData, builtinData);
                #else
                ApplyDebugToBuiltinData(builtinData);
                #endif
        
                RAY_TRACING_OPTIONAL_ALPHA_TEST_PASS
            }
        
            // --------------------------------------------------
            // Main
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassRaytracingIndirect.hlsl"
        
            // --------------------------------------------------
            // Visual Effect Vertex Invocations
        
        	#ifdef HAVE_VFX_MODIFICATION
        	#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
        	#endif
        
            ENDHLSL
        }
        Pass
        {
            Name "VisibilityDXR"
            Tags
            {
                "LightMode" = "VisibilityDXR"
            }
        
            // Render State
            // RenderState: <None>
        
            // Debug
            // <None>
        
            // --------------------------------------------------
            // Pass
        
            HLSLPROGRAM
        
            // Pragmas
            #pragma target 5.0
        #pragma raytracing surface_shader
        #pragma only_renderers d3d11 xboxseries ps5
        
            // Keywords
            #pragma multi_compile _ TRANSPARENT_COLOR_SHADOW
        #pragma shader_feature _ _SURFACE_TYPE_TRANSPARENT
        #pragma shader_feature_local _ _DOUBLESIDED_ON
        #pragma shader_feature_local _ _ADD_PRECOMPUTED_VELOCITY
        #pragma shader_feature_local _ _TRANSPARENT_WRITES_MOTION_VEC
        #pragma shader_feature_local_fragment _ _ENABLE_FOG_ON_TRANSPARENT
        #pragma shader_feature_local_fragment _ _DISABLE_DECALS
        #pragma shader_feature_local_raytracing _ _DISABLE_DECALS
        #pragma shader_feature_local_fragment _ _DISABLE_SSR
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR
        #pragma shader_feature_local_fragment _ _DISABLE_SSR_TRANSPARENT
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR_TRANSPARENT
        #pragma shader_feature_local _ _REFRACTION_PLANE _REFRACTION_SPHERE _REFRACTION_THIN
            // GraphKeywords: <None>
        
            // For custom interpolators to inject a substruct definition before FragInputs definition,
            // allowing for FragInputs to capture CI's intended for ShaderGraph's SDI.
            /* WARNING: $splice Could not find named fragment 'CustomInterpolatorPreInclude' */
        
        
            // TODO: Merge FragInputsVFX substruct with CustomInterpolators.
        	#ifdef HAVE_VFX_MODIFICATION
        	struct FragInputsVFX
            {
                /* WARNING: $splice Could not find named fragment 'FragInputsVFX' */
            };
            #endif
        
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/GeometricTools.hlsl" // Required by Tessellation.hlsl
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Tessellation.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl" // Required to be include before we include properties as it define DECLARE_STACK_CB
            // Always include Shader Graph version
            // Always include last to avoid double macros
            #include "Packages/com.unity.shadergraph/ShaderGraphLibrary/Functions.hlsl" // Need to be here for Gradient struct definition
        
            // --------------------------------------------------
            // Defines
        
            // Attribute
            #define ATTRIBUTES_NEED_NORMAL
            #define ATTRIBUTES_NEED_TANGENT
            #define ATTRIBUTES_NEED_TEXCOORD0
            #define ATTRIBUTES_NEED_TEXCOORD2
            #define ATTRIBUTES_NEED_COLOR
            #define VARYINGS_NEED_POSITION_WS
            #define VARYINGS_NEED_TANGENT_TO_WORLD
            #define VARYINGS_NEED_TEXCOORD0
            #define VARYINGS_NEED_TEXCOORD2
            #define VARYINGS_NEED_COLOR
        
        
            //Strip down the FragInputs.hlsl (on graphics), so we can only optimize the interpolators we use.
            //if by accident something requests contents of FragInputs.hlsl, it will be caught as a compiler error
            //Frag inputs stripping is only enabled when FRAG_INPUTS_ENABLE_STRIPPING is set
            #if !defined(SHADER_STAGE_RAY_TRACING) && SHADERPASS != SHADERPASS_RAYTRACING_GBUFFER && SHADERPASS != SHADERPASS_FULL_SCREEN_DEBUG
            #define FRAG_INPUTS_ENABLE_STRIPPING
            #endif
            #define FRAG_INPUTS_USE_TEXCOORD0
            #define FRAG_INPUTS_USE_TEXCOORD2
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/FragInputs.hlsl"
        
        
        
            #define SHADERPASS SHADERPASS_RAYTRACING_VISIBILITY
        #define RAYTRACING_SHADER_GRAPH_RAYTRACED
        
        
            // Following two define are a workaround introduce in 10.1.x for RaytracingQualityNode
            // The ShaderGraph don't support correctly migration of this node as it serialize all the node data
            // in the json file making it impossible to uprgrade. Until we get a fix, we do a workaround here
            // to still allow us to rename the field and keyword of this node without breaking existing code.
            #ifdef RAYTRACING_SHADER_GRAPH_DEFAULT
            #define RAYTRACING_SHADER_GRAPH_HIGH
            #endif
        
            #ifdef RAYTRACING_SHADER_GRAPH_RAYTRACED
            #define RAYTRACING_SHADER_GRAPH_LOW
            #endif
            // end
        
            #ifndef SHADER_UNLIT
            // We need isFrontFace when using double sided - it is not required for unlit as in case of unlit double sided only drive the cullmode
            // VARYINGS_NEED_CULLFACE can be define by VaryingsMeshToPS.FaceSign input if a IsFrontFace Node is included in the shader graph.
            #if defined(_DOUBLESIDED_ON) && !defined(VARYINGS_NEED_CULLFACE)
                #define VARYINGS_NEED_CULLFACE
            #endif
            #endif
        
            // Specific Material Define
        #define _MATERIAL_FEATURE_SPECULAR_COLOR 1
        #define _AMBIENT_OCCLUSION 1
        #define _SPECULAR_OCCLUSION_FROM_AO 1
        #define _ENERGY_CONSERVING_SPECULAR 1
        
        // If we use subsurface scattering, enable output split lighting (for forward pass)
        #if defined(_MATERIAL_FEATURE_SUBSURFACE_SCATTERING) && !defined(_SURFACE_TYPE_TRANSPARENT)
            #define OUTPUT_SPLIT_LIGHTING
        #endif
        
        // This shader support recursive rendering for raytracing
        #define HAVE_RECURSIVE_RENDERING
        
        // In Path Tracing, For all single-sided, refractive materials, we want to force a thin refraction model
        #if (SHADERPASS == SHADERPASS_PATH_TRACING) && !defined(_DOUBLESIDED_ON) && (defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE))
            #undef  _REFRACTION_PLANE
            #undef  _REFRACTION_SPHERE
            #define _REFRACTION_THIN
        #endif
            // Caution: we can use the define SHADER_UNLIT onlit after the above Material include as it is the Unlit template who define it
        
            // To handle SSR on transparent correctly with a possibility to enable/disable it per framesettings
            // we should have a code like this:
            // if !defined(_DISABLE_SSR_TRANSPARENT)
            // pragma multi_compile _ WRITE_NORMAL_BUFFER
            // endif
            // i.e we enable the multicompile only if we can receive SSR or not, and then C# code drive
            // it based on if SSR transparent in frame settings and not (and stripper can strip it).
            // this is currently not possible with our current preprocessor as _DISABLE_SSR_TRANSPARENT is a keyword not a define
            // so instead we used this and chose to pay the extra cost of normal write even if SSR transaprent is disabled.
            // Ideally the shader graph generator should handle it but condition below can't be handle correctly for now.
            #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
            #if !defined(_DISABLE_SSR_TRANSPARENT) && !defined(SHADER_UNLIT)
                #define WRITE_NORMAL_BUFFER
            #endif
            #endif
        
            #ifndef DEBUG_DISPLAY
                // In case of opaque we don't want to perform the alpha test, it is done in depth prepass and we use depth equal for ztest (setup from UI)
                // Don't do it with debug display mode as it is possible there is no depth prepass in this case
                #if !defined(_SURFACE_TYPE_TRANSPARENT)
                    #if SHADERPASS == SHADERPASS_FORWARD
                    #define SHADERPASS_FORWARD_BYPASS_ALPHA_TEST
                    #elif SHADERPASS == SHADERPASS_GBUFFER
                    #define SHADERPASS_GBUFFER_BYPASS_ALPHA_TEST
                    #endif
                #endif
            #endif
        
            // Define _DEFERRED_CAPABLE_MATERIAL for shader capable to run in deferred pass
            #if defined(SHADER_LIT) && !defined(_SURFACE_TYPE_TRANSPARENT)
                #define _DEFERRED_CAPABLE_MATERIAL
            #endif
        
            // Translate transparent motion vector define
            #if defined(_TRANSPARENT_WRITES_MOTION_VEC) && defined(_SURFACE_TYPE_TRANSPARENT)
                #define _WRITE_TRANSPARENT_MOTION_VECTOR
            #endif
        
            // -- Graph Properties
            CBUFFER_START(UnityPerMaterial)
        float4 _BaseColor;
        float4 _BaseColorMap_TexelSize;
        float _BaseUsePlanarUV;
        float4 _BaseTilingOffset;
        float4 _SpecularColor;
        float4 _SpecularColorMap_TexelSize;
        float4 _BaseNormalMap_TexelSize;
        float _BaseNormalScale;
        float4 _BaseMaskMap_TexelSize;
        float _BaseAORemapMin;
        float _BaseAORemapMax;
        float _BaseSmoothnessRemapMin;
        float _BaseSmoothnessRemapMax;
        float _USEDYNAMICCOVERTSTATICMASKF;
        float4 _CoverMaskA_TexelSize;
        float _CoverMaskPower;
        float _Cover_Amount;
        float _Cover_Amount_Grow_Speed;
        float _Cover_Max_Angle;
        float _Cover_Min_Height;
        float _Cover_Min_Height_Blending;
        float4 _CoverBaseColor;
        float4 _CoverBaseColorMap_TexelSize;
        float _CoverUsePlanarUV;
        float4 _CoverTilingOffset;
        float4 _CoverSpecularColor;
        float4 _CoverSpecularColorMap_TexelSize;
        float4 _CoverNormalMap_TexelSize;
        float _CoverNormalScale;
        float _CoverNormalBlendHardness;
        float _CoverHardness;
        float _CoverHeightMapMin;
        float _CoverHeightMapMax;
        float _CoverHeightMapOffset;
        float4 _CoverMaskMap_TexelSize;
        float _CoverAORemapMin;
        float _CoverAORemapMax;
        float _CoverSmoothnessRemapMin;
        float _CoverSmoothnessRemapMax;
        float4 _DetailMap_TexelSize;
        float4 _DetailTilingOffset;
        float _DetailAlbedoScale;
        float _DetailNormalScale;
        float _DetailSmoothnessScale;
        float4 _WetColor;
        float _WetSmoothness;
        float4 _EmissionColor;
        float _UseShadowThreshold;
        float4 _DoubleSidedConstants;
        float _BlendMode;
        float _EnableBlendModePreserveSpecularLighting;
        float _RayTracing;
        float _RefractionModel;
        CBUFFER_END
        
        
        // Object and Global properties
        SAMPLER(SamplerState_Linear_Repeat);
        SAMPLER(SamplerState_Linear_Repeat_Aniso8);
        TEXTURE2D(_BaseColorMap);
        SAMPLER(sampler_BaseColorMap);
        TEXTURE2D(_SpecularColorMap);
        SAMPLER(sampler_SpecularColorMap);
        TEXTURE2D(_BaseNormalMap);
        SAMPLER(sampler_BaseNormalMap);
        TEXTURE2D(_BaseMaskMap);
        SAMPLER(sampler_BaseMaskMap);
        TEXTURE2D(_CoverMaskA);
        SAMPLER(sampler_CoverMaskA);
        TEXTURE2D(_CoverBaseColorMap);
        SAMPLER(sampler_CoverBaseColorMap);
        TEXTURE2D(_CoverSpecularColorMap);
        SAMPLER(sampler_CoverSpecularColorMap);
        TEXTURE2D(_CoverNormalMap);
        SAMPLER(sampler_CoverNormalMap);
        TEXTURE2D(_CoverMaskMap);
        SAMPLER(sampler_CoverMaskMap);
        TEXTURE2D(_DetailMap);
        SAMPLER(sampler_DetailMap);
        
            // -- Property used by ScenePickingPass
            #ifdef SCENEPICKINGPASS
            float4 _SelectionID;
            #endif
        
            // -- Properties used by SceneSelectionPass
            #ifdef SCENESELECTIONPASS
            int _ObjectId;
            int _PassValue;
            #endif
        
            // Includes
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingMacros.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/ShaderVariablesRaytracing.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/ShaderVariablesRaytracingLightLoop.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingIntersection.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitRaytracing.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/BuiltinUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RayTracingCommon.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderGraphFunctions.hlsl"
        	// GraphIncludes: <None>
        
            // --------------------------------------------------
            // Structs and Packing
        
            struct SurfaceDescriptionInputs
        {
             float3 WorldSpaceNormal;
             float3 TangentSpaceNormal;
             float3 WorldSpaceTangent;
             float3 WorldSpaceBiTangent;
             float3 AbsoluteWorldSpacePosition;
             float4 uv0;
             float4 uv2;
             float4 VertexColor;
        };
        
            //Interpolator Packs: <None>
        
            // --------------------------------------------------
            // Graph
        
        
            // Graph Functions
            
        void Unity_Combine_float(float R, float G, float B, float A, out float4 RGBA, out float3 RGB, out float2 RG)
        {
            RGBA = float4(R, G, B, A);
            RGB = float3(R, G, B);
            RG = float2(R, G);
        }
        
        void Unity_Divide_float(float A, float B, out float Out)
        {
            Out = A / B;
        }
        
        void Unity_Multiply_float4_float4(float4 A, float4 B, out float4 Out)
        {
        Out = A * B;
        }
        
        void Unity_Branch_float4(float Predicate, float4 True, float4 False, out float4 Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_TilingAndOffset_float(float2 UV, float2 Tiling, float2 Offset, out float2 Out)
        {
            Out = UV * Tiling + Offset;
        }
        
        void Unity_Branch_float2(float Predicate, float2 True, float2 False, out float2 Out)
        {
            Out = Predicate ? True : False;
        }
        
        struct Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float
        {
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_2EBA7A3B, float Boolean_7ABB9909, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float IN, out float4 XZ_2)
        {
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Property_30834f691775a0898a45b1c868520436_Out_0_Boolean = Boolean_7ABB9909;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4 = Vector4_2EBA7A3B;
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[0];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[1];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[2];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[3];
        float _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float;
        Unity_Divide_float(1, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4 = IN.uv0;
        float4 _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4 = IN.uv2;
        float4 _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4;
        Unity_Branch_float4(_Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean, _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4, _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4, _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4);
        float2 _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float);
        float2 _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float);
        float2 _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4.xy), _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2, _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2, _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2);
        float2 _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2;
        Unity_Branch_float2(_Property_30834f691775a0898a45b1c868520436_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2, _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2);
        UnitySamplerState _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2) );
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        XZ_2 = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4;
        }
        
        void Unity_Multiply_float_float(float A, float B, out float Out)
        {
            Out = A * B;
        }
        
        void Unity_Add_float(float A, float B, out float Out)
        {
            Out = A + B;
        }
        
        void Unity_Saturate_float(float In, out float Out)
        {
            Out = saturate(In);
        }
        
        void Unity_Absolute_float(float In, out float Out)
        {
            Out = abs(In);
        }
        
        void Unity_SquareRoot_float4(float4 In, out float4 Out)
        {
            Out = sqrt(In);
        }
        
        void Unity_Sign_float(float In, out float Out)
        {
            Out = sign(In);
        }
        
        void Unity_Ceiling_float(float In, out float Out)
        {
            Out = ceil(In);
        }
        
        void Unity_Lerp_float4(float4 A, float4 B, float4 T, out float4 Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float
        {
        };
        
        void SG_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float(float4 Color_9AA111D3, float Vector1_FBE622A2, float Vector1_8C15C351, Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float IN, out float3 OutVector4_1)
        {
        float4 _Property_012510d774fb7f8b860f5270dca4500f_Out_0_Vector4 = Color_9AA111D3;
        float4 _SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4;
        Unity_SquareRoot_float4(_Property_012510d774fb7f8b860f5270dca4500f_Out_0_Vector4, _SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4);
        float _Property_a00e29241d12f983b30177515b367ec9_Out_0_Float = Vector1_FBE622A2;
        float _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float;
        Unity_Sign_float(_Property_a00e29241d12f983b30177515b367ec9_Out_0_Float, _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float);
        float _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float;
        Unity_Add_float(_Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float, 1, _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float);
        float _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float;
        Unity_Multiply_float_float(_Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float, 0.5, _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float);
        float _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float;
        Unity_Ceiling_float(_Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float);
        float _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float = Vector1_8C15C351;
        float _Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float;
        Unity_Multiply_float_float(_Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float);
        float4 _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4;
        Unity_Lerp_float4(_SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4, (_Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float.xxxx), (_Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float.xxxx), _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4);
        float4 _Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4, _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4, _Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4);
        OutVector4_1 = (_Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4.xyz);
        }
        
        void Unity_Clamp_float(float In, float Min, float Max, out float Out)
        {
            Out = clamp(In, Min, Max);
        }
        
        void Unity_Multiply_float2_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A * B;
        }
        
        void Unity_Add_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A + B;
        }
        
        void Unity_DotProduct_float2(float2 A, float2 B, out float Out)
        {
            Out = dot(A, B);
        }
        
        void Unity_OneMinus_float(float In, out float Out)
        {
            Out = 1 - In;
        }
        
        void Unity_SquareRoot_float(float In, out float Out)
        {
            Out = sqrt(In);
        }
        
        void Unity_Sign_float3(float3 In, out float3 Out)
        {
            Out = sign(In);
        }
        
        void Unity_Normalize_float3(float3 In, out float3 Out)
        {
            Out = normalize(In);
        }
        
        void Unity_Branch_float3(float Predicate, float3 True, float3 False, out float3 Out)
        {
            Out = Predicate ? True : False;
        }
        
        struct Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float
        {
        float3 WorldSpaceNormal;
        float3 WorldSpaceTangent;
        float3 WorldSpaceBiTangent;
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_82674548, float Boolean_9FF42DF6, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float IN, out float4 XZ_2)
        {
        float _Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean = Boolean_9FF42DF6;
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4 = Vector4_82674548;
        float _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[0];
        float _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[1];
        float _Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[2];
        float _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[3];
        float _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float;
        Unity_Divide_float(1, _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4 = IN.uv0;
        float4 _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4 = IN.uv2;
        float4 _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4;
        Unity_Branch_float4(_Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean, _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4, _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4, _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4);
        float2 _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float);
        float2 _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float, _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float);
        float2 _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4.xy), _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2, _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2, _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2);
        float2 _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2;
        Unity_Branch_float2(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2, _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2);
        UnitySamplerState _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2) );
        _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.rgb = UnpackNormal(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4);
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        float2 _Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2 = float2(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float, _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float);
        float3 _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3;
        Unity_Sign_float3(IN.WorldSpaceNormal, _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3);
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_R_1_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[0];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[1];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_B_3_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[2];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_A_4_Float = 0;
        float2 _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2 = float2(_Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float, 1);
        float2 _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2;
        Unity_Multiply_float2_float2(_Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2, _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2, _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2);
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float = IN.WorldSpaceNormal[0];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float = IN.WorldSpaceNormal[1];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float = IN.WorldSpaceNormal[2];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_A_4_Float = 0;
        float2 _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2 = float2(_Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float);
        float2 _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2;
        Unity_Add_float2(_Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2, _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2, _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2);
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[0];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[1];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_B_3_Float = 0;
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_A_4_Float = 0;
        float _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float;
        Unity_Multiply_float_float(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float);
        float3 _Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3 = float3(_Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float, _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float);
        float3 _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3;
        {
        float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
        _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3 = TransformWorldToTangent(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
        }
        float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
        Unity_Normalize_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3);
        float3 _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3;
        Unity_Branch_float3(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3, (_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.xyz), _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3);
        XZ_2 = (float4(_Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3, 1.0));
        }
        
        void Unity_NormalStrength_float(float3 In, float Strength, out float3 Out)
        {
            Out = float3(In.rg * Strength, lerp(1, In.b, saturate(Strength)));
        }
        
        void Unity_NormalBlend_float(float3 A, float3 B, out float3 Out)
        {
            Out = SafeNormalize(float3(A.rg + B.rg, A.b * B.b));
        }
        
        void Unity_Subtract_float(float A, float B, out float Out)
        {
            Out = A - B;
        }
        
        void Unity_Power_float(float A, float B, out float Out)
        {
            Out = pow(A, B);
        }
        
        void Unity_Lerp_float3(float3 A, float3 B, float3 T, out float3 Out)
        {
            Out = lerp(A, B, T);
        }
        
        void Unity_Remap_float(float In, float2 InMinMax, float2 OutMinMax, out float Out)
        {
            Out = OutMinMax.x + (In - InMinMax.x) * (OutMinMax.y - OutMinMax.x) / (InMinMax.y - InMinMax.x);
        }
        
        void Unity_Branch_float(float Predicate, float True, float False, out float Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_Multiply_float3_float3(float3 A, float3 B, out float3 Out)
        {
            Out = A * B;
        }
        
        void Unity_Lerp_float(float A, float B, float T, out float Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float
        {
        };
        
        void SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(float Vector1_32317166, float Vector1_FBE622A2, float Vector1_8C15C351, Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float IN, out float SmoothnessOverlay_1)
        {
        float _Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float = Vector1_32317166;
        float _Property_a00e29241d12f983b30177515b367ec9_Out_0_Float = Vector1_FBE622A2;
        float _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float;
        Unity_Sign_float(_Property_a00e29241d12f983b30177515b367ec9_Out_0_Float, _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float);
        float _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float;
        Unity_Add_float(_Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float, 1, _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float);
        float _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float;
        Unity_Multiply_float_float(_Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float, 0.5, _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float);
        float _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float;
        Unity_Ceiling_float(_Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float);
        float _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float = Vector1_8C15C351;
        float _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        Unity_Lerp_float(_Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float, _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float);
        SmoothnessOverlay_1 = _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        }
        
        void Unity_Lerp_float2(float2 A, float2 B, float2 T, out float2 Out)
        {
            Out = lerp(A, B, T);
        }
        
            // Graph Vertex
            // GraphVertex: <None>
        
            // Graph Pixel
            struct SurfaceDescription
        {
            float3 BaseColor;
            float3 Emission;
            float Alpha;
            float3 BentNormal;
            float Smoothness;
            float Occlusion;
            float3 NormalTS;
            float3 Specular;
        };
        
        SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
        {
            SurfaceDescription surface = (SurfaceDescription)0;
            UnityTexture2D _Property_9c271219f828108f958217e55cd6dc1d_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseColorMap);
            float4 _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4 = _BaseTilingOffset;
            float _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean = _BaseUsePlanarUV;
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_f392575634df5b86b63ff6e287282b30;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.uv0 = IN.uv0;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.uv2 = IN.uv2;
            float4 _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_9c271219f828108f958217e55cd6dc1d_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_f392575634df5b86b63ff6e287282b30, _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4);
            float4 _Property_4f676fce92c9378db3c3b92ae77fbff9_Out_0_Vector4 = _BaseColor;
            float4 _Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4, _Property_4f676fce92c9378db3c3b92ae77fbff9_Out_0_Vector4, _Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4);
            UnityTexture2D _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_DetailMap);
            float4 _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4 = _DetailTilingOffset;
            float _Split_9fa8573190399e8da2a843a4cab68164_R_1_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[0];
            float _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[1];
            float _Split_9fa8573190399e8da2a843a4cab68164_B_3_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[2];
            float _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[3];
            float2 _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_R_1_Float, _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float);
            float2 _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_B_3_Float, _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float);
            float2 _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2;
            Unity_TilingAndOffset_float(IN.uv0.xy, _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2, _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2, _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2);
            float4 _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.tex, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.samplerstate, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.GetTransformedUV(_TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2) );
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_R_4_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.r;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.g;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.b;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.a;
            float _Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_R_4_Float, 2, _Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float);
            float _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float;
            Unity_Add_float(_Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float, -1, _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float);
            float _Property_7d68da97cd169d8e8649255aec16158a_Out_0_Float = _DetailAlbedoScale;
            float _Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float;
            Unity_Multiply_float_float(_Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float, _Property_7d68da97cd169d8e8649255aec16158a_Out_0_Float, _Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float);
            float _Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float;
            Unity_Saturate_float(_Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float, _Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float);
            float _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float;
            Unity_Absolute_float(_Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float, _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float);
            Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83;
            float3 _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3;
            SG_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float(_Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4, _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float, _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float, _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83, _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3);
            UnityTexture2D _Property_5ca167b35599f78ab3722ec527327841_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverBaseColorMap);
            float4 _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4 = _CoverTilingOffset;
            float _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean = _CoverUsePlanarUV;
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_ad1db3524021ac898447cb6f6daa4180;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.uv0 = IN.uv0;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.uv2 = IN.uv2;
            float4 _PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_5ca167b35599f78ab3722ec527327841_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_ad1db3524021ac898447cb6f6daa4180, _PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4);
            float4 _Property_b34e94e0b1171480b3e35ff7f4793d7c_Out_0_Vector4 = _CoverBaseColor;
            float4 _Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4, _Property_b34e94e0b1171480b3e35ff7f4793d7c_Out_0_Vector4, _Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4);
            float _Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean = _USEDYNAMICCOVERTSTATICMASKF;
            UnityTexture2D _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskA);
            float4 _UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4 = IN.uv0;
            float4 _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.tex, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.samplerstate, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.GetTransformedUV((_UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4.xy)) );
            float _SampleTexture2D_79111e5af287b084822e60563309a632_R_4_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.r;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_G_5_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.g;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_B_6_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.b;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.a;
            float _Property_c022d8255938838aa73170f05c226269_Out_0_Float = _CoverMaskPower;
            float _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float, _Property_c022d8255938838aa73170f05c226269_Out_0_Float, _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float);
            float _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float;
            Unity_Clamp_float(_Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float, 0, 1, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float);
            float2 _Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2 = float2(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float, _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float);
            float2 _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2, float2(2, 2), _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2);
            float2 _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2;
            Unity_Add_float2(_Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2, float2(-1, -1), _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2);
            float _Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float = _DetailNormalScale;
            float2 _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2, (_Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float.xx), _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2);
            float _Split_492de324af96c482b50573c79f9fb6a0_R_1_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[0];
            float _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[1];
            float _Split_492de324af96c482b50573c79f9fb6a0_B_3_Float = 0;
            float _Split_492de324af96c482b50573c79f9fb6a0_A_4_Float = 0;
            float _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float;
            Unity_DotProduct_float2(_Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float);
            float _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float;
            Unity_Saturate_float(_DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float, _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float);
            float _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float;
            Unity_OneMinus_float(_Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float, _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float);
            float _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float;
            Unity_SquareRoot_float(_OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            float3 _Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3 = float3(_Split_492de324af96c482b50573c79f9fb6a0_R_1_Float, _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            UnityTexture2D _Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseNormalMap);
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv0 = IN.uv0;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv2 = IN.uv2;
            float4 _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4);
            float _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float = _BaseNormalScale;
            float3 _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4.xyz), _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3);
            float3 _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3;
            Unity_NormalBlend_float(_Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3, _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3);
            UnityTexture2D _Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverNormalMap);
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv0 = IN.uv0;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv2 = IN.uv2;
            float4 _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4);
            float _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float = _CoverNormalBlendHardness;
            float3 _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3);
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_R_1_Float = IN.WorldSpaceNormal[0];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float = IN.WorldSpaceNormal[1];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_B_3_Float = IN.WorldSpaceNormal[2];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_A_4_Float = 0;
            float _Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float = _Cover_Amount;
            float _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float = _Cover_Amount_Grow_Speed;
            float _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float;
            Unity_Subtract_float(4, _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float);
            float _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float;
            Unity_Divide_float(_Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float);
            float _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float;
            Unity_Absolute_float(_Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float, _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float);
            float _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float;
            Unity_Power_float(_Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float);
            float _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float;
            Unity_Clamp_float(_Power_c11fc5724f830485a9c4df249a854571_Out_2_Float, 0, 2, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float);
            float _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float;
            Unity_Multiply_float_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float);
            float _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float;
            Unity_Saturate_float(_Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float, _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float);
            float _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float;
            Unity_Clamp_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, 0, 0.9999, _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float);
            float _Property_89633a46f34e1f8996557a9178d78478_Out_0_Float = _Cover_Max_Angle;
            float _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float;
            Unity_Divide_float(_Property_89633a46f34e1f8996557a9178d78478_Out_0_Float, 45, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float);
            float _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float;
            Unity_OneMinus_float(_Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float);
            float _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float;
            Unity_Subtract_float(_Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float, _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float);
            float _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float;
            Unity_Clamp_float(_Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float, 0, 2, _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
            float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
            Unity_Divide_float(1, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float);
            float _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_67dcc607b6da848097d3412324311616_Out_3_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float, _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float);
            float _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float;
            Unity_Absolute_float(_Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float, _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float);
            float _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float = _CoverHardness;
            float _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float;
            Unity_Power_float(_Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float);
            float _Property_f8753bb05d835089bda460d144f93c48_Out_0_Float = _Cover_Min_Height;
            float _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float;
            Unity_OneMinus_float(_Property_f8753bb05d835089bda460d144f93c48_Out_0_Float, _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float);
            float _Split_c66e04f85a2a7f87884040056599e65d_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
            float _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
            float _Split_c66e04f85a2a7f87884040056599e65d_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
            float _Split_c66e04f85a2a7f87884040056599e65d_A_4_Float = 0;
            float _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float;
            Unity_Add_float(_OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float, _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float);
            float _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, 1, _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
            float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
            Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, 0, 1, _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float);
            float _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float = _Cover_Min_Height_Blending;
            float _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float, _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float);
            float _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float;
            Unity_Divide_float(_Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float);
            float _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float;
            Unity_OneMinus_float(_Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float, _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float);
            float _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float;
            Unity_Add_float(_OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float, -0.5, _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
            float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
            Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, 0, 1, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float);
            float _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float;
            Unity_Add_float(_Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float, _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float);
            float _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float;
            Unity_Clamp_float(_Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float, 0, 1, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float);
            float _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float;
            Unity_Multiply_float_float(_Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float);
            float _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float;
            Unity_Multiply_float_float(_Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float);
            float3 _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3, (_Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float.xxx), _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3);
            float3 _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3;
            {
                float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
                _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3 = TransformTangentToWorldDir(_Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3.xyz, tangentTransform, false).xyz;
            }
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_R_1_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[0];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[1];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_B_3_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[2];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_A_4_Float = 0;
            float _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float;
            Unity_Multiply_float_float(_Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float);
            float _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float);
            float _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float);
            float _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float, _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float);
            UnityTexture2D _Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_36e64648ad8a6a849bc794b8693519da;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv0 = IN.uv0;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv2 = IN.uv2;
            float4 _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_36e64648ad8a6a849bc794b8693519da, _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4);
            float _Split_198ec92f3e753d8a9ad50db7d6527324_R_1_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[0];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[1];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[2];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[3];
            float _Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float = _CoverHeightMapMin;
            float _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float = _CoverHeightMapMax;
            float2 _Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2 = float2(_Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float, _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float);
            float _Property_277f22c36084858981418fa95133a562_Out_0_Float = _CoverHeightMapOffset;
            float2 _Add_53997153562831859cc7b582f3068877_Out_2_Vector2;
            Unity_Add_float2(_Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2, (_Property_277f22c36084858981418fa95133a562_Out_0_Float.xx), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2);
            float _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float, float2 (0, 1), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float);
            float _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float, _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float);
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float = IN.VertexColor[0];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float = IN.VertexColor[1];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_B_3_Float = IN.VertexColor[2];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_A_4_Float = IN.VertexColor[3];
            float _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float, _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float, _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float);
            float _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float;
            Unity_Saturate_float(_Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float);
            float _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float);
            float _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float;
            Unity_Branch_float(_Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float);
            float3 _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3;
            Unity_Lerp_float3(_BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3, (_Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4.xyz), (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxx), _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3);
            float4 _Property_e687576468764d85b6b46dca96d8a8e3_Out_0_Vector4 = _WetColor;
            float3 _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3;
            Unity_Multiply_float3_float3((_Property_e687576468764d85b6b46dca96d8a8e3_Out_0_Vector4.xyz), _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3, _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3);
            float _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float;
            Unity_OneMinus_float(_Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float);
            float3 _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
            Unity_Lerp_float3(_Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3, _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3, (_OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float.xxx), _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3);
            UnityTexture2D _Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv0 = IN.uv0;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv2 = IN.uv2;
            float4 _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4);
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_R_1_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[0];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[1];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_B_3_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[2];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[3];
            float _Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float = _BaseAORemapMin;
            float _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float = _BaseAORemapMax;
            float2 _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2 = float2(_Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float, _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float);
            float _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float, float2 (0, 1), _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2, _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float);
            float _Property_e353baf414594b8882fb914562e81165_Out_0_Float = _BaseSmoothnessRemapMin;
            float _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float = _BaseSmoothnessRemapMax;
            float2 _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2 = float2(_Property_e353baf414594b8882fb914562e81165_Out_0_Float, _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float);
            float _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float, float2 (0, 1), _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2, _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float);
            float _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float, 2, _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float);
            float _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float;
            Unity_Add_float(_Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float, -1, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float);
            float _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float = _DetailSmoothnessScale;
            float _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float;
            Unity_Multiply_float_float(_Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float, _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float);
            float _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float;
            Unity_Saturate_float(_Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float, _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float);
            float _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float;
            Unity_Absolute_float(_Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float);
            Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da;
            float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float;
            SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(_Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float);
            float _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float;
            Unity_Saturate_float(_BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float2 _Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2 = float2(_Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float _Property_5e08cfb127183a8993376f9087501eee_Out_0_Float = _CoverAORemapMin;
            float _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float = _CoverAORemapMax;
            float2 _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2 = float2(_Property_5e08cfb127183a8993376f9087501eee_Out_0_Float, _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float);
            float _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float, float2 (0, 1), _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2, _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float);
            float _Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float = _CoverSmoothnessRemapMin;
            float _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float = _CoverSmoothnessRemapMax;
            float2 _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2 = float2(_Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float, _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float);
            float _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float, float2 (0, 1), _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2 = float2(_Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2;
            Unity_Lerp_float2(_Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2, _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xx), _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2);
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_R_1_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[0];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[1];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_B_3_Float = 0;
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_A_4_Float = 0;
            float _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float = _WetSmoothness;
            float _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            Unity_Lerp_float(_Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float, _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float, _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float);
            float _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float = _CoverNormalScale;
            float3 _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3);
            float3 _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxx), _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3);
            UnityTexture2D _Property_f617479b11216b84b89956263f8d3c08_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_SpecularColorMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.uv0 = IN.uv0;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.uv2 = IN.uv2;
            float4 _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_f617479b11216b84b89956263f8d3c08_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d, _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4);
            float4 _Property_112303b9c27a1284b20f0a5c49fb436a_Out_0_Vector4 = _SpecularColor;
            float4 _Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4, _Property_112303b9c27a1284b20f0a5c49fb436a_Out_0_Vector4, _Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4);
            UnityTexture2D _Property_0c768f7d1094a8878d837f25970dbd49_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverSpecularColorMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_4b88db16993b7d84a6c9e021b5992a38;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.uv0 = IN.uv0;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.uv2 = IN.uv2;
            float4 _PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_0c768f7d1094a8878d837f25970dbd49_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_4b88db16993b7d84a6c9e021b5992a38, _PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4);
            float4 _Property_51d3c44a7110108d9e8c9a3acf54125f_Out_0_Vector4 = _CoverSpecularColor;
            float4 _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4, _Property_51d3c44a7110108d9e8c9a3acf54125f_Out_0_Vector4, _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4);
            float4 _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4;
            Unity_Lerp_float4(_Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4, _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxxx), _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4);
            surface.BaseColor = _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
            surface.Emission = float3(0, 0, 0);
            surface.Alpha = 1;
            surface.BentNormal = IN.TangentSpaceNormal;
            surface.Smoothness = _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            surface.Occlusion = _Split_beb57fcf05cbb6809f536625bac5fcbc_R_1_Float;
            surface.NormalTS = _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            surface.Specular = (_Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4.xyz);
            return surface;
        }
        
            // --------------------------------------------------
            // Build Graph Inputs
            #ifdef HAVE_VFX_MODIFICATION
            #define VFX_SRP_ATTRIBUTES AttributesMesh
            #define VaryingsMeshType VaryingsMeshToPS
            #define VFX_SRP_VARYINGS VaryingsMeshType
            #define VFX_SRP_SURFACE_INPUTS FragInputs
            #endif
            SurfaceDescriptionInputs FragInputsToSurfaceDescriptionInputs(FragInputs input, float3 viewWS)
        {
            SurfaceDescriptionInputs output;
            ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
        
            output.WorldSpaceNormal =                           normalize(input.tangentToWorld[2].xyz);
            #if defined(SHADER_STAGE_RAY_TRACING)
            #else
            #endif
            output.TangentSpaceNormal =                         float3(0.0f, 0.0f, 1.0f);
            output.WorldSpaceTangent =                          input.tangentToWorld[0].xyz;
            output.WorldSpaceBiTangent =                        input.tangentToWorld[1].xyz;
            output.AbsoluteWorldSpacePosition =                 GetAbsolutePositionWS(input.positionRWS);
        
        #if UNITY_UV_STARTS_AT_TOP
        #else
        #endif
        
        
            output.uv0 =                                        input.texCoord0;
            output.uv2 =                                        input.texCoord2;
            output.VertexColor =                                input.color;
        
            // splice point to copy frag inputs custom interpolator pack into the SDI
            /* WARNING: $splice Could not find named fragment 'CustomInterpolatorCopyToSDI' */
        
            return output;
        }
        
            // --------------------------------------------------
            // Build Surface Data (Specific Material)
        
        void ApplyDecalToSurfaceDataNoNormal(DecalSurfaceData decalSurfaceData, inout SurfaceData surfaceData);
        
        void ApplyDecalAndGetNormal(FragInputs fragInputs, PositionInputs posInput, SurfaceDescription surfaceDescription,
            inout SurfaceData surfaceData)
        {
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
        #ifdef DECAL_NORMAL_BLENDING
            // SG nodes don't ouptut surface gradients, so if decals require surf grad blending, we have to convert
            // the normal to gradient before applying the decal. We then have to resolve the gradient back to world space
            float3 normalTS;
        
            normalTS = SurfaceGradientFromTangentSpaceNormalAndFromTBN(surfaceDescription.NormalTS,
            fragInputs.tangentToWorld[0], fragInputs.tangentToWorld[1]);
        
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, fragInputs.tangentToWorld[2], normalTS);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        
            GetNormalWS_SG(fragInputs, normalTS, surfaceData.normalWS, doubleSidedConstants);
        #else
            // normal delivered to master node
            GetNormalWS(fragInputs, surfaceDescription.NormalTS, surfaceData.normalWS, doubleSidedConstants);
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                // Both uses and modifies 'surfaceData.normalWS'.
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, surfaceData.normalWS.xyz);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        #endif
        }
        void BuildSurfaceData(FragInputs fragInputs, inout SurfaceDescription surfaceDescription, float3 V, PositionInputs posInput, out SurfaceData surfaceData, out float3 bentNormalWS)
        {
            ZERO_INITIALIZE(SurfaceData, surfaceData);
        
            // specularOcclusion need to be init ahead of decal to quiet the compiler that modify the SurfaceData struct
            // however specularOcclusion can come from the graph, so need to be init here so it can be override.
            surfaceData.specularOcclusion = 1.0;
        
            surfaceData.baseColor =                 surfaceDescription.BaseColor;
            surfaceData.perceptualSmoothness =      surfaceDescription.Smoothness;
            surfaceData.ambientOcclusion =          surfaceDescription.Occlusion;
            surfaceData.specularColor =             surfaceDescription.Specular;
        
            #if defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE) || defined(_REFRACTION_THIN)
                if (_EnableSSRefraction)
                {
        
                    surfaceData.transmittanceMask = (1.0 - surfaceDescription.Alpha);
                    surfaceDescription.Alpha = 1.0;
                }
                else
                {
                    surfaceData.ior = 1.0;
                    surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                    surfaceData.atDistance = 1.0;
                    surfaceData.transmittanceMask = 0.0;
                    surfaceDescription.Alpha = 1.0;
                }
            #else
                surfaceData.ior = 1.0;
                surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                surfaceData.atDistance = 1.0;
                surfaceData.transmittanceMask = 0.0;
            #endif
        
            // These static material feature allow compile time optimization
            surfaceData.materialFeatures = MATERIALFEATUREFLAGS_LIT_STANDARD;
            #ifdef _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SUBSURFACE_SCATTERING;
            #endif
        
            #ifdef _MATERIAL_FEATURE_TRANSMISSION
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
            #endif
        
            #ifdef _MATERIAL_FEATURE_ANISOTROPY
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_ANISOTROPY;
        
                // Initialize the normal to something non-zero to avoid a div-zero warning for anisotropy.
                surfaceData.normalWS = float3(0, 1, 0);
            #endif
        
            #ifdef _MATERIAL_FEATURE_IRIDESCENCE
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_IRIDESCENCE;
            #endif
        
            #ifdef _MATERIAL_FEATURE_SPECULAR_COLOR
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SPECULAR_COLOR;
            #endif
        
            #ifdef _MATERIAL_FEATURE_CLEAR_COAT
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_CLEAR_COAT;
            #endif
        
            #if defined (_MATERIAL_FEATURE_SPECULAR_COLOR) && defined (_ENERGY_CONSERVING_SPECULAR)
                // Require to have setup baseColor
                // Reproduce the energy conservation done in legacy Unity. Not ideal but better for compatibility and users can unchek it
                surfaceData.baseColor *= (1.0 - Max3(surfaceData.specularColor.r, surfaceData.specularColor.g, surfaceData.specularColor.b));
            #endif
        
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
            ApplyDecalAndGetNormal(fragInputs, posInput, surfaceDescription, surfaceData);
        
            surfaceData.geomNormalWS = fragInputs.tangentToWorld[2];
        
            surfaceData.tangentWS = normalize(fragInputs.tangentToWorld[0].xyz);    // The tangent is not normalize in tangentToWorld for mikkt. TODO: Check if it expected that we normalize with Morten. Tag: SURFACE_GRADIENT
        
        
            bentNormalWS = surfaceData.normalWS;
        
            surfaceData.tangentWS = Orthonormalize(surfaceData.tangentWS, surfaceData.normalWS);
        
            #ifdef DEBUG_DISPLAY
                if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
                {
                    // TODO: need to update mip info
                    surfaceData.metallic = 0;
                }
        
                // We need to call ApplyDebugToSurfaceData after filling the surfarcedata and before filling builtinData
                // as it can modify attribute use for static lighting
                ApplyDebugToSurfaceData(fragInputs.tangentToWorld, surfaceData);
            #endif
        
            // By default we use the ambient occlusion with Tri-ace trick (apply outside) for specular occlusion.
            // If user provide bent normal then we process a better term
            #if defined(_SPECULAR_OCCLUSION_CUSTOM)
                // Just use the value passed through via the slot (not active otherwise)
            #elif defined(_SPECULAR_OCCLUSION_FROM_AO_BENT_NORMAL)
                // If we have bent normal and ambient occlusion, process a specular occlusion
                surfaceData.specularOcclusion = GetSpecularOcclusionFromBentAO(V, bentNormalWS, surfaceData.normalWS, surfaceData.ambientOcclusion, PerceptualSmoothnessToPerceptualRoughness(surfaceData.perceptualSmoothness));
            #elif defined(_AMBIENT_OCCLUSION) && defined(_SPECULAR_OCCLUSION_FROM_AO)
                surfaceData.specularOcclusion = GetSpecularOcclusionFromAmbientOcclusion(ClampNdotV(dot(surfaceData.normalWS, V)), surfaceData.ambientOcclusion, PerceptualSmoothnessToRoughness(surfaceData.perceptualSmoothness));
            #endif
        
            #if defined(_ENABLE_GEOMETRIC_SPECULAR_AA) && !defined(SHADER_STAGE_RAY_TRACING)
                surfaceData.perceptualSmoothness = GeometricNormalFiltering(surfaceData.perceptualSmoothness, fragInputs.tangentToWorld[2], surfaceDescription.SpecularAAScreenSpaceVariance, surfaceDescription.SpecularAAThreshold);
            #endif
        }
        
            // --------------------------------------------------
            // Get Surface And BuiltinData
        
            void GetSurfaceAndBuiltinData(FragInputs fragInputs, float3 V, inout PositionInputs posInput, out SurfaceData surfaceData, out BuiltinData builtinData RAY_TRACING_OPTIONAL_PARAMETERS)
            {
                // Don't dither if displaced tessellation (we're fading out the displacement instead to match the next LOD)
                #if !defined(SHADER_STAGE_RAY_TRACING) && !defined(_TESSELLATION_DISPLACEMENT)
                #ifdef LOD_FADE_CROSSFADE // enable dithering LOD transition if user select CrossFade transition in LOD group
                LODDitheringTransition(ComputeFadeMaskSeed(V, posInput.positionSS), unity_LODFade.x);
                #endif
                #endif
        
                #ifndef SHADER_UNLIT
                #ifdef _DOUBLESIDED_ON
                    float3 doubleSidedConstants = _DoubleSidedConstants.xyz;
                #else
                    float3 doubleSidedConstants = float3(1.0, 1.0, 1.0);
                #endif
        
                ApplyDoubleSidedFlipOrMirror(fragInputs, doubleSidedConstants); // Apply double sided flip on the vertex normal
                #endif // SHADER_UNLIT
        
                SurfaceDescriptionInputs surfaceDescriptionInputs = FragInputsToSurfaceDescriptionInputs(fragInputs, V);
        
                #if defined(HAVE_VFX_MODIFICATION)
                GraphProperties properties;
                ZERO_INITIALIZE(GraphProperties, properties);
        
                GetElementPixelProperties(fragInputs, properties);
        
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs, properties);
                #else
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs);
                #endif
        
                // Perform alpha test very early to save performance (a killed pixel will not sample textures)
                // TODO: split graph evaluation to grab just alpha dependencies first? tricky..
                #ifdef _ALPHATEST_ON
                    float alphaCutoff = surfaceDescription.AlphaClipThreshold;
                    #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
                    // The TransparentDepthPrepass is also used with SSR transparent.
                    // If an artists enable transaprent SSR but not the TransparentDepthPrepass itself, then we use AlphaClipThreshold
                    // otherwise if TransparentDepthPrepass is enabled we use AlphaClipThresholdDepthPrepass
                    #elif SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_POSTPASS
                    // DepthPostpass always use its own alpha threshold
                    alphaCutoff = surfaceDescription.AlphaClipThresholdDepthPostpass;
                    #elif (SHADERPASS == SHADERPASS_SHADOWS) || (SHADERPASS == SHADERPASS_RAYTRACING_VISIBILITY)
                    // If use shadow threshold isn't enable we don't allow any test
                    #endif
        
                    GENERIC_ALPHA_TEST(surfaceDescription.Alpha, alphaCutoff);
                #endif
        
                #if !defined(SHADER_STAGE_RAY_TRACING) && _DEPTHOFFSET_ON
                ApplyDepthOffsetPositionInput(V, surfaceDescription.DepthOffset, GetViewForwardDir(), GetWorldToHClipMatrix(), posInput);
                #endif
        
                #ifndef SHADER_UNLIT
                float3 bentNormalWS;
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData, bentNormalWS);
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD1
                    float4 lightmapTexCoord1 = fragInputs.texCoord1;
                #else
                    float4 lightmapTexCoord1 = float4(0,0,0,0);
                #endif
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD2
                    float4 lightmapTexCoord2 = fragInputs.texCoord2;
                #else
                    float4 lightmapTexCoord2 = float4(0,0,0,0);
                #endif
        
                // Builtin Data
                // For back lighting we use the oposite vertex normal
                InitBuiltinData(posInput, surfaceDescription.Alpha, bentNormalWS, -fragInputs.tangentToWorld[2], lightmapTexCoord1, lightmapTexCoord2, builtinData);
        
                #else
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData);
        
                ZERO_BUILTIN_INITIALIZE(builtinData); // No call to InitBuiltinData as we don't have any lighting
                builtinData.opacity = surfaceDescription.Alpha;
        
                #if defined(DEBUG_DISPLAY)
                    // Light Layers are currently not used for the Unlit shader (because it is not lit)
                    // But Unlit objects do cast shadows according to their rendering layer mask, which is what we want to
                    // display in the light layers visualization mode, therefore we need the renderingLayers
                    builtinData.renderingLayers = GetMeshRenderingLightLayer();
                #endif
        
                #endif // SHADER_UNLIT
        
                #ifdef _ALPHATEST_ON
                    // Used for sharpening by alpha to mask - Alpha to covertage is only used with depth only and forward pass (no shadow pass, no transparent pass)
                    builtinData.alphaClipTreshold = alphaCutoff;
                #endif
        
                // override sampleBakedGI - not used by Unlit
        
                builtinData.emissiveColor = surfaceDescription.Emission;
        
                // Note this will not fully work on transparent surfaces (can check with _SURFACE_TYPE_TRANSPARENT define)
                // We will always overwrite vt feeback with the nearest. So behind transparent surfaces vt will not be resolved
                // This is a limitation of the current MRT approach.
                #ifdef UNITY_VIRTUAL_TEXTURING
                #endif
        
                #if _DEPTHOFFSET_ON
                builtinData.depthOffset = surfaceDescription.DepthOffset;
                #endif
        
                // TODO: We should generate distortion / distortionBlur for non distortion pass
                #if (SHADERPASS == SHADERPASS_DISTORTION)
                builtinData.distortion = surfaceDescription.Distortion;
                builtinData.distortionBlur = surfaceDescription.DistortionBlur;
                #endif
        
                #ifndef SHADER_UNLIT
                // PostInitBuiltinData call ApplyDebugToBuiltinData
                PostInitBuiltinData(V, posInput, surfaceData, builtinData);
                #else
                ApplyDebugToBuiltinData(builtinData);
                #endif
        
                RAY_TRACING_OPTIONAL_ALPHA_TEST_PASS
            }
        
            // --------------------------------------------------
            // Main
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassRaytracingVisibility.hlsl"
        
            // --------------------------------------------------
            // Visual Effect Vertex Invocations
        
        	#ifdef HAVE_VFX_MODIFICATION
        	#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
        	#endif
        
            ENDHLSL
        }
        Pass
        {
            Name "ForwardDXR"
            Tags
            {
                "LightMode" = "ForwardDXR"
            }
        
            // Render State
            // RenderState: <None>
        
            // Debug
            // <None>
        
            // --------------------------------------------------
            // Pass
        
            HLSLPROGRAM
        
            // Pragmas
            #pragma target 5.0
        #pragma raytracing surface_shader
        #pragma only_renderers d3d11 xboxseries ps5
        
            // Keywords
            #pragma shader_feature _ _SURFACE_TYPE_TRANSPARENT
        #pragma shader_feature_local _ _DOUBLESIDED_ON
        #pragma shader_feature_local _ _ADD_PRECOMPUTED_VELOCITY
        #pragma shader_feature_local _ _TRANSPARENT_WRITES_MOTION_VEC
        #pragma shader_feature_local_fragment _ _ENABLE_FOG_ON_TRANSPARENT
        #pragma multi_compile _ DEBUG_DISPLAY
        #pragma shader_feature_local_fragment _ _DISABLE_DECALS
        #pragma shader_feature_local_raytracing _ _DISABLE_DECALS
        #pragma shader_feature_local_fragment _ _DISABLE_SSR
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR
        #pragma shader_feature_local_fragment _ _DISABLE_SSR_TRANSPARENT
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR_TRANSPARENT
        #pragma multi_compile _ LIGHTMAP_ON
        #pragma multi_compile _ DIRLIGHTMAP_COMBINED
        #pragma multi_compile_fragment PROBE_VOLUMES_OFF PROBE_VOLUMES_L1 PROBE_VOLUMES_L2
        #pragma multi_compile_raytracing PROBE_VOLUMES_OFF PROBE_VOLUMES_L1 PROBE_VOLUMES_L2
        #pragma multi_compile _ DYNAMICLIGHTMAP_ON
        #pragma shader_feature_local _ _REFRACTION_PLANE _REFRACTION_SPHERE _REFRACTION_THIN
            // GraphKeywords: <None>
        
            // For custom interpolators to inject a substruct definition before FragInputs definition,
            // allowing for FragInputs to capture CI's intended for ShaderGraph's SDI.
            /* WARNING: $splice Could not find named fragment 'CustomInterpolatorPreInclude' */
        
        
            // TODO: Merge FragInputsVFX substruct with CustomInterpolators.
        	#ifdef HAVE_VFX_MODIFICATION
        	struct FragInputsVFX
            {
                /* WARNING: $splice Could not find named fragment 'FragInputsVFX' */
            };
            #endif
        
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/GeometricTools.hlsl" // Required by Tessellation.hlsl
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Tessellation.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl" // Required to be include before we include properties as it define DECLARE_STACK_CB
            // Always include Shader Graph version
            // Always include last to avoid double macros
            #include "Packages/com.unity.shadergraph/ShaderGraphLibrary/Functions.hlsl" // Need to be here for Gradient struct definition
        
            // --------------------------------------------------
            // Defines
        
            // Attribute
            #define ATTRIBUTES_NEED_NORMAL
            #define ATTRIBUTES_NEED_TANGENT
            #define ATTRIBUTES_NEED_TEXCOORD0
            #define ATTRIBUTES_NEED_TEXCOORD1
            #define ATTRIBUTES_NEED_TEXCOORD2
            #define ATTRIBUTES_NEED_COLOR
            #define VARYINGS_NEED_POSITION_WS
            #define VARYINGS_NEED_TANGENT_TO_WORLD
            #define VARYINGS_NEED_TEXCOORD0
            #define VARYINGS_NEED_TEXCOORD1
            #define VARYINGS_NEED_TEXCOORD2
            #define VARYINGS_NEED_COLOR
        
        
            //Strip down the FragInputs.hlsl (on graphics), so we can only optimize the interpolators we use.
            //if by accident something requests contents of FragInputs.hlsl, it will be caught as a compiler error
            //Frag inputs stripping is only enabled when FRAG_INPUTS_ENABLE_STRIPPING is set
            #if !defined(SHADER_STAGE_RAY_TRACING) && SHADERPASS != SHADERPASS_RAYTRACING_GBUFFER && SHADERPASS != SHADERPASS_FULL_SCREEN_DEBUG
            #define FRAG_INPUTS_ENABLE_STRIPPING
            #endif
            #define FRAG_INPUTS_USE_TEXCOORD0
            #define FRAG_INPUTS_USE_TEXCOORD1
            #define FRAG_INPUTS_USE_TEXCOORD2
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/FragInputs.hlsl"
        
        
        
            #define SHADERPASS SHADERPASS_RAYTRACING_FORWARD
        #define SHADOW_LOW
        #define RAYTRACING_SHADER_GRAPH_RAYTRACED
        #define HAS_LIGHTLOOP 1
        
        
            // Following two define are a workaround introduce in 10.1.x for RaytracingQualityNode
            // The ShaderGraph don't support correctly migration of this node as it serialize all the node data
            // in the json file making it impossible to uprgrade. Until we get a fix, we do a workaround here
            // to still allow us to rename the field and keyword of this node without breaking existing code.
            #ifdef RAYTRACING_SHADER_GRAPH_DEFAULT
            #define RAYTRACING_SHADER_GRAPH_HIGH
            #endif
        
            #ifdef RAYTRACING_SHADER_GRAPH_RAYTRACED
            #define RAYTRACING_SHADER_GRAPH_LOW
            #endif
            // end
        
            #ifndef SHADER_UNLIT
            // We need isFrontFace when using double sided - it is not required for unlit as in case of unlit double sided only drive the cullmode
            // VARYINGS_NEED_CULLFACE can be define by VaryingsMeshToPS.FaceSign input if a IsFrontFace Node is included in the shader graph.
            #if defined(_DOUBLESIDED_ON) && !defined(VARYINGS_NEED_CULLFACE)
                #define VARYINGS_NEED_CULLFACE
            #endif
            #endif
        
            // Specific Material Define
        #define _MATERIAL_FEATURE_SPECULAR_COLOR 1
        #define _AMBIENT_OCCLUSION 1
        #define _SPECULAR_OCCLUSION_FROM_AO 1
        #define _ENERGY_CONSERVING_SPECULAR 1
        
        // If we use subsurface scattering, enable output split lighting (for forward pass)
        #if defined(_MATERIAL_FEATURE_SUBSURFACE_SCATTERING) && !defined(_SURFACE_TYPE_TRANSPARENT)
            #define OUTPUT_SPLIT_LIGHTING
        #endif
        
        // This shader support recursive rendering for raytracing
        #define HAVE_RECURSIVE_RENDERING
        
        // In Path Tracing, For all single-sided, refractive materials, we want to force a thin refraction model
        #if (SHADERPASS == SHADERPASS_PATH_TRACING) && !defined(_DOUBLESIDED_ON) && (defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE))
            #undef  _REFRACTION_PLANE
            #undef  _REFRACTION_SPHERE
            #define _REFRACTION_THIN
        #endif
            // Caution: we can use the define SHADER_UNLIT onlit after the above Material include as it is the Unlit template who define it
        
            // To handle SSR on transparent correctly with a possibility to enable/disable it per framesettings
            // we should have a code like this:
            // if !defined(_DISABLE_SSR_TRANSPARENT)
            // pragma multi_compile _ WRITE_NORMAL_BUFFER
            // endif
            // i.e we enable the multicompile only if we can receive SSR or not, and then C# code drive
            // it based on if SSR transparent in frame settings and not (and stripper can strip it).
            // this is currently not possible with our current preprocessor as _DISABLE_SSR_TRANSPARENT is a keyword not a define
            // so instead we used this and chose to pay the extra cost of normal write even if SSR transaprent is disabled.
            // Ideally the shader graph generator should handle it but condition below can't be handle correctly for now.
            #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
            #if !defined(_DISABLE_SSR_TRANSPARENT) && !defined(SHADER_UNLIT)
                #define WRITE_NORMAL_BUFFER
            #endif
            #endif
        
            #ifndef DEBUG_DISPLAY
                // In case of opaque we don't want to perform the alpha test, it is done in depth prepass and we use depth equal for ztest (setup from UI)
                // Don't do it with debug display mode as it is possible there is no depth prepass in this case
                #if !defined(_SURFACE_TYPE_TRANSPARENT)
                    #if SHADERPASS == SHADERPASS_FORWARD
                    #define SHADERPASS_FORWARD_BYPASS_ALPHA_TEST
                    #elif SHADERPASS == SHADERPASS_GBUFFER
                    #define SHADERPASS_GBUFFER_BYPASS_ALPHA_TEST
                    #endif
                #endif
            #endif
        
            // Define _DEFERRED_CAPABLE_MATERIAL for shader capable to run in deferred pass
            #if defined(SHADER_LIT) && !defined(_SURFACE_TYPE_TRANSPARENT)
                #define _DEFERRED_CAPABLE_MATERIAL
            #endif
        
            // Translate transparent motion vector define
            #if defined(_TRANSPARENT_WRITES_MOTION_VEC) && defined(_SURFACE_TYPE_TRANSPARENT)
                #define _WRITE_TRANSPARENT_MOTION_VECTOR
            #endif
        
            // -- Graph Properties
            CBUFFER_START(UnityPerMaterial)
        float4 _BaseColor;
        float4 _BaseColorMap_TexelSize;
        float _BaseUsePlanarUV;
        float4 _BaseTilingOffset;
        float4 _SpecularColor;
        float4 _SpecularColorMap_TexelSize;
        float4 _BaseNormalMap_TexelSize;
        float _BaseNormalScale;
        float4 _BaseMaskMap_TexelSize;
        float _BaseAORemapMin;
        float _BaseAORemapMax;
        float _BaseSmoothnessRemapMin;
        float _BaseSmoothnessRemapMax;
        float _USEDYNAMICCOVERTSTATICMASKF;
        float4 _CoverMaskA_TexelSize;
        float _CoverMaskPower;
        float _Cover_Amount;
        float _Cover_Amount_Grow_Speed;
        float _Cover_Max_Angle;
        float _Cover_Min_Height;
        float _Cover_Min_Height_Blending;
        float4 _CoverBaseColor;
        float4 _CoverBaseColorMap_TexelSize;
        float _CoverUsePlanarUV;
        float4 _CoverTilingOffset;
        float4 _CoverSpecularColor;
        float4 _CoverSpecularColorMap_TexelSize;
        float4 _CoverNormalMap_TexelSize;
        float _CoverNormalScale;
        float _CoverNormalBlendHardness;
        float _CoverHardness;
        float _CoverHeightMapMin;
        float _CoverHeightMapMax;
        float _CoverHeightMapOffset;
        float4 _CoverMaskMap_TexelSize;
        float _CoverAORemapMin;
        float _CoverAORemapMax;
        float _CoverSmoothnessRemapMin;
        float _CoverSmoothnessRemapMax;
        float4 _DetailMap_TexelSize;
        float4 _DetailTilingOffset;
        float _DetailAlbedoScale;
        float _DetailNormalScale;
        float _DetailSmoothnessScale;
        float4 _WetColor;
        float _WetSmoothness;
        float4 _EmissionColor;
        float _UseShadowThreshold;
        float4 _DoubleSidedConstants;
        float _BlendMode;
        float _EnableBlendModePreserveSpecularLighting;
        float _RayTracing;
        float _RefractionModel;
        CBUFFER_END
        
        
        // Object and Global properties
        SAMPLER(SamplerState_Linear_Repeat);
        SAMPLER(SamplerState_Linear_Repeat_Aniso8);
        TEXTURE2D(_BaseColorMap);
        SAMPLER(sampler_BaseColorMap);
        TEXTURE2D(_SpecularColorMap);
        SAMPLER(sampler_SpecularColorMap);
        TEXTURE2D(_BaseNormalMap);
        SAMPLER(sampler_BaseNormalMap);
        TEXTURE2D(_BaseMaskMap);
        SAMPLER(sampler_BaseMaskMap);
        TEXTURE2D(_CoverMaskA);
        SAMPLER(sampler_CoverMaskA);
        TEXTURE2D(_CoverBaseColorMap);
        SAMPLER(sampler_CoverBaseColorMap);
        TEXTURE2D(_CoverSpecularColorMap);
        SAMPLER(sampler_CoverSpecularColorMap);
        TEXTURE2D(_CoverNormalMap);
        SAMPLER(sampler_CoverNormalMap);
        TEXTURE2D(_CoverMaskMap);
        SAMPLER(sampler_CoverMaskMap);
        TEXTURE2D(_DetailMap);
        SAMPLER(sampler_DetailMap);
        
            // -- Property used by ScenePickingPass
            #ifdef SCENEPICKINGPASS
            float4 _SelectionID;
            #endif
        
            // -- Properties used by SceneSelectionPass
            #ifdef SCENESELECTIONPASS
            int _ObjectId;
            int _PassValue;
            #endif
        
            // Includes
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingMacros.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/ShaderVariablesRaytracing.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/ShaderVariablesRaytracingLightLoop.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingIntersection.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Lighting.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitRaytracing.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/BuiltinUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingLightLoop.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RayTracingCommon.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderGraphFunctions.hlsl"
        	// GraphIncludes: <None>
        
            // --------------------------------------------------
            // Structs and Packing
        
            struct SurfaceDescriptionInputs
        {
             float3 WorldSpaceNormal;
             float3 TangentSpaceNormal;
             float3 WorldSpaceTangent;
             float3 WorldSpaceBiTangent;
             float3 AbsoluteWorldSpacePosition;
             float4 uv0;
             float4 uv2;
             float4 VertexColor;
        };
        
            //Interpolator Packs: <None>
        
            // --------------------------------------------------
            // Graph
        
        
            // Graph Functions
            
        void Unity_Combine_float(float R, float G, float B, float A, out float4 RGBA, out float3 RGB, out float2 RG)
        {
            RGBA = float4(R, G, B, A);
            RGB = float3(R, G, B);
            RG = float2(R, G);
        }
        
        void Unity_Divide_float(float A, float B, out float Out)
        {
            Out = A / B;
        }
        
        void Unity_Multiply_float4_float4(float4 A, float4 B, out float4 Out)
        {
        Out = A * B;
        }
        
        void Unity_Branch_float4(float Predicate, float4 True, float4 False, out float4 Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_TilingAndOffset_float(float2 UV, float2 Tiling, float2 Offset, out float2 Out)
        {
            Out = UV * Tiling + Offset;
        }
        
        void Unity_Branch_float2(float Predicate, float2 True, float2 False, out float2 Out)
        {
            Out = Predicate ? True : False;
        }
        
        struct Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float
        {
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_2EBA7A3B, float Boolean_7ABB9909, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float IN, out float4 XZ_2)
        {
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Property_30834f691775a0898a45b1c868520436_Out_0_Boolean = Boolean_7ABB9909;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4 = Vector4_2EBA7A3B;
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[0];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[1];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[2];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[3];
        float _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float;
        Unity_Divide_float(1, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4 = IN.uv0;
        float4 _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4 = IN.uv2;
        float4 _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4;
        Unity_Branch_float4(_Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean, _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4, _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4, _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4);
        float2 _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float);
        float2 _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float);
        float2 _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4.xy), _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2, _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2, _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2);
        float2 _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2;
        Unity_Branch_float2(_Property_30834f691775a0898a45b1c868520436_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2, _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2);
        UnitySamplerState _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2) );
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        XZ_2 = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4;
        }
        
        void Unity_Multiply_float_float(float A, float B, out float Out)
        {
            Out = A * B;
        }
        
        void Unity_Add_float(float A, float B, out float Out)
        {
            Out = A + B;
        }
        
        void Unity_Saturate_float(float In, out float Out)
        {
            Out = saturate(In);
        }
        
        void Unity_Absolute_float(float In, out float Out)
        {
            Out = abs(In);
        }
        
        void Unity_SquareRoot_float4(float4 In, out float4 Out)
        {
            Out = sqrt(In);
        }
        
        void Unity_Sign_float(float In, out float Out)
        {
            Out = sign(In);
        }
        
        void Unity_Ceiling_float(float In, out float Out)
        {
            Out = ceil(In);
        }
        
        void Unity_Lerp_float4(float4 A, float4 B, float4 T, out float4 Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float
        {
        };
        
        void SG_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float(float4 Color_9AA111D3, float Vector1_FBE622A2, float Vector1_8C15C351, Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float IN, out float3 OutVector4_1)
        {
        float4 _Property_012510d774fb7f8b860f5270dca4500f_Out_0_Vector4 = Color_9AA111D3;
        float4 _SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4;
        Unity_SquareRoot_float4(_Property_012510d774fb7f8b860f5270dca4500f_Out_0_Vector4, _SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4);
        float _Property_a00e29241d12f983b30177515b367ec9_Out_0_Float = Vector1_FBE622A2;
        float _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float;
        Unity_Sign_float(_Property_a00e29241d12f983b30177515b367ec9_Out_0_Float, _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float);
        float _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float;
        Unity_Add_float(_Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float, 1, _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float);
        float _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float;
        Unity_Multiply_float_float(_Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float, 0.5, _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float);
        float _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float;
        Unity_Ceiling_float(_Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float);
        float _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float = Vector1_8C15C351;
        float _Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float;
        Unity_Multiply_float_float(_Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float);
        float4 _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4;
        Unity_Lerp_float4(_SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4, (_Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float.xxxx), (_Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float.xxxx), _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4);
        float4 _Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4, _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4, _Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4);
        OutVector4_1 = (_Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4.xyz);
        }
        
        void Unity_Clamp_float(float In, float Min, float Max, out float Out)
        {
            Out = clamp(In, Min, Max);
        }
        
        void Unity_Multiply_float2_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A * B;
        }
        
        void Unity_Add_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A + B;
        }
        
        void Unity_DotProduct_float2(float2 A, float2 B, out float Out)
        {
            Out = dot(A, B);
        }
        
        void Unity_OneMinus_float(float In, out float Out)
        {
            Out = 1 - In;
        }
        
        void Unity_SquareRoot_float(float In, out float Out)
        {
            Out = sqrt(In);
        }
        
        void Unity_Sign_float3(float3 In, out float3 Out)
        {
            Out = sign(In);
        }
        
        void Unity_Normalize_float3(float3 In, out float3 Out)
        {
            Out = normalize(In);
        }
        
        void Unity_Branch_float3(float Predicate, float3 True, float3 False, out float3 Out)
        {
            Out = Predicate ? True : False;
        }
        
        struct Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float
        {
        float3 WorldSpaceNormal;
        float3 WorldSpaceTangent;
        float3 WorldSpaceBiTangent;
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_82674548, float Boolean_9FF42DF6, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float IN, out float4 XZ_2)
        {
        float _Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean = Boolean_9FF42DF6;
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4 = Vector4_82674548;
        float _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[0];
        float _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[1];
        float _Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[2];
        float _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[3];
        float _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float;
        Unity_Divide_float(1, _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4 = IN.uv0;
        float4 _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4 = IN.uv2;
        float4 _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4;
        Unity_Branch_float4(_Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean, _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4, _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4, _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4);
        float2 _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float);
        float2 _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float, _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float);
        float2 _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4.xy), _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2, _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2, _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2);
        float2 _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2;
        Unity_Branch_float2(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2, _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2);
        UnitySamplerState _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2) );
        _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.rgb = UnpackNormal(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4);
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        float2 _Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2 = float2(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float, _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float);
        float3 _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3;
        Unity_Sign_float3(IN.WorldSpaceNormal, _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3);
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_R_1_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[0];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[1];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_B_3_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[2];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_A_4_Float = 0;
        float2 _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2 = float2(_Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float, 1);
        float2 _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2;
        Unity_Multiply_float2_float2(_Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2, _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2, _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2);
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float = IN.WorldSpaceNormal[0];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float = IN.WorldSpaceNormal[1];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float = IN.WorldSpaceNormal[2];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_A_4_Float = 0;
        float2 _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2 = float2(_Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float);
        float2 _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2;
        Unity_Add_float2(_Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2, _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2, _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2);
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[0];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[1];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_B_3_Float = 0;
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_A_4_Float = 0;
        float _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float;
        Unity_Multiply_float_float(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float);
        float3 _Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3 = float3(_Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float, _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float);
        float3 _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3;
        {
        float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
        _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3 = TransformWorldToTangent(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
        }
        float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
        Unity_Normalize_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3);
        float3 _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3;
        Unity_Branch_float3(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3, (_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.xyz), _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3);
        XZ_2 = (float4(_Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3, 1.0));
        }
        
        void Unity_NormalStrength_float(float3 In, float Strength, out float3 Out)
        {
            Out = float3(In.rg * Strength, lerp(1, In.b, saturate(Strength)));
        }
        
        void Unity_NormalBlend_float(float3 A, float3 B, out float3 Out)
        {
            Out = SafeNormalize(float3(A.rg + B.rg, A.b * B.b));
        }
        
        void Unity_Subtract_float(float A, float B, out float Out)
        {
            Out = A - B;
        }
        
        void Unity_Power_float(float A, float B, out float Out)
        {
            Out = pow(A, B);
        }
        
        void Unity_Lerp_float3(float3 A, float3 B, float3 T, out float3 Out)
        {
            Out = lerp(A, B, T);
        }
        
        void Unity_Remap_float(float In, float2 InMinMax, float2 OutMinMax, out float Out)
        {
            Out = OutMinMax.x + (In - InMinMax.x) * (OutMinMax.y - OutMinMax.x) / (InMinMax.y - InMinMax.x);
        }
        
        void Unity_Branch_float(float Predicate, float True, float False, out float Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_Multiply_float3_float3(float3 A, float3 B, out float3 Out)
        {
            Out = A * B;
        }
        
        void Unity_Lerp_float(float A, float B, float T, out float Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float
        {
        };
        
        void SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(float Vector1_32317166, float Vector1_FBE622A2, float Vector1_8C15C351, Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float IN, out float SmoothnessOverlay_1)
        {
        float _Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float = Vector1_32317166;
        float _Property_a00e29241d12f983b30177515b367ec9_Out_0_Float = Vector1_FBE622A2;
        float _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float;
        Unity_Sign_float(_Property_a00e29241d12f983b30177515b367ec9_Out_0_Float, _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float);
        float _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float;
        Unity_Add_float(_Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float, 1, _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float);
        float _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float;
        Unity_Multiply_float_float(_Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float, 0.5, _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float);
        float _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float;
        Unity_Ceiling_float(_Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float);
        float _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float = Vector1_8C15C351;
        float _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        Unity_Lerp_float(_Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float, _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float);
        SmoothnessOverlay_1 = _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        }
        
        void Unity_Lerp_float2(float2 A, float2 B, float2 T, out float2 Out)
        {
            Out = lerp(A, B, T);
        }
        
            // Graph Vertex
            // GraphVertex: <None>
        
            // Graph Pixel
            struct SurfaceDescription
        {
            float3 BaseColor;
            float3 Emission;
            float Alpha;
            float3 BentNormal;
            float Smoothness;
            float Occlusion;
            float3 NormalTS;
            float3 Specular;
        };
        
        SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
        {
            SurfaceDescription surface = (SurfaceDescription)0;
            UnityTexture2D _Property_9c271219f828108f958217e55cd6dc1d_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseColorMap);
            float4 _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4 = _BaseTilingOffset;
            float _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean = _BaseUsePlanarUV;
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_f392575634df5b86b63ff6e287282b30;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.uv0 = IN.uv0;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.uv2 = IN.uv2;
            float4 _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_9c271219f828108f958217e55cd6dc1d_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_f392575634df5b86b63ff6e287282b30, _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4);
            float4 _Property_4f676fce92c9378db3c3b92ae77fbff9_Out_0_Vector4 = _BaseColor;
            float4 _Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4, _Property_4f676fce92c9378db3c3b92ae77fbff9_Out_0_Vector4, _Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4);
            UnityTexture2D _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_DetailMap);
            float4 _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4 = _DetailTilingOffset;
            float _Split_9fa8573190399e8da2a843a4cab68164_R_1_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[0];
            float _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[1];
            float _Split_9fa8573190399e8da2a843a4cab68164_B_3_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[2];
            float _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[3];
            float2 _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_R_1_Float, _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float);
            float2 _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_B_3_Float, _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float);
            float2 _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2;
            Unity_TilingAndOffset_float(IN.uv0.xy, _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2, _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2, _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2);
            float4 _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.tex, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.samplerstate, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.GetTransformedUV(_TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2) );
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_R_4_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.r;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.g;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.b;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.a;
            float _Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_R_4_Float, 2, _Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float);
            float _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float;
            Unity_Add_float(_Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float, -1, _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float);
            float _Property_7d68da97cd169d8e8649255aec16158a_Out_0_Float = _DetailAlbedoScale;
            float _Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float;
            Unity_Multiply_float_float(_Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float, _Property_7d68da97cd169d8e8649255aec16158a_Out_0_Float, _Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float);
            float _Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float;
            Unity_Saturate_float(_Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float, _Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float);
            float _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float;
            Unity_Absolute_float(_Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float, _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float);
            Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83;
            float3 _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3;
            SG_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float(_Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4, _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float, _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float, _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83, _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3);
            UnityTexture2D _Property_5ca167b35599f78ab3722ec527327841_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverBaseColorMap);
            float4 _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4 = _CoverTilingOffset;
            float _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean = _CoverUsePlanarUV;
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_ad1db3524021ac898447cb6f6daa4180;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.uv0 = IN.uv0;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.uv2 = IN.uv2;
            float4 _PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_5ca167b35599f78ab3722ec527327841_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_ad1db3524021ac898447cb6f6daa4180, _PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4);
            float4 _Property_b34e94e0b1171480b3e35ff7f4793d7c_Out_0_Vector4 = _CoverBaseColor;
            float4 _Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4, _Property_b34e94e0b1171480b3e35ff7f4793d7c_Out_0_Vector4, _Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4);
            float _Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean = _USEDYNAMICCOVERTSTATICMASKF;
            UnityTexture2D _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskA);
            float4 _UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4 = IN.uv0;
            float4 _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.tex, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.samplerstate, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.GetTransformedUV((_UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4.xy)) );
            float _SampleTexture2D_79111e5af287b084822e60563309a632_R_4_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.r;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_G_5_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.g;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_B_6_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.b;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.a;
            float _Property_c022d8255938838aa73170f05c226269_Out_0_Float = _CoverMaskPower;
            float _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float, _Property_c022d8255938838aa73170f05c226269_Out_0_Float, _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float);
            float _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float;
            Unity_Clamp_float(_Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float, 0, 1, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float);
            float2 _Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2 = float2(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float, _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float);
            float2 _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2, float2(2, 2), _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2);
            float2 _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2;
            Unity_Add_float2(_Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2, float2(-1, -1), _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2);
            float _Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float = _DetailNormalScale;
            float2 _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2, (_Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float.xx), _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2);
            float _Split_492de324af96c482b50573c79f9fb6a0_R_1_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[0];
            float _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[1];
            float _Split_492de324af96c482b50573c79f9fb6a0_B_3_Float = 0;
            float _Split_492de324af96c482b50573c79f9fb6a0_A_4_Float = 0;
            float _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float;
            Unity_DotProduct_float2(_Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float);
            float _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float;
            Unity_Saturate_float(_DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float, _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float);
            float _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float;
            Unity_OneMinus_float(_Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float, _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float);
            float _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float;
            Unity_SquareRoot_float(_OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            float3 _Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3 = float3(_Split_492de324af96c482b50573c79f9fb6a0_R_1_Float, _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            UnityTexture2D _Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseNormalMap);
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv0 = IN.uv0;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv2 = IN.uv2;
            float4 _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4);
            float _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float = _BaseNormalScale;
            float3 _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4.xyz), _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3);
            float3 _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3;
            Unity_NormalBlend_float(_Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3, _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3);
            UnityTexture2D _Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverNormalMap);
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv0 = IN.uv0;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv2 = IN.uv2;
            float4 _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4);
            float _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float = _CoverNormalBlendHardness;
            float3 _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3);
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_R_1_Float = IN.WorldSpaceNormal[0];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float = IN.WorldSpaceNormal[1];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_B_3_Float = IN.WorldSpaceNormal[2];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_A_4_Float = 0;
            float _Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float = _Cover_Amount;
            float _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float = _Cover_Amount_Grow_Speed;
            float _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float;
            Unity_Subtract_float(4, _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float);
            float _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float;
            Unity_Divide_float(_Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float);
            float _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float;
            Unity_Absolute_float(_Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float, _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float);
            float _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float;
            Unity_Power_float(_Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float);
            float _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float;
            Unity_Clamp_float(_Power_c11fc5724f830485a9c4df249a854571_Out_2_Float, 0, 2, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float);
            float _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float;
            Unity_Multiply_float_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float);
            float _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float;
            Unity_Saturate_float(_Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float, _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float);
            float _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float;
            Unity_Clamp_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, 0, 0.9999, _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float);
            float _Property_89633a46f34e1f8996557a9178d78478_Out_0_Float = _Cover_Max_Angle;
            float _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float;
            Unity_Divide_float(_Property_89633a46f34e1f8996557a9178d78478_Out_0_Float, 45, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float);
            float _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float;
            Unity_OneMinus_float(_Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float);
            float _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float;
            Unity_Subtract_float(_Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float, _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float);
            float _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float;
            Unity_Clamp_float(_Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float, 0, 2, _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
            float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
            Unity_Divide_float(1, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float);
            float _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_67dcc607b6da848097d3412324311616_Out_3_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float, _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float);
            float _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float;
            Unity_Absolute_float(_Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float, _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float);
            float _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float = _CoverHardness;
            float _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float;
            Unity_Power_float(_Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float);
            float _Property_f8753bb05d835089bda460d144f93c48_Out_0_Float = _Cover_Min_Height;
            float _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float;
            Unity_OneMinus_float(_Property_f8753bb05d835089bda460d144f93c48_Out_0_Float, _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float);
            float _Split_c66e04f85a2a7f87884040056599e65d_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
            float _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
            float _Split_c66e04f85a2a7f87884040056599e65d_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
            float _Split_c66e04f85a2a7f87884040056599e65d_A_4_Float = 0;
            float _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float;
            Unity_Add_float(_OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float, _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float);
            float _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, 1, _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
            float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
            Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, 0, 1, _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float);
            float _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float = _Cover_Min_Height_Blending;
            float _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float, _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float);
            float _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float;
            Unity_Divide_float(_Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float);
            float _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float;
            Unity_OneMinus_float(_Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float, _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float);
            float _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float;
            Unity_Add_float(_OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float, -0.5, _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
            float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
            Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, 0, 1, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float);
            float _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float;
            Unity_Add_float(_Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float, _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float);
            float _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float;
            Unity_Clamp_float(_Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float, 0, 1, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float);
            float _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float;
            Unity_Multiply_float_float(_Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float);
            float _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float;
            Unity_Multiply_float_float(_Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float);
            float3 _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3, (_Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float.xxx), _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3);
            float3 _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3;
            {
                float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
                _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3 = TransformTangentToWorldDir(_Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3.xyz, tangentTransform, false).xyz;
            }
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_R_1_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[0];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[1];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_B_3_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[2];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_A_4_Float = 0;
            float _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float;
            Unity_Multiply_float_float(_Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float);
            float _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float);
            float _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float);
            float _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float, _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float);
            UnityTexture2D _Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_36e64648ad8a6a849bc794b8693519da;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv0 = IN.uv0;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv2 = IN.uv2;
            float4 _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_36e64648ad8a6a849bc794b8693519da, _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4);
            float _Split_198ec92f3e753d8a9ad50db7d6527324_R_1_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[0];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[1];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[2];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[3];
            float _Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float = _CoverHeightMapMin;
            float _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float = _CoverHeightMapMax;
            float2 _Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2 = float2(_Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float, _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float);
            float _Property_277f22c36084858981418fa95133a562_Out_0_Float = _CoverHeightMapOffset;
            float2 _Add_53997153562831859cc7b582f3068877_Out_2_Vector2;
            Unity_Add_float2(_Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2, (_Property_277f22c36084858981418fa95133a562_Out_0_Float.xx), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2);
            float _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float, float2 (0, 1), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float);
            float _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float, _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float);
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float = IN.VertexColor[0];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float = IN.VertexColor[1];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_B_3_Float = IN.VertexColor[2];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_A_4_Float = IN.VertexColor[3];
            float _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float, _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float, _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float);
            float _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float;
            Unity_Saturate_float(_Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float);
            float _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float);
            float _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float;
            Unity_Branch_float(_Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float);
            float3 _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3;
            Unity_Lerp_float3(_BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3, (_Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4.xyz), (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxx), _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3);
            float4 _Property_e687576468764d85b6b46dca96d8a8e3_Out_0_Vector4 = _WetColor;
            float3 _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3;
            Unity_Multiply_float3_float3((_Property_e687576468764d85b6b46dca96d8a8e3_Out_0_Vector4.xyz), _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3, _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3);
            float _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float;
            Unity_OneMinus_float(_Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float);
            float3 _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
            Unity_Lerp_float3(_Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3, _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3, (_OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float.xxx), _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3);
            UnityTexture2D _Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv0 = IN.uv0;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv2 = IN.uv2;
            float4 _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4);
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_R_1_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[0];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[1];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_B_3_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[2];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[3];
            float _Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float = _BaseAORemapMin;
            float _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float = _BaseAORemapMax;
            float2 _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2 = float2(_Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float, _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float);
            float _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float, float2 (0, 1), _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2, _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float);
            float _Property_e353baf414594b8882fb914562e81165_Out_0_Float = _BaseSmoothnessRemapMin;
            float _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float = _BaseSmoothnessRemapMax;
            float2 _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2 = float2(_Property_e353baf414594b8882fb914562e81165_Out_0_Float, _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float);
            float _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float, float2 (0, 1), _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2, _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float);
            float _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float, 2, _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float);
            float _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float;
            Unity_Add_float(_Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float, -1, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float);
            float _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float = _DetailSmoothnessScale;
            float _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float;
            Unity_Multiply_float_float(_Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float, _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float);
            float _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float;
            Unity_Saturate_float(_Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float, _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float);
            float _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float;
            Unity_Absolute_float(_Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float);
            Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da;
            float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float;
            SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(_Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float);
            float _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float;
            Unity_Saturate_float(_BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float2 _Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2 = float2(_Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float _Property_5e08cfb127183a8993376f9087501eee_Out_0_Float = _CoverAORemapMin;
            float _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float = _CoverAORemapMax;
            float2 _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2 = float2(_Property_5e08cfb127183a8993376f9087501eee_Out_0_Float, _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float);
            float _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float, float2 (0, 1), _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2, _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float);
            float _Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float = _CoverSmoothnessRemapMin;
            float _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float = _CoverSmoothnessRemapMax;
            float2 _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2 = float2(_Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float, _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float);
            float _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float, float2 (0, 1), _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2 = float2(_Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2;
            Unity_Lerp_float2(_Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2, _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xx), _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2);
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_R_1_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[0];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[1];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_B_3_Float = 0;
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_A_4_Float = 0;
            float _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float = _WetSmoothness;
            float _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            Unity_Lerp_float(_Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float, _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float, _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float);
            float _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float = _CoverNormalScale;
            float3 _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3);
            float3 _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxx), _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3);
            UnityTexture2D _Property_f617479b11216b84b89956263f8d3c08_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_SpecularColorMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.uv0 = IN.uv0;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.uv2 = IN.uv2;
            float4 _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_f617479b11216b84b89956263f8d3c08_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d, _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4);
            float4 _Property_112303b9c27a1284b20f0a5c49fb436a_Out_0_Vector4 = _SpecularColor;
            float4 _Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4, _Property_112303b9c27a1284b20f0a5c49fb436a_Out_0_Vector4, _Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4);
            UnityTexture2D _Property_0c768f7d1094a8878d837f25970dbd49_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverSpecularColorMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_4b88db16993b7d84a6c9e021b5992a38;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.uv0 = IN.uv0;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.uv2 = IN.uv2;
            float4 _PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_0c768f7d1094a8878d837f25970dbd49_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_4b88db16993b7d84a6c9e021b5992a38, _PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4);
            float4 _Property_51d3c44a7110108d9e8c9a3acf54125f_Out_0_Vector4 = _CoverSpecularColor;
            float4 _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4, _Property_51d3c44a7110108d9e8c9a3acf54125f_Out_0_Vector4, _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4);
            float4 _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4;
            Unity_Lerp_float4(_Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4, _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxxx), _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4);
            surface.BaseColor = _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
            surface.Emission = float3(0, 0, 0);
            surface.Alpha = 1;
            surface.BentNormal = IN.TangentSpaceNormal;
            surface.Smoothness = _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            surface.Occlusion = _Split_beb57fcf05cbb6809f536625bac5fcbc_R_1_Float;
            surface.NormalTS = _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            surface.Specular = (_Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4.xyz);
            return surface;
        }
        
            // --------------------------------------------------
            // Build Graph Inputs
            #ifdef HAVE_VFX_MODIFICATION
            #define VFX_SRP_ATTRIBUTES AttributesMesh
            #define VaryingsMeshType VaryingsMeshToPS
            #define VFX_SRP_VARYINGS VaryingsMeshType
            #define VFX_SRP_SURFACE_INPUTS FragInputs
            #endif
            SurfaceDescriptionInputs FragInputsToSurfaceDescriptionInputs(FragInputs input, float3 viewWS)
        {
            SurfaceDescriptionInputs output;
            ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
        
            output.WorldSpaceNormal =                           normalize(input.tangentToWorld[2].xyz);
            #if defined(SHADER_STAGE_RAY_TRACING)
            #else
            #endif
            output.TangentSpaceNormal =                         float3(0.0f, 0.0f, 1.0f);
            output.WorldSpaceTangent =                          input.tangentToWorld[0].xyz;
            output.WorldSpaceBiTangent =                        input.tangentToWorld[1].xyz;
            output.AbsoluteWorldSpacePosition =                 GetAbsolutePositionWS(input.positionRWS);
        
        #if UNITY_UV_STARTS_AT_TOP
        #else
        #endif
        
        
            output.uv0 =                                        input.texCoord0;
            output.uv2 =                                        input.texCoord2;
            output.VertexColor =                                input.color;
        
            // splice point to copy frag inputs custom interpolator pack into the SDI
            /* WARNING: $splice Could not find named fragment 'CustomInterpolatorCopyToSDI' */
        
            return output;
        }
        
            // --------------------------------------------------
            // Build Surface Data (Specific Material)
        
        void ApplyDecalToSurfaceDataNoNormal(DecalSurfaceData decalSurfaceData, inout SurfaceData surfaceData);
        
        void ApplyDecalAndGetNormal(FragInputs fragInputs, PositionInputs posInput, SurfaceDescription surfaceDescription,
            inout SurfaceData surfaceData)
        {
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
        #ifdef DECAL_NORMAL_BLENDING
            // SG nodes don't ouptut surface gradients, so if decals require surf grad blending, we have to convert
            // the normal to gradient before applying the decal. We then have to resolve the gradient back to world space
            float3 normalTS;
        
            normalTS = SurfaceGradientFromTangentSpaceNormalAndFromTBN(surfaceDescription.NormalTS,
            fragInputs.tangentToWorld[0], fragInputs.tangentToWorld[1]);
        
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, fragInputs.tangentToWorld[2], normalTS);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        
            GetNormalWS_SG(fragInputs, normalTS, surfaceData.normalWS, doubleSidedConstants);
        #else
            // normal delivered to master node
            GetNormalWS(fragInputs, surfaceDescription.NormalTS, surfaceData.normalWS, doubleSidedConstants);
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                // Both uses and modifies 'surfaceData.normalWS'.
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, surfaceData.normalWS.xyz);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        #endif
        }
        void BuildSurfaceData(FragInputs fragInputs, inout SurfaceDescription surfaceDescription, float3 V, PositionInputs posInput, out SurfaceData surfaceData, out float3 bentNormalWS)
        {
            ZERO_INITIALIZE(SurfaceData, surfaceData);
        
            // specularOcclusion need to be init ahead of decal to quiet the compiler that modify the SurfaceData struct
            // however specularOcclusion can come from the graph, so need to be init here so it can be override.
            surfaceData.specularOcclusion = 1.0;
        
            surfaceData.baseColor =                 surfaceDescription.BaseColor;
            surfaceData.perceptualSmoothness =      surfaceDescription.Smoothness;
            surfaceData.ambientOcclusion =          surfaceDescription.Occlusion;
            surfaceData.specularColor =             surfaceDescription.Specular;
        
            #if defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE) || defined(_REFRACTION_THIN)
                if (_EnableSSRefraction)
                {
        
                    surfaceData.transmittanceMask = (1.0 - surfaceDescription.Alpha);
                    surfaceDescription.Alpha = 1.0;
                }
                else
                {
                    surfaceData.ior = 1.0;
                    surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                    surfaceData.atDistance = 1.0;
                    surfaceData.transmittanceMask = 0.0;
                    surfaceDescription.Alpha = 1.0;
                }
            #else
                surfaceData.ior = 1.0;
                surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                surfaceData.atDistance = 1.0;
                surfaceData.transmittanceMask = 0.0;
            #endif
        
            // These static material feature allow compile time optimization
            surfaceData.materialFeatures = MATERIALFEATUREFLAGS_LIT_STANDARD;
            #ifdef _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SUBSURFACE_SCATTERING;
            #endif
        
            #ifdef _MATERIAL_FEATURE_TRANSMISSION
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
            #endif
        
            #ifdef _MATERIAL_FEATURE_ANISOTROPY
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_ANISOTROPY;
        
                // Initialize the normal to something non-zero to avoid a div-zero warning for anisotropy.
                surfaceData.normalWS = float3(0, 1, 0);
            #endif
        
            #ifdef _MATERIAL_FEATURE_IRIDESCENCE
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_IRIDESCENCE;
            #endif
        
            #ifdef _MATERIAL_FEATURE_SPECULAR_COLOR
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SPECULAR_COLOR;
            #endif
        
            #ifdef _MATERIAL_FEATURE_CLEAR_COAT
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_CLEAR_COAT;
            #endif
        
            #if defined (_MATERIAL_FEATURE_SPECULAR_COLOR) && defined (_ENERGY_CONSERVING_SPECULAR)
                // Require to have setup baseColor
                // Reproduce the energy conservation done in legacy Unity. Not ideal but better for compatibility and users can unchek it
                surfaceData.baseColor *= (1.0 - Max3(surfaceData.specularColor.r, surfaceData.specularColor.g, surfaceData.specularColor.b));
            #endif
        
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
            ApplyDecalAndGetNormal(fragInputs, posInput, surfaceDescription, surfaceData);
        
            surfaceData.geomNormalWS = fragInputs.tangentToWorld[2];
        
            surfaceData.tangentWS = normalize(fragInputs.tangentToWorld[0].xyz);    // The tangent is not normalize in tangentToWorld for mikkt. TODO: Check if it expected that we normalize with Morten. Tag: SURFACE_GRADIENT
        
        
            bentNormalWS = surfaceData.normalWS;
        
            surfaceData.tangentWS = Orthonormalize(surfaceData.tangentWS, surfaceData.normalWS);
        
            #ifdef DEBUG_DISPLAY
                if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
                {
                    // TODO: need to update mip info
                    surfaceData.metallic = 0;
                }
        
                // We need to call ApplyDebugToSurfaceData after filling the surfarcedata and before filling builtinData
                // as it can modify attribute use for static lighting
                ApplyDebugToSurfaceData(fragInputs.tangentToWorld, surfaceData);
            #endif
        
            // By default we use the ambient occlusion with Tri-ace trick (apply outside) for specular occlusion.
            // If user provide bent normal then we process a better term
            #if defined(_SPECULAR_OCCLUSION_CUSTOM)
                // Just use the value passed through via the slot (not active otherwise)
            #elif defined(_SPECULAR_OCCLUSION_FROM_AO_BENT_NORMAL)
                // If we have bent normal and ambient occlusion, process a specular occlusion
                surfaceData.specularOcclusion = GetSpecularOcclusionFromBentAO(V, bentNormalWS, surfaceData.normalWS, surfaceData.ambientOcclusion, PerceptualSmoothnessToPerceptualRoughness(surfaceData.perceptualSmoothness));
            #elif defined(_AMBIENT_OCCLUSION) && defined(_SPECULAR_OCCLUSION_FROM_AO)
                surfaceData.specularOcclusion = GetSpecularOcclusionFromAmbientOcclusion(ClampNdotV(dot(surfaceData.normalWS, V)), surfaceData.ambientOcclusion, PerceptualSmoothnessToRoughness(surfaceData.perceptualSmoothness));
            #endif
        
            #if defined(_ENABLE_GEOMETRIC_SPECULAR_AA) && !defined(SHADER_STAGE_RAY_TRACING)
                surfaceData.perceptualSmoothness = GeometricNormalFiltering(surfaceData.perceptualSmoothness, fragInputs.tangentToWorld[2], surfaceDescription.SpecularAAScreenSpaceVariance, surfaceDescription.SpecularAAThreshold);
            #endif
        }
        
            // --------------------------------------------------
            // Get Surface And BuiltinData
        
            void GetSurfaceAndBuiltinData(FragInputs fragInputs, float3 V, inout PositionInputs posInput, out SurfaceData surfaceData, out BuiltinData builtinData RAY_TRACING_OPTIONAL_PARAMETERS)
            {
                // Don't dither if displaced tessellation (we're fading out the displacement instead to match the next LOD)
                #if !defined(SHADER_STAGE_RAY_TRACING) && !defined(_TESSELLATION_DISPLACEMENT)
                #ifdef LOD_FADE_CROSSFADE // enable dithering LOD transition if user select CrossFade transition in LOD group
                LODDitheringTransition(ComputeFadeMaskSeed(V, posInput.positionSS), unity_LODFade.x);
                #endif
                #endif
        
                #ifndef SHADER_UNLIT
                #ifdef _DOUBLESIDED_ON
                    float3 doubleSidedConstants = _DoubleSidedConstants.xyz;
                #else
                    float3 doubleSidedConstants = float3(1.0, 1.0, 1.0);
                #endif
        
                ApplyDoubleSidedFlipOrMirror(fragInputs, doubleSidedConstants); // Apply double sided flip on the vertex normal
                #endif // SHADER_UNLIT
        
                SurfaceDescriptionInputs surfaceDescriptionInputs = FragInputsToSurfaceDescriptionInputs(fragInputs, V);
        
                #if defined(HAVE_VFX_MODIFICATION)
                GraphProperties properties;
                ZERO_INITIALIZE(GraphProperties, properties);
        
                GetElementPixelProperties(fragInputs, properties);
        
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs, properties);
                #else
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs);
                #endif
        
                // Perform alpha test very early to save performance (a killed pixel will not sample textures)
                // TODO: split graph evaluation to grab just alpha dependencies first? tricky..
                #ifdef _ALPHATEST_ON
                    float alphaCutoff = surfaceDescription.AlphaClipThreshold;
                    #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
                    // The TransparentDepthPrepass is also used with SSR transparent.
                    // If an artists enable transaprent SSR but not the TransparentDepthPrepass itself, then we use AlphaClipThreshold
                    // otherwise if TransparentDepthPrepass is enabled we use AlphaClipThresholdDepthPrepass
                    #elif SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_POSTPASS
                    // DepthPostpass always use its own alpha threshold
                    alphaCutoff = surfaceDescription.AlphaClipThresholdDepthPostpass;
                    #elif (SHADERPASS == SHADERPASS_SHADOWS) || (SHADERPASS == SHADERPASS_RAYTRACING_VISIBILITY)
                    // If use shadow threshold isn't enable we don't allow any test
                    #endif
        
                    GENERIC_ALPHA_TEST(surfaceDescription.Alpha, alphaCutoff);
                #endif
        
                #if !defined(SHADER_STAGE_RAY_TRACING) && _DEPTHOFFSET_ON
                ApplyDepthOffsetPositionInput(V, surfaceDescription.DepthOffset, GetViewForwardDir(), GetWorldToHClipMatrix(), posInput);
                #endif
        
                #ifndef SHADER_UNLIT
                float3 bentNormalWS;
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData, bentNormalWS);
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD1
                    float4 lightmapTexCoord1 = fragInputs.texCoord1;
                #else
                    float4 lightmapTexCoord1 = float4(0,0,0,0);
                #endif
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD2
                    float4 lightmapTexCoord2 = fragInputs.texCoord2;
                #else
                    float4 lightmapTexCoord2 = float4(0,0,0,0);
                #endif
        
                // Builtin Data
                // For back lighting we use the oposite vertex normal
                InitBuiltinData(posInput, surfaceDescription.Alpha, bentNormalWS, -fragInputs.tangentToWorld[2], lightmapTexCoord1, lightmapTexCoord2, builtinData);
        
                #else
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData);
        
                ZERO_BUILTIN_INITIALIZE(builtinData); // No call to InitBuiltinData as we don't have any lighting
                builtinData.opacity = surfaceDescription.Alpha;
        
                #if defined(DEBUG_DISPLAY)
                    // Light Layers are currently not used for the Unlit shader (because it is not lit)
                    // But Unlit objects do cast shadows according to their rendering layer mask, which is what we want to
                    // display in the light layers visualization mode, therefore we need the renderingLayers
                    builtinData.renderingLayers = GetMeshRenderingLightLayer();
                #endif
        
                #endif // SHADER_UNLIT
        
                #ifdef _ALPHATEST_ON
                    // Used for sharpening by alpha to mask - Alpha to covertage is only used with depth only and forward pass (no shadow pass, no transparent pass)
                    builtinData.alphaClipTreshold = alphaCutoff;
                #endif
        
                // override sampleBakedGI - not used by Unlit
        
                builtinData.emissiveColor = surfaceDescription.Emission;
        
                // Note this will not fully work on transparent surfaces (can check with _SURFACE_TYPE_TRANSPARENT define)
                // We will always overwrite vt feeback with the nearest. So behind transparent surfaces vt will not be resolved
                // This is a limitation of the current MRT approach.
                #ifdef UNITY_VIRTUAL_TEXTURING
                #endif
        
                #if _DEPTHOFFSET_ON
                builtinData.depthOffset = surfaceDescription.DepthOffset;
                #endif
        
                // TODO: We should generate distortion / distortionBlur for non distortion pass
                #if (SHADERPASS == SHADERPASS_DISTORTION)
                builtinData.distortion = surfaceDescription.Distortion;
                builtinData.distortionBlur = surfaceDescription.DistortionBlur;
                #endif
        
                #ifndef SHADER_UNLIT
                // PostInitBuiltinData call ApplyDebugToBuiltinData
                PostInitBuiltinData(V, posInput, surfaceData, builtinData);
                #else
                ApplyDebugToBuiltinData(builtinData);
                #endif
        
                RAY_TRACING_OPTIONAL_ALPHA_TEST_PASS
            }
        
            // --------------------------------------------------
            // Main
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassRaytracingForward.hlsl"
        
            // --------------------------------------------------
            // Visual Effect Vertex Invocations
        
        	#ifdef HAVE_VFX_MODIFICATION
        	#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
        	#endif
        
            ENDHLSL
        }
        Pass
        {
            Name "GBufferDXR"
            Tags
            {
                "LightMode" = "GBufferDXR"
            }
        
            // Render State
            // RenderState: <None>
        
            // Debug
            // <None>
        
            // --------------------------------------------------
            // Pass
        
            HLSLPROGRAM
        
            // Pragmas
            #pragma target 5.0
        #pragma raytracing surface_shader
        #pragma only_renderers d3d11 xboxseries ps5
        
            // Keywords
            #pragma multi_compile _ MINIMAL_GBUFFER
        #pragma shader_feature _ _SURFACE_TYPE_TRANSPARENT
        #pragma shader_feature_local _ _DOUBLESIDED_ON
        #pragma shader_feature_local _ _ADD_PRECOMPUTED_VELOCITY
        #pragma shader_feature_local _ _TRANSPARENT_WRITES_MOTION_VEC
        #pragma shader_feature_local_fragment _ _ENABLE_FOG_ON_TRANSPARENT
        #pragma multi_compile _ DEBUG_DISPLAY
        #pragma shader_feature_local_fragment _ _DISABLE_DECALS
        #pragma shader_feature_local_raytracing _ _DISABLE_DECALS
        #pragma shader_feature_local_fragment _ _DISABLE_SSR
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR
        #pragma shader_feature_local_fragment _ _DISABLE_SSR_TRANSPARENT
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR_TRANSPARENT
        #pragma multi_compile _ LIGHTMAP_ON
        #pragma multi_compile _ DIRLIGHTMAP_COMBINED
        #pragma multi_compile_fragment PROBE_VOLUMES_OFF PROBE_VOLUMES_L1 PROBE_VOLUMES_L2
        #pragma multi_compile_raytracing PROBE_VOLUMES_OFF PROBE_VOLUMES_L1 PROBE_VOLUMES_L2
        #pragma multi_compile _ DYNAMICLIGHTMAP_ON
        #pragma shader_feature_local _ _REFRACTION_PLANE _REFRACTION_SPHERE _REFRACTION_THIN
            // GraphKeywords: <None>
        
            // For custom interpolators to inject a substruct definition before FragInputs definition,
            // allowing for FragInputs to capture CI's intended for ShaderGraph's SDI.
            /* WARNING: $splice Could not find named fragment 'CustomInterpolatorPreInclude' */
        
        
            // TODO: Merge FragInputsVFX substruct with CustomInterpolators.
        	#ifdef HAVE_VFX_MODIFICATION
        	struct FragInputsVFX
            {
                /* WARNING: $splice Could not find named fragment 'FragInputsVFX' */
            };
            #endif
        
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/GeometricTools.hlsl" // Required by Tessellation.hlsl
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Tessellation.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl" // Required to be include before we include properties as it define DECLARE_STACK_CB
            // Always include Shader Graph version
            // Always include last to avoid double macros
            #include "Packages/com.unity.shadergraph/ShaderGraphLibrary/Functions.hlsl" // Need to be here for Gradient struct definition
        
            // --------------------------------------------------
            // Defines
        
            // Attribute
            #define ATTRIBUTES_NEED_NORMAL
            #define ATTRIBUTES_NEED_TANGENT
            #define ATTRIBUTES_NEED_TEXCOORD0
            #define ATTRIBUTES_NEED_TEXCOORD1
            #define ATTRIBUTES_NEED_TEXCOORD2
            #define ATTRIBUTES_NEED_COLOR
            #define VARYINGS_NEED_POSITION_WS
            #define VARYINGS_NEED_TANGENT_TO_WORLD
            #define VARYINGS_NEED_TEXCOORD0
            #define VARYINGS_NEED_TEXCOORD1
            #define VARYINGS_NEED_TEXCOORD2
            #define VARYINGS_NEED_COLOR
        
        
            //Strip down the FragInputs.hlsl (on graphics), so we can only optimize the interpolators we use.
            //if by accident something requests contents of FragInputs.hlsl, it will be caught as a compiler error
            //Frag inputs stripping is only enabled when FRAG_INPUTS_ENABLE_STRIPPING is set
            #if !defined(SHADER_STAGE_RAY_TRACING) && SHADERPASS != SHADERPASS_RAYTRACING_GBUFFER && SHADERPASS != SHADERPASS_FULL_SCREEN_DEBUG
            #define FRAG_INPUTS_ENABLE_STRIPPING
            #endif
            #define FRAG_INPUTS_USE_TEXCOORD0
            #define FRAG_INPUTS_USE_TEXCOORD1
            #define FRAG_INPUTS_USE_TEXCOORD2
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/FragInputs.hlsl"
        
        
        
            #define SHADERPASS SHADERPASS_RAYTRACING_GBUFFER
        #define SHADOW_LOW
        #define RAYTRACING_SHADER_GRAPH_RAYTRACED
        
        
            // Following two define are a workaround introduce in 10.1.x for RaytracingQualityNode
            // The ShaderGraph don't support correctly migration of this node as it serialize all the node data
            // in the json file making it impossible to uprgrade. Until we get a fix, we do a workaround here
            // to still allow us to rename the field and keyword of this node without breaking existing code.
            #ifdef RAYTRACING_SHADER_GRAPH_DEFAULT
            #define RAYTRACING_SHADER_GRAPH_HIGH
            #endif
        
            #ifdef RAYTRACING_SHADER_GRAPH_RAYTRACED
            #define RAYTRACING_SHADER_GRAPH_LOW
            #endif
            // end
        
            #ifndef SHADER_UNLIT
            // We need isFrontFace when using double sided - it is not required for unlit as in case of unlit double sided only drive the cullmode
            // VARYINGS_NEED_CULLFACE can be define by VaryingsMeshToPS.FaceSign input if a IsFrontFace Node is included in the shader graph.
            #if defined(_DOUBLESIDED_ON) && !defined(VARYINGS_NEED_CULLFACE)
                #define VARYINGS_NEED_CULLFACE
            #endif
            #endif
        
            // Specific Material Define
        #define _MATERIAL_FEATURE_SPECULAR_COLOR 1
        #define _AMBIENT_OCCLUSION 1
        #define _SPECULAR_OCCLUSION_FROM_AO 1
        #define _ENERGY_CONSERVING_SPECULAR 1
        
        // If we use subsurface scattering, enable output split lighting (for forward pass)
        #if defined(_MATERIAL_FEATURE_SUBSURFACE_SCATTERING) && !defined(_SURFACE_TYPE_TRANSPARENT)
            #define OUTPUT_SPLIT_LIGHTING
        #endif
        
        // This shader support recursive rendering for raytracing
        #define HAVE_RECURSIVE_RENDERING
        
        // In Path Tracing, For all single-sided, refractive materials, we want to force a thin refraction model
        #if (SHADERPASS == SHADERPASS_PATH_TRACING) && !defined(_DOUBLESIDED_ON) && (defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE))
            #undef  _REFRACTION_PLANE
            #undef  _REFRACTION_SPHERE
            #define _REFRACTION_THIN
        #endif
            // Caution: we can use the define SHADER_UNLIT onlit after the above Material include as it is the Unlit template who define it
        
            // To handle SSR on transparent correctly with a possibility to enable/disable it per framesettings
            // we should have a code like this:
            // if !defined(_DISABLE_SSR_TRANSPARENT)
            // pragma multi_compile _ WRITE_NORMAL_BUFFER
            // endif
            // i.e we enable the multicompile only if we can receive SSR or not, and then C# code drive
            // it based on if SSR transparent in frame settings and not (and stripper can strip it).
            // this is currently not possible with our current preprocessor as _DISABLE_SSR_TRANSPARENT is a keyword not a define
            // so instead we used this and chose to pay the extra cost of normal write even if SSR transaprent is disabled.
            // Ideally the shader graph generator should handle it but condition below can't be handle correctly for now.
            #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
            #if !defined(_DISABLE_SSR_TRANSPARENT) && !defined(SHADER_UNLIT)
                #define WRITE_NORMAL_BUFFER
            #endif
            #endif
        
            #ifndef DEBUG_DISPLAY
                // In case of opaque we don't want to perform the alpha test, it is done in depth prepass and we use depth equal for ztest (setup from UI)
                // Don't do it with debug display mode as it is possible there is no depth prepass in this case
                #if !defined(_SURFACE_TYPE_TRANSPARENT)
                    #if SHADERPASS == SHADERPASS_FORWARD
                    #define SHADERPASS_FORWARD_BYPASS_ALPHA_TEST
                    #elif SHADERPASS == SHADERPASS_GBUFFER
                    #define SHADERPASS_GBUFFER_BYPASS_ALPHA_TEST
                    #endif
                #endif
            #endif
        
            // Define _DEFERRED_CAPABLE_MATERIAL for shader capable to run in deferred pass
            #if defined(SHADER_LIT) && !defined(_SURFACE_TYPE_TRANSPARENT)
                #define _DEFERRED_CAPABLE_MATERIAL
            #endif
        
            // Translate transparent motion vector define
            #if defined(_TRANSPARENT_WRITES_MOTION_VEC) && defined(_SURFACE_TYPE_TRANSPARENT)
                #define _WRITE_TRANSPARENT_MOTION_VECTOR
            #endif
        
            // -- Graph Properties
            CBUFFER_START(UnityPerMaterial)
        float4 _BaseColor;
        float4 _BaseColorMap_TexelSize;
        float _BaseUsePlanarUV;
        float4 _BaseTilingOffset;
        float4 _SpecularColor;
        float4 _SpecularColorMap_TexelSize;
        float4 _BaseNormalMap_TexelSize;
        float _BaseNormalScale;
        float4 _BaseMaskMap_TexelSize;
        float _BaseAORemapMin;
        float _BaseAORemapMax;
        float _BaseSmoothnessRemapMin;
        float _BaseSmoothnessRemapMax;
        float _USEDYNAMICCOVERTSTATICMASKF;
        float4 _CoverMaskA_TexelSize;
        float _CoverMaskPower;
        float _Cover_Amount;
        float _Cover_Amount_Grow_Speed;
        float _Cover_Max_Angle;
        float _Cover_Min_Height;
        float _Cover_Min_Height_Blending;
        float4 _CoverBaseColor;
        float4 _CoverBaseColorMap_TexelSize;
        float _CoverUsePlanarUV;
        float4 _CoverTilingOffset;
        float4 _CoverSpecularColor;
        float4 _CoverSpecularColorMap_TexelSize;
        float4 _CoverNormalMap_TexelSize;
        float _CoverNormalScale;
        float _CoverNormalBlendHardness;
        float _CoverHardness;
        float _CoverHeightMapMin;
        float _CoverHeightMapMax;
        float _CoverHeightMapOffset;
        float4 _CoverMaskMap_TexelSize;
        float _CoverAORemapMin;
        float _CoverAORemapMax;
        float _CoverSmoothnessRemapMin;
        float _CoverSmoothnessRemapMax;
        float4 _DetailMap_TexelSize;
        float4 _DetailTilingOffset;
        float _DetailAlbedoScale;
        float _DetailNormalScale;
        float _DetailSmoothnessScale;
        float4 _WetColor;
        float _WetSmoothness;
        float4 _EmissionColor;
        float _UseShadowThreshold;
        float4 _DoubleSidedConstants;
        float _BlendMode;
        float _EnableBlendModePreserveSpecularLighting;
        float _RayTracing;
        float _RefractionModel;
        CBUFFER_END
        
        
        // Object and Global properties
        SAMPLER(SamplerState_Linear_Repeat);
        SAMPLER(SamplerState_Linear_Repeat_Aniso8);
        TEXTURE2D(_BaseColorMap);
        SAMPLER(sampler_BaseColorMap);
        TEXTURE2D(_SpecularColorMap);
        SAMPLER(sampler_SpecularColorMap);
        TEXTURE2D(_BaseNormalMap);
        SAMPLER(sampler_BaseNormalMap);
        TEXTURE2D(_BaseMaskMap);
        SAMPLER(sampler_BaseMaskMap);
        TEXTURE2D(_CoverMaskA);
        SAMPLER(sampler_CoverMaskA);
        TEXTURE2D(_CoverBaseColorMap);
        SAMPLER(sampler_CoverBaseColorMap);
        TEXTURE2D(_CoverSpecularColorMap);
        SAMPLER(sampler_CoverSpecularColorMap);
        TEXTURE2D(_CoverNormalMap);
        SAMPLER(sampler_CoverNormalMap);
        TEXTURE2D(_CoverMaskMap);
        SAMPLER(sampler_CoverMaskMap);
        TEXTURE2D(_DetailMap);
        SAMPLER(sampler_DetailMap);
        
            // -- Property used by ScenePickingPass
            #ifdef SCENEPICKINGPASS
            float4 _SelectionID;
            #endif
        
            // -- Properties used by SceneSelectionPass
            #ifdef SCENESELECTIONPASS
            int _ObjectId;
            int _PassValue;
            #endif
        
            // Includes
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingMacros.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/ShaderVariablesRaytracing.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/ShaderVariablesRaytracingLightLoop.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Deferred/RaytracingIntersectonGBuffer.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/StandardLit/StandardLit.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitRaytracing.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/BuiltinUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RayTracingCommon.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderGraphFunctions.hlsl"
        	// GraphIncludes: <None>
        
            // --------------------------------------------------
            // Structs and Packing
        
            struct SurfaceDescriptionInputs
        {
             float3 WorldSpaceNormal;
             float3 TangentSpaceNormal;
             float3 WorldSpaceTangent;
             float3 WorldSpaceBiTangent;
             float3 AbsoluteWorldSpacePosition;
             float4 uv0;
             float4 uv2;
             float4 VertexColor;
        };
        
            //Interpolator Packs: <None>
        
            // --------------------------------------------------
            // Graph
        
        
            // Graph Functions
            
        void Unity_Combine_float(float R, float G, float B, float A, out float4 RGBA, out float3 RGB, out float2 RG)
        {
            RGBA = float4(R, G, B, A);
            RGB = float3(R, G, B);
            RG = float2(R, G);
        }
        
        void Unity_Divide_float(float A, float B, out float Out)
        {
            Out = A / B;
        }
        
        void Unity_Multiply_float4_float4(float4 A, float4 B, out float4 Out)
        {
        Out = A * B;
        }
        
        void Unity_Branch_float4(float Predicate, float4 True, float4 False, out float4 Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_TilingAndOffset_float(float2 UV, float2 Tiling, float2 Offset, out float2 Out)
        {
            Out = UV * Tiling + Offset;
        }
        
        void Unity_Branch_float2(float Predicate, float2 True, float2 False, out float2 Out)
        {
            Out = Predicate ? True : False;
        }
        
        struct Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float
        {
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_2EBA7A3B, float Boolean_7ABB9909, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float IN, out float4 XZ_2)
        {
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Property_30834f691775a0898a45b1c868520436_Out_0_Boolean = Boolean_7ABB9909;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4 = Vector4_2EBA7A3B;
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[0];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[1];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[2];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[3];
        float _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float;
        Unity_Divide_float(1, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4 = IN.uv0;
        float4 _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4 = IN.uv2;
        float4 _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4;
        Unity_Branch_float4(_Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean, _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4, _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4, _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4);
        float2 _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float);
        float2 _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float);
        float2 _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4.xy), _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2, _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2, _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2);
        float2 _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2;
        Unity_Branch_float2(_Property_30834f691775a0898a45b1c868520436_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2, _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2);
        UnitySamplerState _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2) );
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        XZ_2 = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4;
        }
        
        void Unity_Multiply_float_float(float A, float B, out float Out)
        {
            Out = A * B;
        }
        
        void Unity_Add_float(float A, float B, out float Out)
        {
            Out = A + B;
        }
        
        void Unity_Saturate_float(float In, out float Out)
        {
            Out = saturate(In);
        }
        
        void Unity_Absolute_float(float In, out float Out)
        {
            Out = abs(In);
        }
        
        void Unity_SquareRoot_float4(float4 In, out float4 Out)
        {
            Out = sqrt(In);
        }
        
        void Unity_Sign_float(float In, out float Out)
        {
            Out = sign(In);
        }
        
        void Unity_Ceiling_float(float In, out float Out)
        {
            Out = ceil(In);
        }
        
        void Unity_Lerp_float4(float4 A, float4 B, float4 T, out float4 Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float
        {
        };
        
        void SG_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float(float4 Color_9AA111D3, float Vector1_FBE622A2, float Vector1_8C15C351, Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float IN, out float3 OutVector4_1)
        {
        float4 _Property_012510d774fb7f8b860f5270dca4500f_Out_0_Vector4 = Color_9AA111D3;
        float4 _SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4;
        Unity_SquareRoot_float4(_Property_012510d774fb7f8b860f5270dca4500f_Out_0_Vector4, _SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4);
        float _Property_a00e29241d12f983b30177515b367ec9_Out_0_Float = Vector1_FBE622A2;
        float _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float;
        Unity_Sign_float(_Property_a00e29241d12f983b30177515b367ec9_Out_0_Float, _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float);
        float _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float;
        Unity_Add_float(_Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float, 1, _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float);
        float _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float;
        Unity_Multiply_float_float(_Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float, 0.5, _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float);
        float _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float;
        Unity_Ceiling_float(_Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float);
        float _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float = Vector1_8C15C351;
        float _Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float;
        Unity_Multiply_float_float(_Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float);
        float4 _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4;
        Unity_Lerp_float4(_SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4, (_Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float.xxxx), (_Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float.xxxx), _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4);
        float4 _Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4, _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4, _Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4);
        OutVector4_1 = (_Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4.xyz);
        }
        
        void Unity_Clamp_float(float In, float Min, float Max, out float Out)
        {
            Out = clamp(In, Min, Max);
        }
        
        void Unity_Multiply_float2_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A * B;
        }
        
        void Unity_Add_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A + B;
        }
        
        void Unity_DotProduct_float2(float2 A, float2 B, out float Out)
        {
            Out = dot(A, B);
        }
        
        void Unity_OneMinus_float(float In, out float Out)
        {
            Out = 1 - In;
        }
        
        void Unity_SquareRoot_float(float In, out float Out)
        {
            Out = sqrt(In);
        }
        
        void Unity_Sign_float3(float3 In, out float3 Out)
        {
            Out = sign(In);
        }
        
        void Unity_Normalize_float3(float3 In, out float3 Out)
        {
            Out = normalize(In);
        }
        
        void Unity_Branch_float3(float Predicate, float3 True, float3 False, out float3 Out)
        {
            Out = Predicate ? True : False;
        }
        
        struct Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float
        {
        float3 WorldSpaceNormal;
        float3 WorldSpaceTangent;
        float3 WorldSpaceBiTangent;
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_82674548, float Boolean_9FF42DF6, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float IN, out float4 XZ_2)
        {
        float _Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean = Boolean_9FF42DF6;
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4 = Vector4_82674548;
        float _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[0];
        float _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[1];
        float _Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[2];
        float _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[3];
        float _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float;
        Unity_Divide_float(1, _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4 = IN.uv0;
        float4 _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4 = IN.uv2;
        float4 _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4;
        Unity_Branch_float4(_Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean, _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4, _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4, _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4);
        float2 _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float);
        float2 _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float, _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float);
        float2 _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4.xy), _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2, _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2, _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2);
        float2 _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2;
        Unity_Branch_float2(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2, _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2);
        UnitySamplerState _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2) );
        _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.rgb = UnpackNormal(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4);
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        float2 _Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2 = float2(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float, _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float);
        float3 _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3;
        Unity_Sign_float3(IN.WorldSpaceNormal, _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3);
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_R_1_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[0];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[1];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_B_3_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[2];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_A_4_Float = 0;
        float2 _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2 = float2(_Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float, 1);
        float2 _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2;
        Unity_Multiply_float2_float2(_Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2, _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2, _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2);
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float = IN.WorldSpaceNormal[0];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float = IN.WorldSpaceNormal[1];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float = IN.WorldSpaceNormal[2];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_A_4_Float = 0;
        float2 _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2 = float2(_Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float);
        float2 _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2;
        Unity_Add_float2(_Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2, _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2, _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2);
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[0];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[1];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_B_3_Float = 0;
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_A_4_Float = 0;
        float _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float;
        Unity_Multiply_float_float(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float);
        float3 _Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3 = float3(_Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float, _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float);
        float3 _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3;
        {
        float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
        _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3 = TransformWorldToTangent(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
        }
        float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
        Unity_Normalize_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3);
        float3 _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3;
        Unity_Branch_float3(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3, (_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.xyz), _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3);
        XZ_2 = (float4(_Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3, 1.0));
        }
        
        void Unity_NormalStrength_float(float3 In, float Strength, out float3 Out)
        {
            Out = float3(In.rg * Strength, lerp(1, In.b, saturate(Strength)));
        }
        
        void Unity_NormalBlend_float(float3 A, float3 B, out float3 Out)
        {
            Out = SafeNormalize(float3(A.rg + B.rg, A.b * B.b));
        }
        
        void Unity_Subtract_float(float A, float B, out float Out)
        {
            Out = A - B;
        }
        
        void Unity_Power_float(float A, float B, out float Out)
        {
            Out = pow(A, B);
        }
        
        void Unity_Lerp_float3(float3 A, float3 B, float3 T, out float3 Out)
        {
            Out = lerp(A, B, T);
        }
        
        void Unity_Remap_float(float In, float2 InMinMax, float2 OutMinMax, out float Out)
        {
            Out = OutMinMax.x + (In - InMinMax.x) * (OutMinMax.y - OutMinMax.x) / (InMinMax.y - InMinMax.x);
        }
        
        void Unity_Branch_float(float Predicate, float True, float False, out float Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_Multiply_float3_float3(float3 A, float3 B, out float3 Out)
        {
            Out = A * B;
        }
        
        void Unity_Lerp_float(float A, float B, float T, out float Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float
        {
        };
        
        void SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(float Vector1_32317166, float Vector1_FBE622A2, float Vector1_8C15C351, Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float IN, out float SmoothnessOverlay_1)
        {
        float _Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float = Vector1_32317166;
        float _Property_a00e29241d12f983b30177515b367ec9_Out_0_Float = Vector1_FBE622A2;
        float _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float;
        Unity_Sign_float(_Property_a00e29241d12f983b30177515b367ec9_Out_0_Float, _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float);
        float _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float;
        Unity_Add_float(_Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float, 1, _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float);
        float _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float;
        Unity_Multiply_float_float(_Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float, 0.5, _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float);
        float _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float;
        Unity_Ceiling_float(_Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float);
        float _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float = Vector1_8C15C351;
        float _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        Unity_Lerp_float(_Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float, _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float);
        SmoothnessOverlay_1 = _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        }
        
        void Unity_Lerp_float2(float2 A, float2 B, float2 T, out float2 Out)
        {
            Out = lerp(A, B, T);
        }
        
            // Graph Vertex
            // GraphVertex: <None>
        
            // Graph Pixel
            struct SurfaceDescription
        {
            float3 BaseColor;
            float3 Emission;
            float Alpha;
            float3 BentNormal;
            float Smoothness;
            float Occlusion;
            float3 NormalTS;
            float3 Specular;
        };
        
        SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
        {
            SurfaceDescription surface = (SurfaceDescription)0;
            UnityTexture2D _Property_9c271219f828108f958217e55cd6dc1d_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseColorMap);
            float4 _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4 = _BaseTilingOffset;
            float _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean = _BaseUsePlanarUV;
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_f392575634df5b86b63ff6e287282b30;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.uv0 = IN.uv0;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.uv2 = IN.uv2;
            float4 _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_9c271219f828108f958217e55cd6dc1d_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_f392575634df5b86b63ff6e287282b30, _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4);
            float4 _Property_4f676fce92c9378db3c3b92ae77fbff9_Out_0_Vector4 = _BaseColor;
            float4 _Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4, _Property_4f676fce92c9378db3c3b92ae77fbff9_Out_0_Vector4, _Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4);
            UnityTexture2D _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_DetailMap);
            float4 _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4 = _DetailTilingOffset;
            float _Split_9fa8573190399e8da2a843a4cab68164_R_1_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[0];
            float _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[1];
            float _Split_9fa8573190399e8da2a843a4cab68164_B_3_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[2];
            float _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[3];
            float2 _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_R_1_Float, _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float);
            float2 _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_B_3_Float, _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float);
            float2 _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2;
            Unity_TilingAndOffset_float(IN.uv0.xy, _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2, _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2, _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2);
            float4 _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.tex, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.samplerstate, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.GetTransformedUV(_TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2) );
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_R_4_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.r;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.g;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.b;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.a;
            float _Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_R_4_Float, 2, _Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float);
            float _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float;
            Unity_Add_float(_Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float, -1, _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float);
            float _Property_7d68da97cd169d8e8649255aec16158a_Out_0_Float = _DetailAlbedoScale;
            float _Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float;
            Unity_Multiply_float_float(_Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float, _Property_7d68da97cd169d8e8649255aec16158a_Out_0_Float, _Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float);
            float _Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float;
            Unity_Saturate_float(_Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float, _Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float);
            float _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float;
            Unity_Absolute_float(_Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float, _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float);
            Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83;
            float3 _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3;
            SG_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float(_Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4, _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float, _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float, _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83, _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3);
            UnityTexture2D _Property_5ca167b35599f78ab3722ec527327841_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverBaseColorMap);
            float4 _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4 = _CoverTilingOffset;
            float _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean = _CoverUsePlanarUV;
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_ad1db3524021ac898447cb6f6daa4180;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.uv0 = IN.uv0;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.uv2 = IN.uv2;
            float4 _PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_5ca167b35599f78ab3722ec527327841_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_ad1db3524021ac898447cb6f6daa4180, _PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4);
            float4 _Property_b34e94e0b1171480b3e35ff7f4793d7c_Out_0_Vector4 = _CoverBaseColor;
            float4 _Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4, _Property_b34e94e0b1171480b3e35ff7f4793d7c_Out_0_Vector4, _Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4);
            float _Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean = _USEDYNAMICCOVERTSTATICMASKF;
            UnityTexture2D _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskA);
            float4 _UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4 = IN.uv0;
            float4 _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.tex, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.samplerstate, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.GetTransformedUV((_UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4.xy)) );
            float _SampleTexture2D_79111e5af287b084822e60563309a632_R_4_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.r;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_G_5_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.g;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_B_6_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.b;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.a;
            float _Property_c022d8255938838aa73170f05c226269_Out_0_Float = _CoverMaskPower;
            float _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float, _Property_c022d8255938838aa73170f05c226269_Out_0_Float, _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float);
            float _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float;
            Unity_Clamp_float(_Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float, 0, 1, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float);
            float2 _Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2 = float2(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float, _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float);
            float2 _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2, float2(2, 2), _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2);
            float2 _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2;
            Unity_Add_float2(_Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2, float2(-1, -1), _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2);
            float _Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float = _DetailNormalScale;
            float2 _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2, (_Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float.xx), _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2);
            float _Split_492de324af96c482b50573c79f9fb6a0_R_1_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[0];
            float _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[1];
            float _Split_492de324af96c482b50573c79f9fb6a0_B_3_Float = 0;
            float _Split_492de324af96c482b50573c79f9fb6a0_A_4_Float = 0;
            float _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float;
            Unity_DotProduct_float2(_Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float);
            float _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float;
            Unity_Saturate_float(_DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float, _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float);
            float _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float;
            Unity_OneMinus_float(_Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float, _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float);
            float _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float;
            Unity_SquareRoot_float(_OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            float3 _Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3 = float3(_Split_492de324af96c482b50573c79f9fb6a0_R_1_Float, _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            UnityTexture2D _Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseNormalMap);
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv0 = IN.uv0;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv2 = IN.uv2;
            float4 _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4);
            float _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float = _BaseNormalScale;
            float3 _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4.xyz), _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3);
            float3 _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3;
            Unity_NormalBlend_float(_Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3, _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3);
            UnityTexture2D _Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverNormalMap);
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv0 = IN.uv0;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv2 = IN.uv2;
            float4 _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4);
            float _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float = _CoverNormalBlendHardness;
            float3 _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3);
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_R_1_Float = IN.WorldSpaceNormal[0];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float = IN.WorldSpaceNormal[1];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_B_3_Float = IN.WorldSpaceNormal[2];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_A_4_Float = 0;
            float _Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float = _Cover_Amount;
            float _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float = _Cover_Amount_Grow_Speed;
            float _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float;
            Unity_Subtract_float(4, _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float);
            float _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float;
            Unity_Divide_float(_Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float);
            float _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float;
            Unity_Absolute_float(_Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float, _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float);
            float _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float;
            Unity_Power_float(_Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float);
            float _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float;
            Unity_Clamp_float(_Power_c11fc5724f830485a9c4df249a854571_Out_2_Float, 0, 2, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float);
            float _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float;
            Unity_Multiply_float_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float);
            float _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float;
            Unity_Saturate_float(_Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float, _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float);
            float _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float;
            Unity_Clamp_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, 0, 0.9999, _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float);
            float _Property_89633a46f34e1f8996557a9178d78478_Out_0_Float = _Cover_Max_Angle;
            float _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float;
            Unity_Divide_float(_Property_89633a46f34e1f8996557a9178d78478_Out_0_Float, 45, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float);
            float _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float;
            Unity_OneMinus_float(_Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float);
            float _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float;
            Unity_Subtract_float(_Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float, _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float);
            float _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float;
            Unity_Clamp_float(_Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float, 0, 2, _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
            float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
            Unity_Divide_float(1, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float);
            float _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_67dcc607b6da848097d3412324311616_Out_3_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float, _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float);
            float _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float;
            Unity_Absolute_float(_Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float, _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float);
            float _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float = _CoverHardness;
            float _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float;
            Unity_Power_float(_Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float);
            float _Property_f8753bb05d835089bda460d144f93c48_Out_0_Float = _Cover_Min_Height;
            float _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float;
            Unity_OneMinus_float(_Property_f8753bb05d835089bda460d144f93c48_Out_0_Float, _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float);
            float _Split_c66e04f85a2a7f87884040056599e65d_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
            float _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
            float _Split_c66e04f85a2a7f87884040056599e65d_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
            float _Split_c66e04f85a2a7f87884040056599e65d_A_4_Float = 0;
            float _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float;
            Unity_Add_float(_OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float, _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float);
            float _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, 1, _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
            float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
            Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, 0, 1, _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float);
            float _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float = _Cover_Min_Height_Blending;
            float _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float, _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float);
            float _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float;
            Unity_Divide_float(_Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float);
            float _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float;
            Unity_OneMinus_float(_Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float, _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float);
            float _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float;
            Unity_Add_float(_OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float, -0.5, _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
            float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
            Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, 0, 1, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float);
            float _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float;
            Unity_Add_float(_Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float, _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float);
            float _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float;
            Unity_Clamp_float(_Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float, 0, 1, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float);
            float _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float;
            Unity_Multiply_float_float(_Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float);
            float _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float;
            Unity_Multiply_float_float(_Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float);
            float3 _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3, (_Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float.xxx), _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3);
            float3 _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3;
            {
                float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
                _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3 = TransformTangentToWorldDir(_Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3.xyz, tangentTransform, false).xyz;
            }
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_R_1_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[0];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[1];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_B_3_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[2];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_A_4_Float = 0;
            float _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float;
            Unity_Multiply_float_float(_Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float);
            float _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float);
            float _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float);
            float _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float, _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float);
            UnityTexture2D _Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_36e64648ad8a6a849bc794b8693519da;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv0 = IN.uv0;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv2 = IN.uv2;
            float4 _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_36e64648ad8a6a849bc794b8693519da, _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4);
            float _Split_198ec92f3e753d8a9ad50db7d6527324_R_1_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[0];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[1];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[2];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[3];
            float _Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float = _CoverHeightMapMin;
            float _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float = _CoverHeightMapMax;
            float2 _Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2 = float2(_Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float, _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float);
            float _Property_277f22c36084858981418fa95133a562_Out_0_Float = _CoverHeightMapOffset;
            float2 _Add_53997153562831859cc7b582f3068877_Out_2_Vector2;
            Unity_Add_float2(_Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2, (_Property_277f22c36084858981418fa95133a562_Out_0_Float.xx), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2);
            float _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float, float2 (0, 1), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float);
            float _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float, _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float);
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float = IN.VertexColor[0];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float = IN.VertexColor[1];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_B_3_Float = IN.VertexColor[2];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_A_4_Float = IN.VertexColor[3];
            float _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float, _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float, _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float);
            float _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float;
            Unity_Saturate_float(_Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float);
            float _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float);
            float _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float;
            Unity_Branch_float(_Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float);
            float3 _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3;
            Unity_Lerp_float3(_BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3, (_Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4.xyz), (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxx), _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3);
            float4 _Property_e687576468764d85b6b46dca96d8a8e3_Out_0_Vector4 = _WetColor;
            float3 _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3;
            Unity_Multiply_float3_float3((_Property_e687576468764d85b6b46dca96d8a8e3_Out_0_Vector4.xyz), _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3, _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3);
            float _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float;
            Unity_OneMinus_float(_Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float);
            float3 _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
            Unity_Lerp_float3(_Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3, _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3, (_OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float.xxx), _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3);
            UnityTexture2D _Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv0 = IN.uv0;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv2 = IN.uv2;
            float4 _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4);
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_R_1_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[0];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[1];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_B_3_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[2];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[3];
            float _Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float = _BaseAORemapMin;
            float _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float = _BaseAORemapMax;
            float2 _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2 = float2(_Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float, _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float);
            float _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float, float2 (0, 1), _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2, _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float);
            float _Property_e353baf414594b8882fb914562e81165_Out_0_Float = _BaseSmoothnessRemapMin;
            float _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float = _BaseSmoothnessRemapMax;
            float2 _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2 = float2(_Property_e353baf414594b8882fb914562e81165_Out_0_Float, _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float);
            float _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float, float2 (0, 1), _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2, _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float);
            float _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float, 2, _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float);
            float _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float;
            Unity_Add_float(_Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float, -1, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float);
            float _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float = _DetailSmoothnessScale;
            float _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float;
            Unity_Multiply_float_float(_Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float, _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float);
            float _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float;
            Unity_Saturate_float(_Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float, _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float);
            float _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float;
            Unity_Absolute_float(_Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float);
            Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da;
            float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float;
            SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(_Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float);
            float _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float;
            Unity_Saturate_float(_BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float2 _Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2 = float2(_Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float _Property_5e08cfb127183a8993376f9087501eee_Out_0_Float = _CoverAORemapMin;
            float _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float = _CoverAORemapMax;
            float2 _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2 = float2(_Property_5e08cfb127183a8993376f9087501eee_Out_0_Float, _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float);
            float _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float, float2 (0, 1), _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2, _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float);
            float _Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float = _CoverSmoothnessRemapMin;
            float _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float = _CoverSmoothnessRemapMax;
            float2 _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2 = float2(_Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float, _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float);
            float _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float, float2 (0, 1), _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2 = float2(_Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2;
            Unity_Lerp_float2(_Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2, _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xx), _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2);
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_R_1_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[0];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[1];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_B_3_Float = 0;
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_A_4_Float = 0;
            float _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float = _WetSmoothness;
            float _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            Unity_Lerp_float(_Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float, _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float, _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float);
            float _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float = _CoverNormalScale;
            float3 _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3);
            float3 _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxx), _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3);
            UnityTexture2D _Property_f617479b11216b84b89956263f8d3c08_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_SpecularColorMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.uv0 = IN.uv0;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.uv2 = IN.uv2;
            float4 _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_f617479b11216b84b89956263f8d3c08_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d, _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4);
            float4 _Property_112303b9c27a1284b20f0a5c49fb436a_Out_0_Vector4 = _SpecularColor;
            float4 _Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4, _Property_112303b9c27a1284b20f0a5c49fb436a_Out_0_Vector4, _Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4);
            UnityTexture2D _Property_0c768f7d1094a8878d837f25970dbd49_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverSpecularColorMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_4b88db16993b7d84a6c9e021b5992a38;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.uv0 = IN.uv0;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.uv2 = IN.uv2;
            float4 _PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_0c768f7d1094a8878d837f25970dbd49_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_4b88db16993b7d84a6c9e021b5992a38, _PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4);
            float4 _Property_51d3c44a7110108d9e8c9a3acf54125f_Out_0_Vector4 = _CoverSpecularColor;
            float4 _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4, _Property_51d3c44a7110108d9e8c9a3acf54125f_Out_0_Vector4, _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4);
            float4 _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4;
            Unity_Lerp_float4(_Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4, _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxxx), _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4);
            surface.BaseColor = _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
            surface.Emission = float3(0, 0, 0);
            surface.Alpha = 1;
            surface.BentNormal = IN.TangentSpaceNormal;
            surface.Smoothness = _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            surface.Occlusion = _Split_beb57fcf05cbb6809f536625bac5fcbc_R_1_Float;
            surface.NormalTS = _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            surface.Specular = (_Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4.xyz);
            return surface;
        }
        
            // --------------------------------------------------
            // Build Graph Inputs
            #ifdef HAVE_VFX_MODIFICATION
            #define VFX_SRP_ATTRIBUTES AttributesMesh
            #define VaryingsMeshType VaryingsMeshToPS
            #define VFX_SRP_VARYINGS VaryingsMeshType
            #define VFX_SRP_SURFACE_INPUTS FragInputs
            #endif
            SurfaceDescriptionInputs FragInputsToSurfaceDescriptionInputs(FragInputs input, float3 viewWS)
        {
            SurfaceDescriptionInputs output;
            ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
        
            output.WorldSpaceNormal =                           normalize(input.tangentToWorld[2].xyz);
            #if defined(SHADER_STAGE_RAY_TRACING)
            #else
            #endif
            output.TangentSpaceNormal =                         float3(0.0f, 0.0f, 1.0f);
            output.WorldSpaceTangent =                          input.tangentToWorld[0].xyz;
            output.WorldSpaceBiTangent =                        input.tangentToWorld[1].xyz;
            output.AbsoluteWorldSpacePosition =                 GetAbsolutePositionWS(input.positionRWS);
        
        #if UNITY_UV_STARTS_AT_TOP
        #else
        #endif
        
        
            output.uv0 =                                        input.texCoord0;
            output.uv2 =                                        input.texCoord2;
            output.VertexColor =                                input.color;
        
            // splice point to copy frag inputs custom interpolator pack into the SDI
            /* WARNING: $splice Could not find named fragment 'CustomInterpolatorCopyToSDI' */
        
            return output;
        }
        
            // --------------------------------------------------
            // Build Surface Data (Specific Material)
        
        void ApplyDecalToSurfaceDataNoNormal(DecalSurfaceData decalSurfaceData, inout SurfaceData surfaceData);
        
        void ApplyDecalAndGetNormal(FragInputs fragInputs, PositionInputs posInput, SurfaceDescription surfaceDescription,
            inout SurfaceData surfaceData)
        {
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
        #ifdef DECAL_NORMAL_BLENDING
            // SG nodes don't ouptut surface gradients, so if decals require surf grad blending, we have to convert
            // the normal to gradient before applying the decal. We then have to resolve the gradient back to world space
            float3 normalTS;
        
            normalTS = SurfaceGradientFromTangentSpaceNormalAndFromTBN(surfaceDescription.NormalTS,
            fragInputs.tangentToWorld[0], fragInputs.tangentToWorld[1]);
        
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, fragInputs.tangentToWorld[2], normalTS);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        
            GetNormalWS_SG(fragInputs, normalTS, surfaceData.normalWS, doubleSidedConstants);
        #else
            // normal delivered to master node
            GetNormalWS(fragInputs, surfaceDescription.NormalTS, surfaceData.normalWS, doubleSidedConstants);
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                // Both uses and modifies 'surfaceData.normalWS'.
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, surfaceData.normalWS.xyz);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        #endif
        }
        void BuildSurfaceData(FragInputs fragInputs, inout SurfaceDescription surfaceDescription, float3 V, PositionInputs posInput, out SurfaceData surfaceData, out float3 bentNormalWS)
        {
            ZERO_INITIALIZE(SurfaceData, surfaceData);
        
            // specularOcclusion need to be init ahead of decal to quiet the compiler that modify the SurfaceData struct
            // however specularOcclusion can come from the graph, so need to be init here so it can be override.
            surfaceData.specularOcclusion = 1.0;
        
            surfaceData.baseColor =                 surfaceDescription.BaseColor;
            surfaceData.perceptualSmoothness =      surfaceDescription.Smoothness;
            surfaceData.ambientOcclusion =          surfaceDescription.Occlusion;
            surfaceData.specularColor =             surfaceDescription.Specular;
        
            #if defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE) || defined(_REFRACTION_THIN)
                if (_EnableSSRefraction)
                {
        
                    surfaceData.transmittanceMask = (1.0 - surfaceDescription.Alpha);
                    surfaceDescription.Alpha = 1.0;
                }
                else
                {
                    surfaceData.ior = 1.0;
                    surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                    surfaceData.atDistance = 1.0;
                    surfaceData.transmittanceMask = 0.0;
                    surfaceDescription.Alpha = 1.0;
                }
            #else
                surfaceData.ior = 1.0;
                surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                surfaceData.atDistance = 1.0;
                surfaceData.transmittanceMask = 0.0;
            #endif
        
            // These static material feature allow compile time optimization
            surfaceData.materialFeatures = MATERIALFEATUREFLAGS_LIT_STANDARD;
            #ifdef _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SUBSURFACE_SCATTERING;
            #endif
        
            #ifdef _MATERIAL_FEATURE_TRANSMISSION
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
            #endif
        
            #ifdef _MATERIAL_FEATURE_ANISOTROPY
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_ANISOTROPY;
        
                // Initialize the normal to something non-zero to avoid a div-zero warning for anisotropy.
                surfaceData.normalWS = float3(0, 1, 0);
            #endif
        
            #ifdef _MATERIAL_FEATURE_IRIDESCENCE
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_IRIDESCENCE;
            #endif
        
            #ifdef _MATERIAL_FEATURE_SPECULAR_COLOR
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SPECULAR_COLOR;
            #endif
        
            #ifdef _MATERIAL_FEATURE_CLEAR_COAT
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_CLEAR_COAT;
            #endif
        
            #if defined (_MATERIAL_FEATURE_SPECULAR_COLOR) && defined (_ENERGY_CONSERVING_SPECULAR)
                // Require to have setup baseColor
                // Reproduce the energy conservation done in legacy Unity. Not ideal but better for compatibility and users can unchek it
                surfaceData.baseColor *= (1.0 - Max3(surfaceData.specularColor.r, surfaceData.specularColor.g, surfaceData.specularColor.b));
            #endif
        
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
            ApplyDecalAndGetNormal(fragInputs, posInput, surfaceDescription, surfaceData);
        
            surfaceData.geomNormalWS = fragInputs.tangentToWorld[2];
        
            surfaceData.tangentWS = normalize(fragInputs.tangentToWorld[0].xyz);    // The tangent is not normalize in tangentToWorld for mikkt. TODO: Check if it expected that we normalize with Morten. Tag: SURFACE_GRADIENT
        
        
            bentNormalWS = surfaceData.normalWS;
        
            surfaceData.tangentWS = Orthonormalize(surfaceData.tangentWS, surfaceData.normalWS);
        
            #ifdef DEBUG_DISPLAY
                if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
                {
                    // TODO: need to update mip info
                    surfaceData.metallic = 0;
                }
        
                // We need to call ApplyDebugToSurfaceData after filling the surfarcedata and before filling builtinData
                // as it can modify attribute use for static lighting
                ApplyDebugToSurfaceData(fragInputs.tangentToWorld, surfaceData);
            #endif
        
            // By default we use the ambient occlusion with Tri-ace trick (apply outside) for specular occlusion.
            // If user provide bent normal then we process a better term
            #if defined(_SPECULAR_OCCLUSION_CUSTOM)
                // Just use the value passed through via the slot (not active otherwise)
            #elif defined(_SPECULAR_OCCLUSION_FROM_AO_BENT_NORMAL)
                // If we have bent normal and ambient occlusion, process a specular occlusion
                surfaceData.specularOcclusion = GetSpecularOcclusionFromBentAO(V, bentNormalWS, surfaceData.normalWS, surfaceData.ambientOcclusion, PerceptualSmoothnessToPerceptualRoughness(surfaceData.perceptualSmoothness));
            #elif defined(_AMBIENT_OCCLUSION) && defined(_SPECULAR_OCCLUSION_FROM_AO)
                surfaceData.specularOcclusion = GetSpecularOcclusionFromAmbientOcclusion(ClampNdotV(dot(surfaceData.normalWS, V)), surfaceData.ambientOcclusion, PerceptualSmoothnessToRoughness(surfaceData.perceptualSmoothness));
            #endif
        
            #if defined(_ENABLE_GEOMETRIC_SPECULAR_AA) && !defined(SHADER_STAGE_RAY_TRACING)
                surfaceData.perceptualSmoothness = GeometricNormalFiltering(surfaceData.perceptualSmoothness, fragInputs.tangentToWorld[2], surfaceDescription.SpecularAAScreenSpaceVariance, surfaceDescription.SpecularAAThreshold);
            #endif
        }
        
            // --------------------------------------------------
            // Get Surface And BuiltinData
        
            void GetSurfaceAndBuiltinData(FragInputs fragInputs, float3 V, inout PositionInputs posInput, out SurfaceData surfaceData, out BuiltinData builtinData RAY_TRACING_OPTIONAL_PARAMETERS)
            {
                // Don't dither if displaced tessellation (we're fading out the displacement instead to match the next LOD)
                #if !defined(SHADER_STAGE_RAY_TRACING) && !defined(_TESSELLATION_DISPLACEMENT)
                #ifdef LOD_FADE_CROSSFADE // enable dithering LOD transition if user select CrossFade transition in LOD group
                LODDitheringTransition(ComputeFadeMaskSeed(V, posInput.positionSS), unity_LODFade.x);
                #endif
                #endif
        
                #ifndef SHADER_UNLIT
                #ifdef _DOUBLESIDED_ON
                    float3 doubleSidedConstants = _DoubleSidedConstants.xyz;
                #else
                    float3 doubleSidedConstants = float3(1.0, 1.0, 1.0);
                #endif
        
                ApplyDoubleSidedFlipOrMirror(fragInputs, doubleSidedConstants); // Apply double sided flip on the vertex normal
                #endif // SHADER_UNLIT
        
                SurfaceDescriptionInputs surfaceDescriptionInputs = FragInputsToSurfaceDescriptionInputs(fragInputs, V);
        
                #if defined(HAVE_VFX_MODIFICATION)
                GraphProperties properties;
                ZERO_INITIALIZE(GraphProperties, properties);
        
                GetElementPixelProperties(fragInputs, properties);
        
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs, properties);
                #else
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs);
                #endif
        
                // Perform alpha test very early to save performance (a killed pixel will not sample textures)
                // TODO: split graph evaluation to grab just alpha dependencies first? tricky..
                #ifdef _ALPHATEST_ON
                    float alphaCutoff = surfaceDescription.AlphaClipThreshold;
                    #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
                    // The TransparentDepthPrepass is also used with SSR transparent.
                    // If an artists enable transaprent SSR but not the TransparentDepthPrepass itself, then we use AlphaClipThreshold
                    // otherwise if TransparentDepthPrepass is enabled we use AlphaClipThresholdDepthPrepass
                    #elif SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_POSTPASS
                    // DepthPostpass always use its own alpha threshold
                    alphaCutoff = surfaceDescription.AlphaClipThresholdDepthPostpass;
                    #elif (SHADERPASS == SHADERPASS_SHADOWS) || (SHADERPASS == SHADERPASS_RAYTRACING_VISIBILITY)
                    // If use shadow threshold isn't enable we don't allow any test
                    #endif
        
                    GENERIC_ALPHA_TEST(surfaceDescription.Alpha, alphaCutoff);
                #endif
        
                #if !defined(SHADER_STAGE_RAY_TRACING) && _DEPTHOFFSET_ON
                ApplyDepthOffsetPositionInput(V, surfaceDescription.DepthOffset, GetViewForwardDir(), GetWorldToHClipMatrix(), posInput);
                #endif
        
                #ifndef SHADER_UNLIT
                float3 bentNormalWS;
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData, bentNormalWS);
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD1
                    float4 lightmapTexCoord1 = fragInputs.texCoord1;
                #else
                    float4 lightmapTexCoord1 = float4(0,0,0,0);
                #endif
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD2
                    float4 lightmapTexCoord2 = fragInputs.texCoord2;
                #else
                    float4 lightmapTexCoord2 = float4(0,0,0,0);
                #endif
        
                // Builtin Data
                // For back lighting we use the oposite vertex normal
                InitBuiltinData(posInput, surfaceDescription.Alpha, bentNormalWS, -fragInputs.tangentToWorld[2], lightmapTexCoord1, lightmapTexCoord2, builtinData);
        
                #else
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData);
        
                ZERO_BUILTIN_INITIALIZE(builtinData); // No call to InitBuiltinData as we don't have any lighting
                builtinData.opacity = surfaceDescription.Alpha;
        
                #if defined(DEBUG_DISPLAY)
                    // Light Layers are currently not used for the Unlit shader (because it is not lit)
                    // But Unlit objects do cast shadows according to their rendering layer mask, which is what we want to
                    // display in the light layers visualization mode, therefore we need the renderingLayers
                    builtinData.renderingLayers = GetMeshRenderingLightLayer();
                #endif
        
                #endif // SHADER_UNLIT
        
                #ifdef _ALPHATEST_ON
                    // Used for sharpening by alpha to mask - Alpha to covertage is only used with depth only and forward pass (no shadow pass, no transparent pass)
                    builtinData.alphaClipTreshold = alphaCutoff;
                #endif
        
                // override sampleBakedGI - not used by Unlit
        
                builtinData.emissiveColor = surfaceDescription.Emission;
        
                // Note this will not fully work on transparent surfaces (can check with _SURFACE_TYPE_TRANSPARENT define)
                // We will always overwrite vt feeback with the nearest. So behind transparent surfaces vt will not be resolved
                // This is a limitation of the current MRT approach.
                #ifdef UNITY_VIRTUAL_TEXTURING
                #endif
        
                #if _DEPTHOFFSET_ON
                builtinData.depthOffset = surfaceDescription.DepthOffset;
                #endif
        
                // TODO: We should generate distortion / distortionBlur for non distortion pass
                #if (SHADERPASS == SHADERPASS_DISTORTION)
                builtinData.distortion = surfaceDescription.Distortion;
                builtinData.distortionBlur = surfaceDescription.DistortionBlur;
                #endif
        
                #ifndef SHADER_UNLIT
                // PostInitBuiltinData call ApplyDebugToBuiltinData
                PostInitBuiltinData(V, posInput, surfaceData, builtinData);
                #else
                ApplyDebugToBuiltinData(builtinData);
                #endif
        
                RAY_TRACING_OPTIONAL_ALPHA_TEST_PASS
            }
        
            // --------------------------------------------------
            // Main
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassRaytracingGBuffer.hlsl"
        
            // --------------------------------------------------
            // Visual Effect Vertex Invocations
        
        	#ifdef HAVE_VFX_MODIFICATION
        	#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
        	#endif
        
            ENDHLSL
        }
        Pass
        {
            Name "DebugDXR"
            Tags
            {
                "LightMode" = "DebugDXR"
            }
        
            // Debug
            // <None>
        
            // --------------------------------------------------
            // Pass
        
            HLSLPROGRAM
        
            // Pragmas
            #pragma target 5.0
        #pragma raytracing surface_shader
        #pragma only_renderers d3d11 xboxseries ps5
        
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/FragInputs.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs.hlsl"
        
            // Includes
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingMacros.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/ShaderVariablesRaytracing.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingIntersection.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RayTracingCommon.hlsl"
        	// GraphIncludes: <None>
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassRayTracingDebug.hlsl"
        
            ENDHLSL
        }
        Pass
        {
            Name "PathTracingDXR"
            Tags
            {
                "LightMode" = "PathTracingDXR"
            }
        
            // Render State
            // RenderState: <None>
        
            // Debug
            // <None>
        
            // --------------------------------------------------
            // Pass
        
            HLSLPROGRAM
        
            // Pragmas
            #pragma target 5.0
        #pragma raytracing surface_shader
        #pragma only_renderers d3d11 xboxseries ps5
        
            // Keywords
            #pragma shader_feature _ _SURFACE_TYPE_TRANSPARENT
        #pragma shader_feature_local _ _DOUBLESIDED_ON
        #pragma shader_feature_local _ _ADD_PRECOMPUTED_VELOCITY
        #pragma shader_feature_local _ _TRANSPARENT_WRITES_MOTION_VEC
        #pragma shader_feature_local_fragment _ _ENABLE_FOG_ON_TRANSPARENT
        #pragma shader_feature_local_fragment _ _DISABLE_DECALS
        #pragma shader_feature_local_raytracing _ _DISABLE_DECALS
        #pragma shader_feature_local_fragment _ _DISABLE_SSR
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR
        #pragma shader_feature_local_fragment _ _DISABLE_SSR_TRANSPARENT
        #pragma shader_feature_local_raytracing _ _DISABLE_SSR_TRANSPARENT
        #pragma shader_feature_local _ _REFRACTION_PLANE _REFRACTION_SPHERE _REFRACTION_THIN
            // GraphKeywords: <None>
        
            // For custom interpolators to inject a substruct definition before FragInputs definition,
            // allowing for FragInputs to capture CI's intended for ShaderGraph's SDI.
            /* WARNING: $splice Could not find named fragment 'CustomInterpolatorPreInclude' */
        
        
            // TODO: Merge FragInputsVFX substruct with CustomInterpolators.
        	#ifdef HAVE_VFX_MODIFICATION
        	struct FragInputsVFX
            {
                /* WARNING: $splice Could not find named fragment 'FragInputsVFX' */
            };
            #endif
        
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/GeometricTools.hlsl" // Required by Tessellation.hlsl
        	#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Tessellation.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs.hlsl"
            #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl" // Required to be include before we include properties as it define DECLARE_STACK_CB
            // Always include Shader Graph version
            // Always include last to avoid double macros
            #include "Packages/com.unity.shadergraph/ShaderGraphLibrary/Functions.hlsl" // Need to be here for Gradient struct definition
        
            // --------------------------------------------------
            // Defines
        
            // Attribute
            #define ATTRIBUTES_NEED_NORMAL
            #define ATTRIBUTES_NEED_TANGENT
            #define ATTRIBUTES_NEED_TEXCOORD0
            #define ATTRIBUTES_NEED_TEXCOORD1
            #define ATTRIBUTES_NEED_TEXCOORD2
            #define ATTRIBUTES_NEED_COLOR
            #define VARYINGS_NEED_POSITION_WS
            #define VARYINGS_NEED_TANGENT_TO_WORLD
            #define VARYINGS_NEED_TEXCOORD0
            #define VARYINGS_NEED_TEXCOORD1
            #define VARYINGS_NEED_TEXCOORD2
            #define VARYINGS_NEED_COLOR
        
        
            //Strip down the FragInputs.hlsl (on graphics), so we can only optimize the interpolators we use.
            //if by accident something requests contents of FragInputs.hlsl, it will be caught as a compiler error
            //Frag inputs stripping is only enabled when FRAG_INPUTS_ENABLE_STRIPPING is set
            #if !defined(SHADER_STAGE_RAY_TRACING) && SHADERPASS != SHADERPASS_RAYTRACING_GBUFFER && SHADERPASS != SHADERPASS_FULL_SCREEN_DEBUG
            #define FRAG_INPUTS_ENABLE_STRIPPING
            #endif
            #define FRAG_INPUTS_USE_TEXCOORD0
            #define FRAG_INPUTS_USE_TEXCOORD1
            #define FRAG_INPUTS_USE_TEXCOORD2
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/FragInputs.hlsl"
        
        
        
            #define SHADERPASS SHADERPASS_PATH_TRACING
        #define SHADOW_LOW
        #define RAYTRACING_SHADER_GRAPH_DEFAULT
        #define HAS_LIGHTLOOP 1
        
        
            // Following two define are a workaround introduce in 10.1.x for RaytracingQualityNode
            // The ShaderGraph don't support correctly migration of this node as it serialize all the node data
            // in the json file making it impossible to uprgrade. Until we get a fix, we do a workaround here
            // to still allow us to rename the field and keyword of this node without breaking existing code.
            #ifdef RAYTRACING_SHADER_GRAPH_DEFAULT
            #define RAYTRACING_SHADER_GRAPH_HIGH
            #endif
        
            #ifdef RAYTRACING_SHADER_GRAPH_RAYTRACED
            #define RAYTRACING_SHADER_GRAPH_LOW
            #endif
            // end
        
            #ifndef SHADER_UNLIT
            // We need isFrontFace when using double sided - it is not required for unlit as in case of unlit double sided only drive the cullmode
            // VARYINGS_NEED_CULLFACE can be define by VaryingsMeshToPS.FaceSign input if a IsFrontFace Node is included in the shader graph.
            #if defined(_DOUBLESIDED_ON) && !defined(VARYINGS_NEED_CULLFACE)
                #define VARYINGS_NEED_CULLFACE
            #endif
            #endif
        
            // Specific Material Define
        #define _MATERIAL_FEATURE_SPECULAR_COLOR 1
        #define _AMBIENT_OCCLUSION 1
        #define _SPECULAR_OCCLUSION_FROM_AO 1
        #define _ENERGY_CONSERVING_SPECULAR 1
        
        // If we use subsurface scattering, enable output split lighting (for forward pass)
        #if defined(_MATERIAL_FEATURE_SUBSURFACE_SCATTERING) && !defined(_SURFACE_TYPE_TRANSPARENT)
            #define OUTPUT_SPLIT_LIGHTING
        #endif
        
        // This shader support recursive rendering for raytracing
        #define HAVE_RECURSIVE_RENDERING
        
        // In Path Tracing, For all single-sided, refractive materials, we want to force a thin refraction model
        #if (SHADERPASS == SHADERPASS_PATH_TRACING) && !defined(_DOUBLESIDED_ON) && (defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE))
            #undef  _REFRACTION_PLANE
            #undef  _REFRACTION_SPHERE
            #define _REFRACTION_THIN
        #endif
            // Caution: we can use the define SHADER_UNLIT onlit after the above Material include as it is the Unlit template who define it
        
            // To handle SSR on transparent correctly with a possibility to enable/disable it per framesettings
            // we should have a code like this:
            // if !defined(_DISABLE_SSR_TRANSPARENT)
            // pragma multi_compile _ WRITE_NORMAL_BUFFER
            // endif
            // i.e we enable the multicompile only if we can receive SSR or not, and then C# code drive
            // it based on if SSR transparent in frame settings and not (and stripper can strip it).
            // this is currently not possible with our current preprocessor as _DISABLE_SSR_TRANSPARENT is a keyword not a define
            // so instead we used this and chose to pay the extra cost of normal write even if SSR transaprent is disabled.
            // Ideally the shader graph generator should handle it but condition below can't be handle correctly for now.
            #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
            #if !defined(_DISABLE_SSR_TRANSPARENT) && !defined(SHADER_UNLIT)
                #define WRITE_NORMAL_BUFFER
            #endif
            #endif
        
            #ifndef DEBUG_DISPLAY
                // In case of opaque we don't want to perform the alpha test, it is done in depth prepass and we use depth equal for ztest (setup from UI)
                // Don't do it with debug display mode as it is possible there is no depth prepass in this case
                #if !defined(_SURFACE_TYPE_TRANSPARENT)
                    #if SHADERPASS == SHADERPASS_FORWARD
                    #define SHADERPASS_FORWARD_BYPASS_ALPHA_TEST
                    #elif SHADERPASS == SHADERPASS_GBUFFER
                    #define SHADERPASS_GBUFFER_BYPASS_ALPHA_TEST
                    #endif
                #endif
            #endif
        
            // Define _DEFERRED_CAPABLE_MATERIAL for shader capable to run in deferred pass
            #if defined(SHADER_LIT) && !defined(_SURFACE_TYPE_TRANSPARENT)
                #define _DEFERRED_CAPABLE_MATERIAL
            #endif
        
            // Translate transparent motion vector define
            #if defined(_TRANSPARENT_WRITES_MOTION_VEC) && defined(_SURFACE_TYPE_TRANSPARENT)
                #define _WRITE_TRANSPARENT_MOTION_VECTOR
            #endif
        
            // -- Graph Properties
            CBUFFER_START(UnityPerMaterial)
        float4 _BaseColor;
        float4 _BaseColorMap_TexelSize;
        float _BaseUsePlanarUV;
        float4 _BaseTilingOffset;
        float4 _SpecularColor;
        float4 _SpecularColorMap_TexelSize;
        float4 _BaseNormalMap_TexelSize;
        float _BaseNormalScale;
        float4 _BaseMaskMap_TexelSize;
        float _BaseAORemapMin;
        float _BaseAORemapMax;
        float _BaseSmoothnessRemapMin;
        float _BaseSmoothnessRemapMax;
        float _USEDYNAMICCOVERTSTATICMASKF;
        float4 _CoverMaskA_TexelSize;
        float _CoverMaskPower;
        float _Cover_Amount;
        float _Cover_Amount_Grow_Speed;
        float _Cover_Max_Angle;
        float _Cover_Min_Height;
        float _Cover_Min_Height_Blending;
        float4 _CoverBaseColor;
        float4 _CoverBaseColorMap_TexelSize;
        float _CoverUsePlanarUV;
        float4 _CoverTilingOffset;
        float4 _CoverSpecularColor;
        float4 _CoverSpecularColorMap_TexelSize;
        float4 _CoverNormalMap_TexelSize;
        float _CoverNormalScale;
        float _CoverNormalBlendHardness;
        float _CoverHardness;
        float _CoverHeightMapMin;
        float _CoverHeightMapMax;
        float _CoverHeightMapOffset;
        float4 _CoverMaskMap_TexelSize;
        float _CoverAORemapMin;
        float _CoverAORemapMax;
        float _CoverSmoothnessRemapMin;
        float _CoverSmoothnessRemapMax;
        float4 _DetailMap_TexelSize;
        float4 _DetailTilingOffset;
        float _DetailAlbedoScale;
        float _DetailNormalScale;
        float _DetailSmoothnessScale;
        float4 _WetColor;
        float _WetSmoothness;
        float4 _EmissionColor;
        float _UseShadowThreshold;
        float4 _DoubleSidedConstants;
        float _BlendMode;
        float _EnableBlendModePreserveSpecularLighting;
        float _RayTracing;
        float _RefractionModel;
        CBUFFER_END
        
        
        // Object and Global properties
        SAMPLER(SamplerState_Linear_Repeat);
        SAMPLER(SamplerState_Linear_Repeat_Aniso8);
        TEXTURE2D(_BaseColorMap);
        SAMPLER(sampler_BaseColorMap);
        TEXTURE2D(_SpecularColorMap);
        SAMPLER(sampler_SpecularColorMap);
        TEXTURE2D(_BaseNormalMap);
        SAMPLER(sampler_BaseNormalMap);
        TEXTURE2D(_BaseMaskMap);
        SAMPLER(sampler_BaseMaskMap);
        TEXTURE2D(_CoverMaskA);
        SAMPLER(sampler_CoverMaskA);
        TEXTURE2D(_CoverBaseColorMap);
        SAMPLER(sampler_CoverBaseColorMap);
        TEXTURE2D(_CoverSpecularColorMap);
        SAMPLER(sampler_CoverSpecularColorMap);
        TEXTURE2D(_CoverNormalMap);
        SAMPLER(sampler_CoverNormalMap);
        TEXTURE2D(_CoverMaskMap);
        SAMPLER(sampler_CoverMaskMap);
        TEXTURE2D(_DetailMap);
        SAMPLER(sampler_DetailMap);
        
            // -- Property used by ScenePickingPass
            #ifdef SCENEPICKINGPASS
            float4 _SelectionID;
            #endif
        
            // -- Properties used by SceneSelectionPass
            #ifdef SCENESELECTIONPASS
            int _ObjectId;
            int _PassValue;
            #endif
        
            // Includes
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingMacros.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/ShaderVariablesRaytracing.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/ShaderVariablesRaytracingLightLoop.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingIntersection.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Lighting.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitPathTracing.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/BuiltinUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialUtilities.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RayTracingCommon.hlsl"
        #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderGraphFunctions.hlsl"
        	// GraphIncludes: <None>
        
            // --------------------------------------------------
            // Structs and Packing
        
            struct SurfaceDescriptionInputs
        {
             float3 WorldSpaceNormal;
             float3 TangentSpaceNormal;
             float3 WorldSpaceTangent;
             float3 WorldSpaceBiTangent;
             float3 AbsoluteWorldSpacePosition;
             float4 uv0;
             float4 uv2;
             float4 VertexColor;
        };
        
            //Interpolator Packs: <None>
        
            // --------------------------------------------------
            // Graph
        
        
            // Graph Functions
            
        void Unity_Combine_float(float R, float G, float B, float A, out float4 RGBA, out float3 RGB, out float2 RG)
        {
            RGBA = float4(R, G, B, A);
            RGB = float3(R, G, B);
            RG = float2(R, G);
        }
        
        void Unity_Divide_float(float A, float B, out float Out)
        {
            Out = A / B;
        }
        
        void Unity_Multiply_float4_float4(float4 A, float4 B, out float4 Out)
        {
        Out = A * B;
        }
        
        void Unity_Branch_float4(float Predicate, float4 True, float4 False, out float4 Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_TilingAndOffset_float(float2 UV, float2 Tiling, float2 Offset, out float2 Out)
        {
            Out = UV * Tiling + Offset;
        }
        
        void Unity_Branch_float2(float Predicate, float2 True, float2 False, out float2 Out)
        {
            Out = Predicate ? True : False;
        }
        
        struct Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float
        {
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_2EBA7A3B, float Boolean_7ABB9909, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float IN, out float4 XZ_2)
        {
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Property_30834f691775a0898a45b1c868520436_Out_0_Boolean = Boolean_7ABB9909;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4 = Vector4_2EBA7A3B;
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[0];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[1];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[2];
        float _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float = _Property_8a66888ec47d0687ab1cb2f8abdc9da8_Out_0_Vector4[3];
        float _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float;
        Unity_Divide_float(1, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_e64179199923c58289b6aa94ea6c9178_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4 = IN.uv0;
        float4 _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4 = IN.uv2;
        float4 _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4;
        Unity_Branch_float4(_Property_f17c7bf877e64b6abdd66b1fe9f5accc_Out_0_Boolean, _UV_029e8e8198564838b9389b902a09fb22_Out_0_Vector4, _UV_7a6209af1506424fb75c81e87e42035a_Out_0_Vector4, _Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4);
        float2 _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_R_1_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_G_2_Float);
        float2 _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2 = float2(_Split_2f0f52f6ef8c0e81af0da6476402bc1f_B_3_Float, _Split_2f0f52f6ef8c0e81af0da6476402bc1f_A_4_Float);
        float2 _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_fc37bb4bf641457cbbc6e290603056ff_Out_3_Vector4.xy), _Vector2_16c15d3bbdd14b85bd48e3a6cb318af7_Out_0_Vector2, _Vector2_f8d75f54e7705083bbec539a60185577_Out_0_Vector2, _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2);
        float2 _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2;
        Unity_Branch_float2(_Property_30834f691775a0898a45b1c868520436_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_d91e2d25acd34686b562b7fe7e9d1d27_Out_3_Vector2, _Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2);
        UnitySamplerState _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_e8746b9475c94530ba35ba8019ad2ae0_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_8e5a4e8f4d52fc8aadd1f46485afc933_Out_3_Vector2) );
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        XZ_2 = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4;
        }
        
        void Unity_Multiply_float_float(float A, float B, out float Out)
        {
            Out = A * B;
        }
        
        void Unity_Add_float(float A, float B, out float Out)
        {
            Out = A + B;
        }
        
        void Unity_Saturate_float(float In, out float Out)
        {
            Out = saturate(In);
        }
        
        void Unity_Absolute_float(float In, out float Out)
        {
            Out = abs(In);
        }
        
        void Unity_SquareRoot_float4(float4 In, out float4 Out)
        {
            Out = sqrt(In);
        }
        
        void Unity_Sign_float(float In, out float Out)
        {
            Out = sign(In);
        }
        
        void Unity_Ceiling_float(float In, out float Out)
        {
            Out = ceil(In);
        }
        
        void Unity_Lerp_float4(float4 A, float4 B, float4 T, out float4 Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float
        {
        };
        
        void SG_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float(float4 Color_9AA111D3, float Vector1_FBE622A2, float Vector1_8C15C351, Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float IN, out float3 OutVector4_1)
        {
        float4 _Property_012510d774fb7f8b860f5270dca4500f_Out_0_Vector4 = Color_9AA111D3;
        float4 _SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4;
        Unity_SquareRoot_float4(_Property_012510d774fb7f8b860f5270dca4500f_Out_0_Vector4, _SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4);
        float _Property_a00e29241d12f983b30177515b367ec9_Out_0_Float = Vector1_FBE622A2;
        float _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float;
        Unity_Sign_float(_Property_a00e29241d12f983b30177515b367ec9_Out_0_Float, _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float);
        float _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float;
        Unity_Add_float(_Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float, 1, _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float);
        float _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float;
        Unity_Multiply_float_float(_Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float, 0.5, _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float);
        float _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float;
        Unity_Ceiling_float(_Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float);
        float _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float = Vector1_8C15C351;
        float _Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float;
        Unity_Multiply_float_float(_Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float);
        float4 _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4;
        Unity_Lerp_float4(_SquareRoot_c2c57d0223a9538aa9240890c3cacb0c_Out_1_Vector4, (_Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float.xxxx), (_Multiply_9564ecda5193bc8286d9ff771c9226cd_Out_2_Float.xxxx), _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4);
        float4 _Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4, _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Vector4, _Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4);
        OutVector4_1 = (_Multiply_39d1daff98488f8ea2cd794ad4f20926_Out_2_Vector4.xyz);
        }
        
        void Unity_Clamp_float(float In, float Min, float Max, out float Out)
        {
            Out = clamp(In, Min, Max);
        }
        
        void Unity_Multiply_float2_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A * B;
        }
        
        void Unity_Add_float2(float2 A, float2 B, out float2 Out)
        {
            Out = A + B;
        }
        
        void Unity_DotProduct_float2(float2 A, float2 B, out float Out)
        {
            Out = dot(A, B);
        }
        
        void Unity_OneMinus_float(float In, out float Out)
        {
            Out = 1 - In;
        }
        
        void Unity_SquareRoot_float(float In, out float Out)
        {
            Out = sqrt(In);
        }
        
        void Unity_Sign_float3(float3 In, out float3 Out)
        {
            Out = sign(In);
        }
        
        void Unity_Normalize_float3(float3 In, out float3 Out)
        {
            Out = normalize(In);
        }
        
        void Unity_Branch_float3(float Predicate, float3 True, float3 False, out float3 Out)
        {
            Out = Predicate ? True : False;
        }
        
        struct Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float
        {
        float3 WorldSpaceNormal;
        float3 WorldSpaceTangent;
        float3 WorldSpaceBiTangent;
        float3 AbsoluteWorldSpacePosition;
        half4 uv0;
        half4 uv2;
        };
        
        void SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(UnityTexture2D Texture2D_80A3D28F, float4 Vector4_82674548, float Boolean_9FF42DF6, UnitySamplerState _SamplerState, float Boolean_5ddfe6daabcc4715a44b5f34fc19becb, Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float IN, out float4 XZ_2)
        {
        float _Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean = Boolean_9FF42DF6;
        UnityTexture2D _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D = Texture2D_80A3D28F;
        float _Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
        float _Split_89ed63cb625cb3878c183d0b71c03400_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
        float _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
        float _Split_89ed63cb625cb3878c183d0b71c03400_A_4_Float = 0;
        float4 _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4;
        float3 _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3;
        float2 _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2;
        Unity_Combine_float(_Split_89ed63cb625cb3878c183d0b71c03400_R_1_Float, _Split_89ed63cb625cb3878c183d0b71c03400_B_3_Float, 0, 0, _Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, _Combine_cf2d04ff119ad88493f6460431765cbb_RGB_5_Vector3, _Combine_cf2d04ff119ad88493f6460431765cbb_RG_6_Vector2);
        float4 _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4 = Vector4_82674548;
        float _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[0];
        float _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[1];
        float _Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[2];
        float _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float = _Property_3fa1d6f912feb481ba60f2e55e62e746_Out_0_Vector4[3];
        float _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float;
        Unity_Divide_float(1, _Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float);
        float4 _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4;
        Unity_Multiply_float4_float4(_Combine_cf2d04ff119ad88493f6460431765cbb_RGBA_4_Vector4, (_Divide_c36b770dfaa0bb8f85ab27da5fd794f0_Out_2_Float.xxxx), _Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4);
        float _Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean = Boolean_5ddfe6daabcc4715a44b5f34fc19becb;
        float4 _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4 = IN.uv0;
        float4 _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4 = IN.uv2;
        float4 _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4;
        Unity_Branch_float4(_Property_058f4fba88c3437288219f1929444bf2_Out_0_Boolean, _UV_43d85b3291324c848dfbeec6adac2a71_Out_0_Vector4, _UV_36881dcaab9040168fc5215dcd00f352_Out_0_Vector4, _Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4);
        float2 _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_R_1_Float, _Split_a2e12fa5931da084b2949343a539dfd8_G_2_Float);
        float2 _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2 = float2(_Split_a2e12fa5931da084b2949343a539dfd8_B_3_Float, _Split_a2e12fa5931da084b2949343a539dfd8_A_4_Float);
        float2 _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2;
        Unity_TilingAndOffset_float((_Branch_8054d58a73be4ce1b22d48a84389ae07_Out_3_Vector4.xy), _Vector2_6845d21872714d889783b0cb707df3e9_Out_0_Vector2, _Vector2_e2e2263627c6098e96a5b5d29350ad03_Out_0_Vector2, _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2);
        float2 _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2;
        Unity_Branch_float2(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, (_Multiply_14cec4902d0a00829e4555071a1b8ad1_Out_2_Vector4.xy), _TilingAndOffset_17582d056c0b8a8dab1017d37497fe59_Out_3_Vector2, _Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2);
        UnitySamplerState _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState = _SamplerState;
        float4 _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.tex, _Property_69f1ed7efd1b494e91f626b88ab2363c_Out_0_SamplerState.samplerstate, _Property_3e01b4d2fc68d48ba3acbba9d5881e59_Out_0_Texture2D.GetTransformedUV(_Branch_1e152f3aac57448f8518bf2852c000c3_Out_3_Vector2) );
        _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.rgb = UnpackNormal(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4);
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.r;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.g;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.b;
        float _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_A_7_Float = _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.a;
        float2 _Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2 = float2(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_R_4_Float, _SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_G_5_Float);
        float3 _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3;
        Unity_Sign_float3(IN.WorldSpaceNormal, _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3);
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_R_1_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[0];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[1];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_B_3_Float = _Sign_3a6ebf59931cf08cb0482e0144ddac24_Out_1_Vector3[2];
        float _Split_6299d4ddcc4c74828aea40a46fdb896e_A_4_Float = 0;
        float2 _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2 = float2(_Split_6299d4ddcc4c74828aea40a46fdb896e_G_2_Float, 1);
        float2 _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2;
        Unity_Multiply_float2_float2(_Vector2_ad6bd100e273d78fa409a30a77bfa2cc_Out_0_Vector2, _Vector2_b76cb1842101e58b9e636d49b075c612_Out_0_Vector2, _Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2);
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float = IN.WorldSpaceNormal[0];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float = IN.WorldSpaceNormal[1];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float = IN.WorldSpaceNormal[2];
        float _Split_5ed44bf2eca0868f81eb18100f49d1fa_A_4_Float = 0;
        float2 _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2 = float2(_Split_5ed44bf2eca0868f81eb18100f49d1fa_R_1_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_B_3_Float);
        float2 _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2;
        Unity_Add_float2(_Multiply_31e8db88ee20c985a9850d1a58f3282b_Out_2_Vector2, _Vector2_70e5837843f28b8b9d64cada3697bd5a_Out_0_Vector2, _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2);
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[0];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float = _Add_1145b2f896593d80aa864a34e6702562_Out_2_Vector2[1];
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_B_3_Float = 0;
        float _Split_2bc77ca2d17bd78cb2383770ce50b179_A_4_Float = 0;
        float _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float;
        Unity_Multiply_float_float(_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_B_6_Float, _Split_5ed44bf2eca0868f81eb18100f49d1fa_G_2_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float);
        float3 _Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3 = float3(_Split_2bc77ca2d17bd78cb2383770ce50b179_R_1_Float, _Multiply_ab12aea87465a78eaf7fc66c2598d266_Out_2_Float, _Split_2bc77ca2d17bd78cb2383770ce50b179_G_2_Float);
        float3 _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3;
        {
        float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
        _Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3 = TransformWorldToTangent(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
        }
        float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
        Unity_Normalize_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3);
        float3 _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3;
        Unity_Branch_float3(_Property_1ef12cf3201a938993fe6a7951b0e754_Out_0_Boolean, _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3, (_SampleTexture2D_35ddc0da4b30e48b83ca2d39af2aba2c_RGBA_0_Vector4.xyz), _Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3);
        XZ_2 = (float4(_Branch_9eadf909a90f2f80880f8c56ecc2a91f_Out_3_Vector3, 1.0));
        }
        
        void Unity_NormalStrength_float(float3 In, float Strength, out float3 Out)
        {
            Out = float3(In.rg * Strength, lerp(1, In.b, saturate(Strength)));
        }
        
        void Unity_NormalBlend_float(float3 A, float3 B, out float3 Out)
        {
            Out = SafeNormalize(float3(A.rg + B.rg, A.b * B.b));
        }
        
        void Unity_Subtract_float(float A, float B, out float Out)
        {
            Out = A - B;
        }
        
        void Unity_Power_float(float A, float B, out float Out)
        {
            Out = pow(A, B);
        }
        
        void Unity_Lerp_float3(float3 A, float3 B, float3 T, out float3 Out)
        {
            Out = lerp(A, B, T);
        }
        
        void Unity_Remap_float(float In, float2 InMinMax, float2 OutMinMax, out float Out)
        {
            Out = OutMinMax.x + (In - InMinMax.x) * (OutMinMax.y - OutMinMax.x) / (InMinMax.y - InMinMax.x);
        }
        
        void Unity_Branch_float(float Predicate, float True, float False, out float Out)
        {
            Out = Predicate ? True : False;
        }
        
        void Unity_Multiply_float3_float3(float3 A, float3 B, out float3 Out)
        {
            Out = A * B;
        }
        
        void Unity_Lerp_float(float A, float B, float T, out float Out)
        {
            Out = lerp(A, B, T);
        }
        
        struct Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float
        {
        };
        
        void SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(float Vector1_32317166, float Vector1_FBE622A2, float Vector1_8C15C351, Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float IN, out float SmoothnessOverlay_1)
        {
        float _Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float = Vector1_32317166;
        float _Property_a00e29241d12f983b30177515b367ec9_Out_0_Float = Vector1_FBE622A2;
        float _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float;
        Unity_Sign_float(_Property_a00e29241d12f983b30177515b367ec9_Out_0_Float, _Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float);
        float _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float;
        Unity_Add_float(_Sign_343a45ede7349283a681c6bd9998fd8e_Out_1_Float, 1, _Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float);
        float _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float;
        Unity_Multiply_float_float(_Add_681019b8f5d3d68bb482d419c9fc61a9_Out_2_Float, 0.5, _Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float);
        float _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float;
        Unity_Ceiling_float(_Multiply_e8f4cb722712a880ac0db6c7461427f7_Out_2_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float);
        float _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float = Vector1_8C15C351;
        float _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        Unity_Lerp_float(_Property_728cc50521e9e988ac9cbff4872d5139_Out_0_Float, _Ceiling_95ad15988aa9b98184875fa754feae01_Out_1_Float, _Property_2db1c747a05ee284a8b00076062f91a4_Out_0_Float, _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float);
        SmoothnessOverlay_1 = _Lerp_b3cdb01fc3c5b988ac9b184943bf7c01_Out_3_Float;
        }
        
        void Unity_Lerp_float2(float2 A, float2 B, float2 T, out float2 Out)
        {
            Out = lerp(A, B, T);
        }
        
            // Graph Vertex
            // GraphVertex: <None>
        
            // Graph Pixel
            struct SurfaceDescription
        {
            float3 BaseColor;
            float3 Emission;
            float Alpha;
            float3 BentNormal;
            float Smoothness;
            float Occlusion;
            float3 NormalTS;
            float3 Specular;
        };
        
        SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
        {
            SurfaceDescription surface = (SurfaceDescription)0;
            UnityTexture2D _Property_9c271219f828108f958217e55cd6dc1d_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseColorMap);
            float4 _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4 = _BaseTilingOffset;
            float _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean = _BaseUsePlanarUV;
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_f392575634df5b86b63ff6e287282b30;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.uv0 = IN.uv0;
            _PlanarNM_f392575634df5b86b63ff6e287282b30.uv2 = IN.uv2;
            float4 _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_9c271219f828108f958217e55cd6dc1d_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_f392575634df5b86b63ff6e287282b30, _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4);
            float4 _Property_4f676fce92c9378db3c3b92ae77fbff9_Out_0_Vector4 = _BaseColor;
            float4 _Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4, _Property_4f676fce92c9378db3c3b92ae77fbff9_Out_0_Vector4, _Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4);
            UnityTexture2D _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_DetailMap);
            float4 _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4 = _DetailTilingOffset;
            float _Split_9fa8573190399e8da2a843a4cab68164_R_1_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[0];
            float _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[1];
            float _Split_9fa8573190399e8da2a843a4cab68164_B_3_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[2];
            float _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float = _Property_15b8119e6611208ab7f63d3d2186e69f_Out_0_Vector4[3];
            float2 _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_R_1_Float, _Split_9fa8573190399e8da2a843a4cab68164_G_2_Float);
            float2 _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2 = float2(_Split_9fa8573190399e8da2a843a4cab68164_B_3_Float, _Split_9fa8573190399e8da2a843a4cab68164_A_4_Float);
            float2 _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2;
            Unity_TilingAndOffset_float(IN.uv0.xy, _Vector2_4082931459a3ff87a037eaef2a66aaa4_Out_0_Vector2, _Vector2_c3028c2eeb56de8da402397ea99e167c_Out_0_Vector2, _TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2);
            float4 _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.tex, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.samplerstate, _Property_6bcb6056a149a78f8b1abf38f6263513_Out_0_Texture2D.GetTransformedUV(_TilingAndOffset_8a80f78e1d800e88b7419259778fe702_Out_3_Vector2) );
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_R_4_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.r;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.g;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.b;
            float _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float = _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_RGBA_0_Vector4.a;
            float _Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_R_4_Float, 2, _Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float);
            float _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float;
            Unity_Add_float(_Multiply_6fa1a20b395b2b8d856f1ab5952a6717_Out_2_Float, -1, _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float);
            float _Property_7d68da97cd169d8e8649255aec16158a_Out_0_Float = _DetailAlbedoScale;
            float _Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float;
            Unity_Multiply_float_float(_Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float, _Property_7d68da97cd169d8e8649255aec16158a_Out_0_Float, _Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float);
            float _Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float;
            Unity_Saturate_float(_Multiply_22973eb34d17258ba942b658037dbac6_Out_2_Float, _Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float);
            float _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float;
            Unity_Absolute_float(_Saturate_1a2190fb1d23fd8f8d90fbbf3807c5f6_Out_1_Float, _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float);
            Bindings_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83;
            float3 _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3;
            SG_BlendOverlayBaseColor_acdb3dfca72bd6b42bbc35f4613331a2_float(_Multiply_e8f124a9d8fb0d81a02cdf2b927e4b9d_Out_2_Vector4, _Add_26a33ee766ff6f81b0a3119948ca39d9_Out_2_Float, _Absolute_37f802d85fcade8c905c4fa9a53fde15_Out_1_Float, _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83, _BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3);
            UnityTexture2D _Property_5ca167b35599f78ab3722ec527327841_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverBaseColorMap);
            float4 _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4 = _CoverTilingOffset;
            float _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean = _CoverUsePlanarUV;
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_ad1db3524021ac898447cb6f6daa4180;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.uv0 = IN.uv0;
            _PlanarNM_ad1db3524021ac898447cb6f6daa4180.uv2 = IN.uv2;
            float4 _PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_5ca167b35599f78ab3722ec527327841_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_ad1db3524021ac898447cb6f6daa4180, _PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4);
            float4 _Property_b34e94e0b1171480b3e35ff7f4793d7c_Out_0_Vector4 = _CoverBaseColor;
            float4 _Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_ad1db3524021ac898447cb6f6daa4180_XZ_2_Vector4, _Property_b34e94e0b1171480b3e35ff7f4793d7c_Out_0_Vector4, _Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4);
            float _Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean = _USEDYNAMICCOVERTSTATICMASKF;
            UnityTexture2D _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskA);
            float4 _UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4 = IN.uv0;
            float4 _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4 = SAMPLE_TEXTURE2D(_Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.tex, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.samplerstate, _Property_0889b6f63c850f84a7f74b56d5a867e1_Out_0_Texture2D.GetTransformedUV((_UV_d872d9d5578f118fbf39c79c998654c1_Out_0_Vector4.xy)) );
            float _SampleTexture2D_79111e5af287b084822e60563309a632_R_4_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.r;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_G_5_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.g;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_B_6_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.b;
            float _SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float = _SampleTexture2D_79111e5af287b084822e60563309a632_RGBA_0_Vector4.a;
            float _Property_c022d8255938838aa73170f05c226269_Out_0_Float = _CoverMaskPower;
            float _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_79111e5af287b084822e60563309a632_A_7_Float, _Property_c022d8255938838aa73170f05c226269_Out_0_Float, _Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float);
            float _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float;
            Unity_Clamp_float(_Multiply_8d55fbadf515e983b2014431bc999240_Out_2_Float, 0, 1, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float);
            float2 _Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2 = float2(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_A_7_Float, _SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_G_5_Float);
            float2 _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Vector2_05eaf4ceda4b928e95e7c3340cc0344d_Out_0_Vector2, float2(2, 2), _Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2);
            float2 _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2;
            Unity_Add_float2(_Multiply_7b223ce3c207648b9a10dfae6e45c866_Out_2_Vector2, float2(-1, -1), _Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2);
            float _Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float = _DetailNormalScale;
            float2 _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2;
            Unity_Multiply_float2_float2(_Add_09d4347724b7f38d95e4e08b3be7b367_Out_2_Vector2, (_Property_869b2f5fc76cf9838e2f385a6909872a_Out_0_Float.xx), _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2);
            float _Split_492de324af96c482b50573c79f9fb6a0_R_1_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[0];
            float _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float = _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2[1];
            float _Split_492de324af96c482b50573c79f9fb6a0_B_3_Float = 0;
            float _Split_492de324af96c482b50573c79f9fb6a0_A_4_Float = 0;
            float _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float;
            Unity_DotProduct_float2(_Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _Multiply_27bc0e7dc801db8a918eb810f0be3a0b_Out_2_Vector2, _DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float);
            float _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float;
            Unity_Saturate_float(_DotProduct_0c581f3b2e7bb184968b11cb5c759fe8_Out_2_Float, _Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float);
            float _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float;
            Unity_OneMinus_float(_Saturate_e5fd3306186d8785bd28234db73afeb3_Out_1_Float, _OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float);
            float _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float;
            Unity_SquareRoot_float(_OneMinus_4d6394405e9bda87949b2c9c3a4019a3_Out_1_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            float3 _Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3 = float3(_Split_492de324af96c482b50573c79f9fb6a0_R_1_Float, _Split_492de324af96c482b50573c79f9fb6a0_G_2_Float, _SquareRoot_e96cea4d91559681aeee958b56866c27_Out_1_Float);
            UnityTexture2D _Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseNormalMap);
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv0 = IN.uv0;
            _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540.uv2 = IN.uv2;
            float4 _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_8a90312e70ed1e8b9b260bd82e32fabc_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540, _PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4);
            float _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float = _BaseNormalScale;
            float3 _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_c9d795759e44b68fa07f79d1e8eea540_XZ_2_Vector4.xyz), _Property_bb36a4991d4470879fefd350972302cc_Out_0_Float, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3);
            float3 _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3;
            Unity_NormalBlend_float(_Vector3_ce76b237ae4e9683b8b55c0a907191a6_Out_0_Vector3, _NormalStrength_38970ce5c8d4728f9515af30844360a0_Out_2_Vector3, _NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3);
            UnityTexture2D _Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverNormalMap);
            Bindings_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceNormal = IN.WorldSpaceNormal;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceTangent = IN.WorldSpaceTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv0 = IN.uv0;
            _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3.uv2 = IN.uv2;
            float4 _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4;
            SG_PlanarNMn_1b93a87456f9d4c419321d0cd92bd6c8_float(_Property_f3761223bb08d480b7f2b03d29a43be7_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3, _PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4);
            float _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float = _CoverNormalBlendHardness;
            float3 _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_a3ee26be457ec08bb39277804e093218_Out_0_Float, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3);
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_R_1_Float = IN.WorldSpaceNormal[0];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float = IN.WorldSpaceNormal[1];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_B_3_Float = IN.WorldSpaceNormal[2];
            float _Split_38ef42f5d0d8cf8d8db629ca8987130b_A_4_Float = 0;
            float _Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float = _Cover_Amount;
            float _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float = _Cover_Amount_Grow_Speed;
            float _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float;
            Unity_Subtract_float(4, _Property_edcaf6408fcc6684914fc80e5d6ef526_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float);
            float _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float;
            Unity_Divide_float(_Property_c3d13513263d2586927725ad1f1cdddf_Out_0_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float);
            float _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float;
            Unity_Absolute_float(_Divide_a44418292c5ea28ab465a4ff03a370e3_Out_2_Float, _Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float);
            float _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float;
            Unity_Power_float(_Absolute_a19b3b78284764869efb4ea4da579363_Out_1_Float, _Subtract_9448303ec313538b9e0a15ee279e37ca_Out_2_Float, _Power_c11fc5724f830485a9c4df249a854571_Out_2_Float);
            float _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float;
            Unity_Clamp_float(_Power_c11fc5724f830485a9c4df249a854571_Out_2_Float, 0, 2, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float);
            float _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float;
            Unity_Multiply_float_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float);
            float _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float;
            Unity_Saturate_float(_Multiply_220683476ffbff888bb145363a8364ad_Out_2_Float, _Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float);
            float _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float;
            Unity_Clamp_float(_Split_38ef42f5d0d8cf8d8db629ca8987130b_G_2_Float, 0, 0.9999, _Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float);
            float _Property_89633a46f34e1f8996557a9178d78478_Out_0_Float = _Cover_Max_Angle;
            float _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float;
            Unity_Divide_float(_Property_89633a46f34e1f8996557a9178d78478_Out_0_Float, 45, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float);
            float _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float;
            Unity_OneMinus_float(_Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float);
            float _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float;
            Unity_Subtract_float(_Clamp_6a96ea5404308383bfc966cbaa20bbe7_Out_3_Float, _OneMinus_464b48740527828e80ad1d0ef7324393_Out_1_Float, _Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float);
            float _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float;
            Unity_Clamp_float(_Subtract_e611ace8a3ae9a8a987863c202bd2f40_Out_2_Float, 0, 2, _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
            float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
            Unity_Divide_float(1, _Divide_1573b6a346be178d988d7c16f8a7bd72_Out_2_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float);
            float _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_67dcc607b6da848097d3412324311616_Out_3_Float, _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float, _Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float);
            float _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float;
            Unity_Absolute_float(_Multiply_ab6adee1f97e4e84978da832e173c3ff_Out_2_Float, _Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float);
            float _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float = _CoverHardness;
            float _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float;
            Unity_Power_float(_Absolute_34bababe8152948b86a1aa5843f36830_Out_1_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float);
            float _Property_f8753bb05d835089bda460d144f93c48_Out_0_Float = _Cover_Min_Height;
            float _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float;
            Unity_OneMinus_float(_Property_f8753bb05d835089bda460d144f93c48_Out_0_Float, _OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float);
            float _Split_c66e04f85a2a7f87884040056599e65d_R_1_Float = IN.AbsoluteWorldSpacePosition[0];
            float _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float = IN.AbsoluteWorldSpacePosition[1];
            float _Split_c66e04f85a2a7f87884040056599e65d_B_3_Float = IN.AbsoluteWorldSpacePosition[2];
            float _Split_c66e04f85a2a7f87884040056599e65d_A_4_Float = 0;
            float _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float;
            Unity_Add_float(_OneMinus_f00cb30ae8f05a81b2de40d9e504fdd6_Out_1_Float, _Split_c66e04f85a2a7f87884040056599e65d_G_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float);
            float _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, 1, _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
            float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
            Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, 0, 1, _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float);
            float _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float = _Cover_Min_Height_Blending;
            float _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float;
            Unity_Add_float(_Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Property_45333ec1e1d1df89ad4ca1b4d2582c7f_Out_0_Float, _Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float);
            float _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float;
            Unity_Divide_float(_Add_31891bcc3c3e858da1053de33c432ac4_Out_2_Float, _Add_4a8030434fffd38b802c0768e829faf5_Out_2_Float, _Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float);
            float _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float;
            Unity_OneMinus_float(_Divide_c4149bdcbc73d186ba5f205dd37258a3_Out_2_Float, _OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float);
            float _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float;
            Unity_Add_float(_OneMinus_9c962cb8fa9b3f81a45a24dba5688f7e_Out_1_Float, -0.5, _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
            float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
            Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, 0, 1, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float);
            float _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float;
            Unity_Add_float(_Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float, _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float, _Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float);
            float _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float;
            Unity_Clamp_float(_Add_270d0a0652e7ce8da5db59c11f3fee84_Out_2_Float, 0, 1, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float);
            float _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float;
            Unity_Multiply_float_float(_Power_d9e363a580980f818cba9f7a2e4ae8ee_Out_2_Float, _Clamp_77ddf881ef9bc38d95c9bdb3029d4e9c_Out_3_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float);
            float _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float;
            Unity_Multiply_float_float(_Saturate_11318a9a94ab358eb5d245d9d1c938bf_Out_1_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float);
            float3 _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_2452ddd0fbdf8187b647680981e1870a_Out_2_Vector3, (_Multiply_69153184852a71808f95d69abc8787c1_Out_2_Float.xxx), _Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3);
            float3 _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3;
            {
                float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
                _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3 = TransformTangentToWorldDir(_Lerp_54797f23392e7f85b12e6f8ba6f6eed5_Out_3_Vector3.xyz, tangentTransform, false).xyz;
            }
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_R_1_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[0];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[1];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_B_3_Float = _Transform_de548b6fd9ef5f8db95e8ff92d31d9cf_Out_1_Vector3[2];
            float _Split_58b2f6bfc53dc889a7697c4771e9ab27_A_4_Float = 0;
            float _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float;
            Unity_Multiply_float_float(_Split_58b2f6bfc53dc889a7697c4771e9ab27_G_2_Float, _Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float);
            float _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_dffeaf690ee513849c81022ca2b889c2_Out_3_Float, _Property_54808d8c0b24cb86be1ba22163b0da6c_Out_0_Float, _Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float);
            float _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_3e3235c279f23b8998f5afd2abc77e84_Out_2_Float, _Multiply_21b6a5fe5c050187887a06b36c41186b_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float);
            float _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_6d1a96815e032982a35d881dc488ec65_Out_2_Float, _Multiply_3c5ada7dc2d5fd88b6988da27768a0e6_Out_2_Float, _Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float);
            UnityTexture2D _Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_36e64648ad8a6a849bc794b8693519da;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv0 = IN.uv0;
            _PlanarNM_36e64648ad8a6a849bc794b8693519da.uv2 = IN.uv2;
            float4 _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_40bdd102b2df36808dc9c2ce4a3e6e40_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_36e64648ad8a6a849bc794b8693519da, _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4);
            float _Split_198ec92f3e753d8a9ad50db7d6527324_R_1_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[0];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[1];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[2];
            float _Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float = _PlanarNM_36e64648ad8a6a849bc794b8693519da_XZ_2_Vector4[3];
            float _Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float = _CoverHeightMapMin;
            float _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float = _CoverHeightMapMax;
            float2 _Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2 = float2(_Property_6f8c06f4e98f858c82689a4208853de6_Out_0_Float, _Property_c436a1a494d9768aaf2540b81cd6a00a_Out_0_Float);
            float _Property_277f22c36084858981418fa95133a562_Out_0_Float = _CoverHeightMapOffset;
            float2 _Add_53997153562831859cc7b582f3068877_Out_2_Vector2;
            Unity_Add_float2(_Vector2_7c3530946c82bc88b9ea8dc226615f17_Out_0_Vector2, (_Property_277f22c36084858981418fa95133a562_Out_0_Float.xx), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2);
            float _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_B_3_Float, float2 (0, 1), _Add_53997153562831859cc7b582f3068877_Out_2_Vector2, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float);
            float _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_a04d47fea55cc083ac1d309be428db0b_Out_2_Float, _Remap_1e6c6b6ebbe6f780bbe21a42b8a3209d_Out_3_Float, _Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float);
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float = IN.VertexColor[0];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float = IN.VertexColor[1];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_B_3_Float = IN.VertexColor[2];
            float _Split_52df3b61d8bcb7869eecad2eb62ea8c8_A_4_Float = IN.VertexColor[3];
            float _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float;
            Unity_Multiply_float_float(_Multiply_c05e6e2a89fb5288920dcb35162e554e_Out_2_Float, _Split_52df3b61d8bcb7869eecad2eb62ea8c8_G_2_Float, _Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float);
            float _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float;
            Unity_Saturate_float(_Multiply_e1a328e2f7525c8db6c2e73026734428_Out_2_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float);
            float _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float;
            Unity_Multiply_float_float(_Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Saturate_c28a36ce3fac388ebbd8aa8d85853d6d_Out_1_Float, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float);
            float _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float;
            Unity_Branch_float(_Property_55e15357abb32a859685fa5416ab35cb_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float);
            float3 _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3;
            Unity_Lerp_float3(_BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3, (_Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4.xyz), (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxx), _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3);
            float4 _Property_e687576468764d85b6b46dca96d8a8e3_Out_0_Vector4 = _WetColor;
            float3 _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3;
            Unity_Multiply_float3_float3((_Property_e687576468764d85b6b46dca96d8a8e3_Out_0_Vector4.xyz), _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3, _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3);
            float _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float;
            Unity_OneMinus_float(_Split_52df3b61d8bcb7869eecad2eb62ea8c8_R_1_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float);
            float3 _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
            Unity_Lerp_float3(_Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3, _Multiply_d3a88e4e3722288cb2a20a0b14ff85ac_Out_2_Vector3, (_OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float.xxx), _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3);
            UnityTexture2D _Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_BaseMaskMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv0 = IN.uv0;
            _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798.uv2 = IN.uv2;
            float4 _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_c3340c29f2140f8f8bbbca8e3ac6e935_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798, _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4);
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_R_1_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[0];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[1];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_B_3_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[2];
            float _Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float = _PlanarNM_4ccd2898ce29eb8cb83d70f42545f798_XZ_2_Vector4[3];
            float _Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float = _BaseAORemapMin;
            float _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float = _BaseAORemapMax;
            float2 _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2 = float2(_Property_17db4be114794884ae7d51b4ff3236fa_Out_0_Float, _Property_f8d5959b3eb3a981a491d5f157b6e7a5_Out_0_Float);
            float _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_G_2_Float, float2 (0, 1), _Vector2_882d119ede9a3e8fa5f4007386055eb4_Out_0_Vector2, _Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float);
            float _Property_e353baf414594b8882fb914562e81165_Out_0_Float = _BaseSmoothnessRemapMin;
            float _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float = _BaseSmoothnessRemapMax;
            float2 _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2 = float2(_Property_e353baf414594b8882fb914562e81165_Out_0_Float, _Property_9fca56cf8fdacc8c992be037c63a0fcc_Out_0_Float);
            float _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float;
            Unity_Remap_float(_Split_2e6f7bdf69b05c8fa427b0e2f6ad5d00_A_4_Float, float2 (0, 1), _Vector2_b97c14631eda2a8f96509e399d91fd4e_Out_0_Vector2, _Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float);
            float _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float;
            Unity_Multiply_float_float(_SampleTexture2D_fe4f14564e06b98ea6d57c793c90c503_B_6_Float, 2, _Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float);
            float _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float;
            Unity_Add_float(_Multiply_0732b1d3268d4a82b0a5f5d8a9ab5015_Out_2_Float, -1, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float);
            float _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float = _DetailSmoothnessScale;
            float _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float;
            Unity_Multiply_float_float(_Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Property_401569542f83a881a05eb0986cdfe456_Out_0_Float, _Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float);
            float _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float;
            Unity_Saturate_float(_Multiply_066c7502ba1d068b80c94d9b0e6d847b_Out_2_Float, _Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float);
            float _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float;
            Unity_Absolute_float(_Saturate_fe9c59f87b4c918db2b01b4fbdd0384d_Out_1_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float);
            Bindings_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da;
            float _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float;
            SG_BlendOverlayDetailSmoothness_06e12138dc89c0040b45a57abe520a1a_float(_Remap_b79b15e7c7684e82841e76ea04b64b1c_Out_3_Float, _Add_90fe4c7160867189855da1debdba6c07_Out_2_Float, _Absolute_6a695442ee4e45848edcae77b3cebe4d_Out_1_Float, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da, _BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float);
            float _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float;
            Unity_Saturate_float(_BlendOverlayDetailSmoothness_032bd77f1d1b168ea120852e47b545da_SmoothnessOverlay_1_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float2 _Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2 = float2(_Remap_41a03cd97d23b8828a061c7cd45ea3a4_Out_3_Float, _Saturate_eb8ade7db870ae8c9e5a51a081a695bf_Out_1_Float);
            float _Property_5e08cfb127183a8993376f9087501eee_Out_0_Float = _CoverAORemapMin;
            float _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float = _CoverAORemapMax;
            float2 _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2 = float2(_Property_5e08cfb127183a8993376f9087501eee_Out_0_Float, _Property_f9b151dbb2e38b80ae34d2cb39e48968_Out_0_Float);
            float _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_G_2_Float, float2 (0, 1), _Vector2_2936191c743e7e85b321164ea0868f15_Out_0_Vector2, _Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float);
            float _Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float = _CoverSmoothnessRemapMin;
            float _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float = _CoverSmoothnessRemapMax;
            float2 _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2 = float2(_Property_fc781de8b634448e9eaf731f6deea7ab_Out_0_Float, _Property_9ec153766553ef8f9837b25f052b5489_Out_0_Float);
            float _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float;
            Unity_Remap_float(_Split_198ec92f3e753d8a9ad50db7d6527324_A_4_Float, float2 (0, 1), _Vector2_64f7b7c5bb94cf839bc5b9ceeee149e7_Out_0_Vector2, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2 = float2(_Remap_910576e3fb14d2828990f97334f2c8f4_Out_3_Float, _Remap_86d725bf6a583687961ea716cc00b05d_Out_3_Float);
            float2 _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2;
            Unity_Lerp_float2(_Vector2_1938f682185f2684bdb56c7122e6e217_Out_0_Vector2, _Vector2_1ff7ced4c39e238dbca2a0ed97b7f617_Out_0_Vector2, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xx), _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2);
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_R_1_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[0];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float = _Lerp_269f9e6c4c4f558b9ce93506d424f1c9_Out_3_Vector2[1];
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_B_3_Float = 0;
            float _Split_beb57fcf05cbb6809f536625bac5fcbc_A_4_Float = 0;
            float _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float = _WetSmoothness;
            float _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            Unity_Lerp_float(_Split_beb57fcf05cbb6809f536625bac5fcbc_G_2_Float, _Property_db3738be692e59879a26d5bfe67edc38_Out_0_Float, _OneMinus_9b3acf530f01a9808c7dfe2999903bb8_Out_1_Float, _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float);
            float _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float = _CoverNormalScale;
            float3 _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3;
            Unity_NormalStrength_float((_PlanarNMn_e4f2ff32e4576b8289242c9ead282bf3_XZ_2_Vector4.xyz), _Property_dbc7c8413d1704879478e13baa7b66f1_Out_0_Float, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3);
            float3 _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxx), _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3);
            UnityTexture2D _Property_f617479b11216b84b89956263f8d3c08_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_SpecularColorMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.uv0 = IN.uv0;
            _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d.uv2 = IN.uv2;
            float4 _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_f617479b11216b84b89956263f8d3c08_Out_0_Texture2D, _Property_5dd399d9c32638849a0ec9b8ed107978_Out_0_Vector4, _Property_d8a00a213dd86c8da0f38dbfaef5f462_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d, _PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4);
            float4 _Property_112303b9c27a1284b20f0a5c49fb436a_Out_0_Vector4 = _SpecularColor;
            float4 _Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_b414d1b5f4b94583b24eca320a17ce5d_XZ_2_Vector4, _Property_112303b9c27a1284b20f0a5c49fb436a_Out_0_Vector4, _Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4);
            UnityTexture2D _Property_0c768f7d1094a8878d837f25970dbd49_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_CoverSpecularColorMap);
            Bindings_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float _PlanarNM_4b88db16993b7d84a6c9e021b5992a38;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.uv0 = IN.uv0;
            _PlanarNM_4b88db16993b7d84a6c9e021b5992a38.uv2 = IN.uv2;
            float4 _PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4;
            SG_PlanarNM_c0f081da9c567704ea36e7dd38cedcf6_float(_Property_0c768f7d1094a8878d837f25970dbd49_Out_0_Texture2D, _Property_9e7b9b518354a78885df253506f363e7_Out_0_Vector4, _Property_9c5dec0c054bb087bf49d2b38157e2b7_Out_0_Boolean, UnityBuildSamplerStateStruct(SamplerState_Linear_Repeat_Aniso8), 1, _PlanarNM_4b88db16993b7d84a6c9e021b5992a38, _PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4);
            float4 _Property_51d3c44a7110108d9e8c9a3acf54125f_Out_0_Vector4 = _CoverSpecularColor;
            float4 _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4;
            Unity_Multiply_float4_float4(_PlanarNM_4b88db16993b7d84a6c9e021b5992a38_XZ_2_Vector4, _Property_51d3c44a7110108d9e8c9a3acf54125f_Out_0_Vector4, _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4);
            float4 _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4;
            Unity_Lerp_float4(_Multiply_589dd3239f9b0180a41a877e92129d86_Out_2_Vector4, _Multiply_7c126a5e6707b98c9d609eab51a4ea2e_Out_2_Vector4, (_Branch_442c73fcf771be878c5055d9c4c38b8c_Out_3_Float.xxxx), _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4);
            surface.BaseColor = _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
            surface.Emission = float3(0, 0, 0);
            surface.Alpha = 1;
            surface.BentNormal = IN.TangentSpaceNormal;
            surface.Smoothness = _Lerp_b76e2a994fc7788fb9f68d906a1d2d2b_Out_3_Float;
            surface.Occlusion = _Split_beb57fcf05cbb6809f536625bac5fcbc_R_1_Float;
            surface.NormalTS = _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
            surface.Specular = (_Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4.xyz);
            return surface;
        }
        
            // --------------------------------------------------
            // Build Graph Inputs
            #ifdef HAVE_VFX_MODIFICATION
            #define VFX_SRP_ATTRIBUTES AttributesMesh
            #define VaryingsMeshType VaryingsMeshToPS
            #define VFX_SRP_VARYINGS VaryingsMeshType
            #define VFX_SRP_SURFACE_INPUTS FragInputs
            #endif
            SurfaceDescriptionInputs FragInputsToSurfaceDescriptionInputs(FragInputs input, float3 viewWS)
        {
            SurfaceDescriptionInputs output;
            ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
        
            output.WorldSpaceNormal =                           normalize(input.tangentToWorld[2].xyz);
            #if defined(SHADER_STAGE_RAY_TRACING)
            #else
            #endif
            output.TangentSpaceNormal =                         float3(0.0f, 0.0f, 1.0f);
            output.WorldSpaceTangent =                          input.tangentToWorld[0].xyz;
            output.WorldSpaceBiTangent =                        input.tangentToWorld[1].xyz;
            output.AbsoluteWorldSpacePosition =                 GetAbsolutePositionWS(input.positionRWS);
        
        #if UNITY_UV_STARTS_AT_TOP
        #else
        #endif
        
        
            output.uv0 =                                        input.texCoord0;
            output.uv2 =                                        input.texCoord2;
            output.VertexColor =                                input.color;
        
            // splice point to copy frag inputs custom interpolator pack into the SDI
            /* WARNING: $splice Could not find named fragment 'CustomInterpolatorCopyToSDI' */
        
            return output;
        }
        
            // --------------------------------------------------
            // Build Surface Data (Specific Material)
        
        void ApplyDecalToSurfaceDataNoNormal(DecalSurfaceData decalSurfaceData, inout SurfaceData surfaceData);
        
        void ApplyDecalAndGetNormal(FragInputs fragInputs, PositionInputs posInput, SurfaceDescription surfaceDescription,
            inout SurfaceData surfaceData)
        {
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
        #ifdef DECAL_NORMAL_BLENDING
            // SG nodes don't ouptut surface gradients, so if decals require surf grad blending, we have to convert
            // the normal to gradient before applying the decal. We then have to resolve the gradient back to world space
            float3 normalTS;
        
            normalTS = SurfaceGradientFromTangentSpaceNormalAndFromTBN(surfaceDescription.NormalTS,
            fragInputs.tangentToWorld[0], fragInputs.tangentToWorld[1]);
        
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, fragInputs.tangentToWorld[2], normalTS);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        
            GetNormalWS_SG(fragInputs, normalTS, surfaceData.normalWS, doubleSidedConstants);
        #else
            // normal delivered to master node
            GetNormalWS(fragInputs, surfaceDescription.NormalTS, surfaceData.normalWS, doubleSidedConstants);
        
            #if HAVE_DECALS
            if (_EnableDecals)
            {
                float alpha = 1.0;
                alpha = surfaceDescription.Alpha;
        
                // Both uses and modifies 'surfaceData.normalWS'.
                DecalSurfaceData decalSurfaceData = GetDecalSurfaceData(posInput, fragInputs, alpha);
                ApplyDecalToSurfaceNormal(decalSurfaceData, surfaceData.normalWS.xyz);
                ApplyDecalToSurfaceDataNoNormal(decalSurfaceData, surfaceData);
            }
            #endif
        #endif
        }
        void BuildSurfaceData(FragInputs fragInputs, inout SurfaceDescription surfaceDescription, float3 V, PositionInputs posInput, out SurfaceData surfaceData, out float3 bentNormalWS)
        {
            ZERO_INITIALIZE(SurfaceData, surfaceData);
        
            // specularOcclusion need to be init ahead of decal to quiet the compiler that modify the SurfaceData struct
            // however specularOcclusion can come from the graph, so need to be init here so it can be override.
            surfaceData.specularOcclusion = 1.0;
        
            surfaceData.baseColor =                 surfaceDescription.BaseColor;
            surfaceData.perceptualSmoothness =      surfaceDescription.Smoothness;
            surfaceData.ambientOcclusion =          surfaceDescription.Occlusion;
            surfaceData.specularColor =             surfaceDescription.Specular;
        
            #if defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE) || defined(_REFRACTION_THIN)
                if (_EnableSSRefraction)
                {
        
                    surfaceData.transmittanceMask = (1.0 - surfaceDescription.Alpha);
                    surfaceDescription.Alpha = 1.0;
                }
                else
                {
                    surfaceData.ior = 1.0;
                    surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                    surfaceData.atDistance = 1.0;
                    surfaceData.transmittanceMask = 0.0;
                    surfaceDescription.Alpha = 1.0;
                }
            #else
                surfaceData.ior = 1.0;
                surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
                surfaceData.atDistance = 1.0;
                surfaceData.transmittanceMask = 0.0;
            #endif
        
            // These static material feature allow compile time optimization
            surfaceData.materialFeatures = MATERIALFEATUREFLAGS_LIT_STANDARD;
            #ifdef _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SUBSURFACE_SCATTERING;
            #endif
        
            #ifdef _MATERIAL_FEATURE_TRANSMISSION
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
            #endif
        
            #ifdef _MATERIAL_FEATURE_ANISOTROPY
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_ANISOTROPY;
        
                // Initialize the normal to something non-zero to avoid a div-zero warning for anisotropy.
                surfaceData.normalWS = float3(0, 1, 0);
            #endif
        
            #ifdef _MATERIAL_FEATURE_IRIDESCENCE
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_IRIDESCENCE;
            #endif
        
            #ifdef _MATERIAL_FEATURE_SPECULAR_COLOR
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SPECULAR_COLOR;
            #endif
        
            #ifdef _MATERIAL_FEATURE_CLEAR_COAT
                surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_CLEAR_COAT;
            #endif
        
            #if defined (_MATERIAL_FEATURE_SPECULAR_COLOR) && defined (_ENERGY_CONSERVING_SPECULAR)
                // Require to have setup baseColor
                // Reproduce the energy conservation done in legacy Unity. Not ideal but better for compatibility and users can unchek it
                surfaceData.baseColor *= (1.0 - Max3(surfaceData.specularColor.r, surfaceData.specularColor.g, surfaceData.specularColor.b));
            #endif
        
            float3 doubleSidedConstants = GetDoubleSidedConstants();
        
            ApplyDecalAndGetNormal(fragInputs, posInput, surfaceDescription, surfaceData);
        
            surfaceData.geomNormalWS = fragInputs.tangentToWorld[2];
        
            surfaceData.tangentWS = normalize(fragInputs.tangentToWorld[0].xyz);    // The tangent is not normalize in tangentToWorld for mikkt. TODO: Check if it expected that we normalize with Morten. Tag: SURFACE_GRADIENT
        
        
            bentNormalWS = surfaceData.normalWS;
        
            surfaceData.tangentWS = Orthonormalize(surfaceData.tangentWS, surfaceData.normalWS);
        
            #ifdef DEBUG_DISPLAY
                if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
                {
                    // TODO: need to update mip info
                    surfaceData.metallic = 0;
                }
        
                // We need to call ApplyDebugToSurfaceData after filling the surfarcedata and before filling builtinData
                // as it can modify attribute use for static lighting
                ApplyDebugToSurfaceData(fragInputs.tangentToWorld, surfaceData);
            #endif
        
            // By default we use the ambient occlusion with Tri-ace trick (apply outside) for specular occlusion.
            // If user provide bent normal then we process a better term
            #if defined(_SPECULAR_OCCLUSION_CUSTOM)
                // Just use the value passed through via the slot (not active otherwise)
            #elif defined(_SPECULAR_OCCLUSION_FROM_AO_BENT_NORMAL)
                // If we have bent normal and ambient occlusion, process a specular occlusion
                surfaceData.specularOcclusion = GetSpecularOcclusionFromBentAO(V, bentNormalWS, surfaceData.normalWS, surfaceData.ambientOcclusion, PerceptualSmoothnessToPerceptualRoughness(surfaceData.perceptualSmoothness));
            #elif defined(_AMBIENT_OCCLUSION) && defined(_SPECULAR_OCCLUSION_FROM_AO)
                surfaceData.specularOcclusion = GetSpecularOcclusionFromAmbientOcclusion(ClampNdotV(dot(surfaceData.normalWS, V)), surfaceData.ambientOcclusion, PerceptualSmoothnessToRoughness(surfaceData.perceptualSmoothness));
            #endif
        
            #if defined(_ENABLE_GEOMETRIC_SPECULAR_AA) && !defined(SHADER_STAGE_RAY_TRACING)
                surfaceData.perceptualSmoothness = GeometricNormalFiltering(surfaceData.perceptualSmoothness, fragInputs.tangentToWorld[2], surfaceDescription.SpecularAAScreenSpaceVariance, surfaceDescription.SpecularAAThreshold);
            #endif
        }
        
            // --------------------------------------------------
            // Get Surface And BuiltinData
        
            void GetSurfaceAndBuiltinData(FragInputs fragInputs, float3 V, inout PositionInputs posInput, out SurfaceData surfaceData, out BuiltinData builtinData RAY_TRACING_OPTIONAL_PARAMETERS)
            {
                // Don't dither if displaced tessellation (we're fading out the displacement instead to match the next LOD)
                #if !defined(SHADER_STAGE_RAY_TRACING) && !defined(_TESSELLATION_DISPLACEMENT)
                #ifdef LOD_FADE_CROSSFADE // enable dithering LOD transition if user select CrossFade transition in LOD group
                LODDitheringTransition(ComputeFadeMaskSeed(V, posInput.positionSS), unity_LODFade.x);
                #endif
                #endif
        
                #ifndef SHADER_UNLIT
                #ifdef _DOUBLESIDED_ON
                    float3 doubleSidedConstants = _DoubleSidedConstants.xyz;
                #else
                    float3 doubleSidedConstants = float3(1.0, 1.0, 1.0);
                #endif
        
                ApplyDoubleSidedFlipOrMirror(fragInputs, doubleSidedConstants); // Apply double sided flip on the vertex normal
                #endif // SHADER_UNLIT
        
                SurfaceDescriptionInputs surfaceDescriptionInputs = FragInputsToSurfaceDescriptionInputs(fragInputs, V);
        
                #if defined(HAVE_VFX_MODIFICATION)
                GraphProperties properties;
                ZERO_INITIALIZE(GraphProperties, properties);
        
                GetElementPixelProperties(fragInputs, properties);
        
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs, properties);
                #else
                SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs);
                #endif
        
                // Perform alpha test very early to save performance (a killed pixel will not sample textures)
                // TODO: split graph evaluation to grab just alpha dependencies first? tricky..
                #ifdef _ALPHATEST_ON
                    float alphaCutoff = surfaceDescription.AlphaClipThreshold;
                    #if SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_PREPASS
                    // The TransparentDepthPrepass is also used with SSR transparent.
                    // If an artists enable transaprent SSR but not the TransparentDepthPrepass itself, then we use AlphaClipThreshold
                    // otherwise if TransparentDepthPrepass is enabled we use AlphaClipThresholdDepthPrepass
                    #elif SHADERPASS == SHADERPASS_TRANSPARENT_DEPTH_POSTPASS
                    // DepthPostpass always use its own alpha threshold
                    alphaCutoff = surfaceDescription.AlphaClipThresholdDepthPostpass;
                    #elif (SHADERPASS == SHADERPASS_SHADOWS) || (SHADERPASS == SHADERPASS_RAYTRACING_VISIBILITY)
                    // If use shadow threshold isn't enable we don't allow any test
                    #endif
        
                    GENERIC_ALPHA_TEST(surfaceDescription.Alpha, alphaCutoff);
                #endif
        
                #if !defined(SHADER_STAGE_RAY_TRACING) && _DEPTHOFFSET_ON
                ApplyDepthOffsetPositionInput(V, surfaceDescription.DepthOffset, GetViewForwardDir(), GetWorldToHClipMatrix(), posInput);
                #endif
        
                #ifndef SHADER_UNLIT
                float3 bentNormalWS;
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData, bentNormalWS);
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD1
                    float4 lightmapTexCoord1 = fragInputs.texCoord1;
                #else
                    float4 lightmapTexCoord1 = float4(0,0,0,0);
                #endif
        
                #ifdef FRAG_INPUTS_USE_TEXCOORD2
                    float4 lightmapTexCoord2 = fragInputs.texCoord2;
                #else
                    float4 lightmapTexCoord2 = float4(0,0,0,0);
                #endif
        
                // Builtin Data
                // For back lighting we use the oposite vertex normal
                InitBuiltinData(posInput, surfaceDescription.Alpha, bentNormalWS, -fragInputs.tangentToWorld[2], lightmapTexCoord1, lightmapTexCoord2, builtinData);
        
                #else
                BuildSurfaceData(fragInputs, surfaceDescription, V, posInput, surfaceData);
        
                ZERO_BUILTIN_INITIALIZE(builtinData); // No call to InitBuiltinData as we don't have any lighting
                builtinData.opacity = surfaceDescription.Alpha;
        
                #if defined(DEBUG_DISPLAY)
                    // Light Layers are currently not used for the Unlit shader (because it is not lit)
                    // But Unlit objects do cast shadows according to their rendering layer mask, which is what we want to
                    // display in the light layers visualization mode, therefore we need the renderingLayers
                    builtinData.renderingLayers = GetMeshRenderingLightLayer();
                #endif
        
                #endif // SHADER_UNLIT
        
                #ifdef _ALPHATEST_ON
                    // Used for sharpening by alpha to mask - Alpha to covertage is only used with depth only and forward pass (no shadow pass, no transparent pass)
                    builtinData.alphaClipTreshold = alphaCutoff;
                #endif
        
                // override sampleBakedGI - not used by Unlit
        
                builtinData.emissiveColor = surfaceDescription.Emission;
        
                // Note this will not fully work on transparent surfaces (can check with _SURFACE_TYPE_TRANSPARENT define)
                // We will always overwrite vt feeback with the nearest. So behind transparent surfaces vt will not be resolved
                // This is a limitation of the current MRT approach.
                #ifdef UNITY_VIRTUAL_TEXTURING
                #endif
        
                #if _DEPTHOFFSET_ON
                builtinData.depthOffset = surfaceDescription.DepthOffset;
                #endif
        
                // TODO: We should generate distortion / distortionBlur for non distortion pass
                #if (SHADERPASS == SHADERPASS_DISTORTION)
                builtinData.distortion = surfaceDescription.Distortion;
                builtinData.distortionBlur = surfaceDescription.DistortionBlur;
                #endif
        
                #ifndef SHADER_UNLIT
                // PostInitBuiltinData call ApplyDebugToBuiltinData
                PostInitBuiltinData(V, posInput, surfaceData, builtinData);
                #else
                ApplyDebugToBuiltinData(builtinData);
                #endif
        
                RAY_TRACING_OPTIONAL_ALPHA_TEST_PASS
            }
        
            // --------------------------------------------------
            // Main
        
            #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassPathTracing.hlsl"
        
            // --------------------------------------------------
            // Visual Effect Vertex Invocations
        
        	#ifdef HAVE_VFX_MODIFICATION
        	#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
        	#endif
        
            ENDHLSL
        }
    }
    CustomEditor "UnityEditor.ShaderGraph.GenericShaderGraphMaterialGUI"
    CustomEditorForRenderPipeline "Rendering.HighDefinition.LitShaderGraphGUI" "UnityEngine.Rendering.HighDefinition.HDRenderPipelineAsset"
    FallBack "Hidden/Shader Graph/FallbackError"
}