Files
HauntedBloodlines/Assets/NatureManufacture Assets/Object Shaders/NM_Lit_Top_Cover_Specular_CutOut.shader
2025-05-29 22:31:40 +03:00

25176 lines
1.7 MiB

Shader "NatureManufacture/HDRP/Lit/Specular Top Cover CutOut"
{
Properties
{
_AlphaCutoff("Alpha Cutoff", Range(0, 1)) = 0
_BaseColor("Base Color", Color) = (1, 1, 1, 0)
[NoScaleOffset]_BaseColorMap("Base Map(RGB) Alpha(A)", 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) = 1
[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][ToggleUI]_PerPixelSorting("Boolean", Float) = 0
[HideInInspector]_SurfaceType("Float", Float) = 0
[HideInInspector]_BlendMode("Float", Float) = 0
[HideInInspector]_SrcBlend("Float", Float) = 1
[HideInInspector]_DstBlend("Float", Float) = 0
[HideInInspector]_DstBlend2("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(UnityEngine.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][ToggleUI]_ExcludeFromTUAndAA("Boolean", Float) = 0
[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][Enum(SpecularColor, 4)]_MaterialID("_MaterialID", Float) = 4
[HideInInspector]_MaterialTypeMask("_MaterialTypeMask", Float) = 16
[HideInInspector][ToggleUI]_TransmissionEnable("Boolean", Float) = 1
[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"="AlphaTest+25"
"DisableBatching"="False"
"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_local _ _ALPHATEST_ON
#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 _TRANSPARENT_REFRACTIVE_SORT
#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
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_COLORED_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_COLORED_TRANSMISSION
// GraphKeywords: <None>
// Defines
#define SHADERPASS SHADERPASS_SHADOWS
#define SUPPORT_GLOBAL_MIP_BIAS 1
// 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
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl" // Required before including properties as it defines UNITY_TEXTURE_STREAMING_DEBUG_VARS
// 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 VARYINGS_NEED_POSITION_WS
#define VARYINGS_NEED_TEXCOORD0
#define VARYINGS_NEED_TEXCOORD2
#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"
// 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 _SPECULAR_OCCLUSION_FROM_AO 1
#define _ENERGY_CONSERVING_SPECULAR 1
#if _MATERIAL_FEATURE_COLORED_TRANSMISSION
// Colored Transmission doesn't support clear coat
#undef _MATERIAL_FEATURE_CLEAR_COAT
#endif
// 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
// See Lit.shader
#if SHADERPASS == SHADERPASS_MOTION_VECTORS && defined(WRITE_DECAL_BUFFER_AND_RENDERING_LAYER)
#define WRITE_DECAL_BUFFER
#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(_TRANSPARENT_REFRACTIVE_SORT)) && defined(_SURFACE_TYPE_TRANSPARENT)
#define _WRITE_TRANSPARENT_MOTION_VECTOR
#endif
// -- Graph Properties
CBUFFER_START(UnityPerMaterial)
float _AlphaCutoff;
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;
UNITY_TEXTURE_STREAMING_DEBUG_VARS;
float _BlendMode;
float _EnableBlendModePreserveSpecularLighting;
float _RayTracing;
float _RefractionModel;
float _MaterialID;
float _MaterialTypeMask;
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"
// GraphIncludes: <None>
// --------------------------------------------------
// Structs and Packing
struct AttributesMesh
{
float3 positionOS : POSITION;
float3 normalOS : NORMAL;
float4 tangentOS : TANGENT;
float4 uv0 : TEXCOORD0;
float4 uv2 : TEXCOORD2;
#if UNITY_ANY_INSTANCING_ENABLED || defined(ATTRIBUTES_NEED_INSTANCEID)
uint instanceID : INSTANCEID_SEMANTIC;
#endif
};
struct VaryingsMeshToPS
{
SV_POSITION_QUALIFIERS float4 positionCS : SV_POSITION;
float3 positionRWS;
float4 texCoord0;
float4 texCoord2;
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
uint instanceID : CUSTOM_INSTANCE_ID;
#endif
};
struct VertexDescriptionInputs
{
float3 ObjectSpaceNormal;
float3 ObjectSpaceTangent;
float3 ObjectSpacePosition;
};
struct SurfaceDescriptionInputs
{
float3 AbsoluteWorldSpacePosition;
float4 uv0;
float4 uv2;
};
struct PackedVaryingsMeshToPS
{
SV_POSITION_QUALIFIERS float4 positionCS : SV_POSITION;
float4 texCoord0 : INTERP0;
float4 texCoord2 : INTERP1;
float3 positionRWS : INTERP2;
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
uint instanceID : CUSTOM_INSTANCE_ID;
#endif
};
PackedVaryingsMeshToPS PackVaryingsMeshToPS (VaryingsMeshToPS input)
{
PackedVaryingsMeshToPS output;
ZERO_INITIALIZE(PackedVaryingsMeshToPS, output);
output.positionCS = input.positionCS;
output.texCoord0.xyzw = input.texCoord0;
output.texCoord2.xyzw = input.texCoord2;
output.positionRWS.xyz = input.positionRWS;
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
output.instanceID = input.instanceID;
#endif
return output;
}
VaryingsMeshToPS UnpackVaryingsMeshToPS (PackedVaryingsMeshToPS input)
{
VaryingsMeshToPS output;
output.positionCS = input.positionCS;
output.texCoord0 = input.texCoord0.xyzw;
output.texCoord2 = input.texCoord2.xyzw;
output.positionRWS = input.positionRWS.xyz;
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
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, float(0), float(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(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;
}
// Graph Vertex
struct VertexDescription
{
float3 Position;
float3 Normal;
float3 Tangent;
};
VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
{
VertexDescription description = (VertexDescription)0;
description.Position = IN.ObjectSpacePosition;
description.Normal = IN.ObjectSpaceNormal;
description.Tangent = IN.ObjectSpaceTangent;
return description;
}
// Graph Pixel
struct SurfaceDescription
{
float Alpha;
float AlphaClipThreshold;
};
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);
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_R_1_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[0];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_G_2_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[1];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_B_3_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[2];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[3];
float _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float = _AlphaCutoff;
surface.Alpha = _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float;
surface.AlphaClipThreshold = _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_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;
#if UNITY_ANY_INSTANCING_ENABLED
#else
#endif
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.texCoord0 = input.texCoord0;
output.texCoord2 = input.texCoord2;
#if UNITY_ANY_INSTANCING_ENABLED
#else
#endif
#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
output.AbsoluteWorldSpacePosition = GetAbsolutePositionWS(input.positionRWS);
#if UNITY_UV_STARTS_AT_TOP
#else
#endif
output.uv0 = input.texCoord0;
output.uv2 = input.texCoord2;
// 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;
surfaceData.thickness = 0.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_COLORED_TRANSMISSION
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_COLORED_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 !defined(SHADER_STAGE_RAY_TRACING)
// Mipmap mode debugging isn't supported with ray tracing as it relies on derivatives
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
#ifdef FRAG_INPUTS_USE_TEXCOORD0
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG(posInput.positionSS, fragInputs.texCoord0);
#else
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG_NO_UV(posInput.positionSS);
#endif
surfaceData.metallic = 0;
}
#endif
// We need to call ApplyDebugToSurfaceData after filling the surfaceData 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
#ifdef DEBUG_DISPLAY
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
surfaceDescription.Alpha = 1.0f;
}
#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
float alpha = 1.0;
alpha = surfaceDescription.Alpha;
// Builtin Data
// For back lighting we use the oposite vertex normal
InitBuiltinData(posInput, 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 = GetMeshRenderingLayerMask();
#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
// When overriding GI, we need to force the isLightmap flag to make sure we don't add APV (sampled in the lightloop) on top of the overridden value (set at GBuffer stage)
// 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
#if !defined(SHADER_STAGE_RAY_TRACING)
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
#else
#endif
#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_local _ _ALPHATEST_ON
#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 _TRANSPARENT_REFRACTIVE_SORT
#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
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_COLORED_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_COLORED_TRANSMISSION
// GraphKeywords: <None>
// Defines
#define SHADERPASS SHADERPASS_LIGHT_TRANSPORT
#define RAYTRACING_SHADER_GRAPH_DEFAULT
#define SCENEPICKINGPASS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
// 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
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl" // Required before including properties as it defines UNITY_TEXTURE_STREAMING_DEBUG_VARS
// 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"
// 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 _AMBIENT_OCCLUSION 1
#define _SPECULAR_OCCLUSION_FROM_AO 1
#define _ENERGY_CONSERVING_SPECULAR 1
#if _MATERIAL_FEATURE_COLORED_TRANSMISSION
// Colored Transmission doesn't support clear coat
#undef _MATERIAL_FEATURE_CLEAR_COAT
#endif
// 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
// See Lit.shader
#if SHADERPASS == SHADERPASS_MOTION_VECTORS && defined(WRITE_DECAL_BUFFER_AND_RENDERING_LAYER)
#define WRITE_DECAL_BUFFER
#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(_TRANSPARENT_REFRACTIVE_SORT)) && defined(_SURFACE_TYPE_TRANSPARENT)
#define _WRITE_TRANSPARENT_MOTION_VECTOR
#endif
// -- Graph Properties
CBUFFER_START(UnityPerMaterial)
float _AlphaCutoff;
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;
UNITY_TEXTURE_STREAMING_DEBUG_VARS;
float _BlendMode;
float _EnableBlendModePreserveSpecularLighting;
float _RayTracing;
float _RefractionModel;
float _MaterialID;
float _MaterialTypeMask;
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 || defined(ATTRIBUTES_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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, float(0), float(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(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, 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_Clamp_float3(float3 In, float3 Min, float3 Max, out float3 Out)
{
Out = clamp(In, Min, Max);
}
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, float(0), float(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(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, 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 = TransformWorldToTangentDir(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
}
float3 _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3;
Unity_Clamp_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, float3(-1, -1, -1), float3(1, 1, 1), _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3);
float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
Unity_Normalize_float3(_Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_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, 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;
float AlphaClipThreshold;
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, 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_e703337da3887f8db2787989294238f9_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, float(0), float(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(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, float(0), float(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, float(0), float(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, 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, float(0), float(2), _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
Unity_Divide_float(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, float(1), _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, float(0), float(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, float(-0.5), _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, float(0), float(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, float(0), float(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_cd1a829e9d09c088965697dae02aa809_Out_3_Float;
Unity_Branch_float(_Property_e703337da3887f8db2787989294238f9_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_cd1a829e9d09c088965697dae02aa809_Out_3_Float);
float3 _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3;
Unity_Lerp_float3(_BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3, (_Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4.xyz), (_Branch_cd1a829e9d09c088965697dae02aa809_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);
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_R_1_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[0];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_G_2_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[1];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_B_3_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[2];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[3];
float _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float = _AlphaCutoff;
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, 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_cd1a829e9d09c088965697dae02aa809_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_cd1a829e9d09c088965697dae02aa809_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_cd1a829e9d09c088965697dae02aa809_Out_3_Float.xxxx), _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4);
surface.BaseColor = _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
surface.Emission = float3(0, 0, 0);
surface.Alpha = _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float;
surface.AlphaClipThreshold = _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float;
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);
#if UNITY_ANY_INSTANCING_ENABLED
#else
#endif
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;
#if UNITY_ANY_INSTANCING_ENABLED
#else
#endif
#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.thickness = 0.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_COLORED_TRANSMISSION
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_COLORED_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 !defined(SHADER_STAGE_RAY_TRACING)
// Mipmap mode debugging isn't supported with ray tracing as it relies on derivatives
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
#ifdef FRAG_INPUTS_USE_TEXCOORD0
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG(posInput.positionSS, fragInputs.texCoord0);
#else
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG_NO_UV(posInput.positionSS);
#endif
surfaceData.metallic = 0;
}
#endif
// We need to call ApplyDebugToSurfaceData after filling the surfaceData 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
#ifdef DEBUG_DISPLAY
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
surfaceDescription.Alpha = 1.0f;
}
#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
float alpha = 1.0;
alpha = surfaceDescription.Alpha;
// Builtin Data
// For back lighting we use the oposite vertex normal
InitBuiltinData(posInput, 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 = GetMeshRenderingLayerMask();
#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
// When overriding GI, we need to force the isLightmap flag to make sure we don't add APV (sampled in the lightloop) on top of the overridden value (set at GBuffer stage)
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
#if !defined(SHADER_STAGE_RAY_TRACING)
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
#else
#endif
#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_local _ _ALPHATEST_ON
#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 _TRANSPARENT_REFRACTIVE_SORT
#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
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_COLORED_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_COLORED_TRANSMISSION
// GraphKeywords: <None>
// Defines
#define SHADERPASS SHADERPASS_DEPTH_ONLY
#define SCENEPICKINGPASS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
// 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
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl" // Required before including properties as it defines UNITY_TEXTURE_STREAMING_DEBUG_VARS
// 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"
// 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 _AMBIENT_OCCLUSION 1
#define _SPECULAR_OCCLUSION_FROM_AO 1
#define _ENERGY_CONSERVING_SPECULAR 1
#if _MATERIAL_FEATURE_COLORED_TRANSMISSION
// Colored Transmission doesn't support clear coat
#undef _MATERIAL_FEATURE_CLEAR_COAT
#endif
// 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
// See Lit.shader
#if SHADERPASS == SHADERPASS_MOTION_VECTORS && defined(WRITE_DECAL_BUFFER_AND_RENDERING_LAYER)
#define WRITE_DECAL_BUFFER
#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(_TRANSPARENT_REFRACTIVE_SORT)) && defined(_SURFACE_TYPE_TRANSPARENT)
#define _WRITE_TRANSPARENT_MOTION_VECTOR
#endif
// -- Graph Properties
CBUFFER_START(UnityPerMaterial)
float _AlphaCutoff;
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;
UNITY_TEXTURE_STREAMING_DEBUG_VARS;
float _BlendMode;
float _EnableBlendModePreserveSpecularLighting;
float _RayTracing;
float _RefractionModel;
float _MaterialID;
float _MaterialTypeMask;
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"
// GraphIncludes: <None>
// --------------------------------------------------
// 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 || defined(ATTRIBUTES_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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, float(0), float(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(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, 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_Clamp_float3(float3 In, float3 Min, float3 Max, out float3 Out)
{
Out = clamp(In, Min, Max);
}
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, float(0), float(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(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, 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 = TransformWorldToTangentDir(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
}
float3 _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3;
Unity_Clamp_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, float3(-1, -1, -1), float3(1, 1, 1), _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3);
float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
Unity_Normalize_float3(_Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_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, 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;
description.Position = IN.ObjectSpacePosition;
description.Normal = IN.ObjectSpaceNormal;
description.Tangent = IN.ObjectSpaceTangent;
return description;
}
// Graph Pixel
struct SurfaceDescription
{
float3 BaseColor;
float3 Emission;
float Alpha;
float AlphaClipThreshold;
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, 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_e703337da3887f8db2787989294238f9_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, float(0), float(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(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, float(0), float(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, float(0), float(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, 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, float(0), float(2), _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
Unity_Divide_float(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, float(1), _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, float(0), float(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, float(-0.5), _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, float(0), float(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, float(0), float(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_cd1a829e9d09c088965697dae02aa809_Out_3_Float;
Unity_Branch_float(_Property_e703337da3887f8db2787989294238f9_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_cd1a829e9d09c088965697dae02aa809_Out_3_Float);
float3 _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3;
Unity_Lerp_float3(_BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3, (_Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4.xyz), (_Branch_cd1a829e9d09c088965697dae02aa809_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);
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_R_1_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[0];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_G_2_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[1];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_B_3_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[2];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[3];
float _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float = _AlphaCutoff;
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, 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_cd1a829e9d09c088965697dae02aa809_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_cd1a829e9d09c088965697dae02aa809_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_cd1a829e9d09c088965697dae02aa809_Out_3_Float.xxxx), _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4);
surface.BaseColor = _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
surface.Emission = float3(0, 0, 0);
surface.Alpha = _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float;
surface.AlphaClipThreshold = _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float;
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;
#if UNITY_ANY_INSTANCING_ENABLED
#else
#endif
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;
#if UNITY_ANY_INSTANCING_ENABLED
#else
#endif
#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.thickness = 0.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_COLORED_TRANSMISSION
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_COLORED_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 !defined(SHADER_STAGE_RAY_TRACING)
// Mipmap mode debugging isn't supported with ray tracing as it relies on derivatives
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
#ifdef FRAG_INPUTS_USE_TEXCOORD0
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG(posInput.positionSS, fragInputs.texCoord0);
#else
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG_NO_UV(posInput.positionSS);
#endif
surfaceData.metallic = 0;
}
#endif
// We need to call ApplyDebugToSurfaceData after filling the surfaceData 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
#ifdef DEBUG_DISPLAY
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
surfaceDescription.Alpha = 1.0f;
}
#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
float alpha = 1.0;
alpha = surfaceDescription.Alpha;
// Builtin Data
// For back lighting we use the oposite vertex normal
InitBuiltinData(posInput, 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 = GetMeshRenderingLayerMask();
#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
// When overriding GI, we need to force the isLightmap flag to make sure we don't add APV (sampled in the lightloop) on top of the overridden value (set at GBuffer stage)
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
#if !defined(SHADER_STAGE_RAY_TRACING)
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
#else
#endif
#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_local _ _ALPHATEST_ON
#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 _TRANSPARENT_REFRACTIVE_SORT
#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
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_COLORED_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_COLORED_TRANSMISSION
// GraphKeywords: <None>
// Defines
#define SHADERPASS SHADERPASS_DEPTH_ONLY
#define RAYTRACING_SHADER_GRAPH_DEFAULT
#define SCENESELECTIONPASS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
// 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
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl" // Required before including properties as it defines UNITY_TEXTURE_STREAMING_DEBUG_VARS
// 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"
// 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 _AMBIENT_OCCLUSION 1
#define _SPECULAR_OCCLUSION_FROM_AO 1
#define _ENERGY_CONSERVING_SPECULAR 1
#if _MATERIAL_FEATURE_COLORED_TRANSMISSION
// Colored Transmission doesn't support clear coat
#undef _MATERIAL_FEATURE_CLEAR_COAT
#endif
// 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
// See Lit.shader
#if SHADERPASS == SHADERPASS_MOTION_VECTORS && defined(WRITE_DECAL_BUFFER_AND_RENDERING_LAYER)
#define WRITE_DECAL_BUFFER
#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(_TRANSPARENT_REFRACTIVE_SORT)) && defined(_SURFACE_TYPE_TRANSPARENT)
#define _WRITE_TRANSPARENT_MOTION_VECTOR
#endif
// -- Graph Properties
CBUFFER_START(UnityPerMaterial)
float _AlphaCutoff;
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;
UNITY_TEXTURE_STREAMING_DEBUG_VARS;
float _BlendMode;
float _EnableBlendModePreserveSpecularLighting;
float _RayTracing;
float _RefractionModel;
float _MaterialID;
float _MaterialTypeMask;
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 uv2 : TEXCOORD2;
float4 color : COLOR;
#if UNITY_ANY_INSTANCING_ENABLED || defined(ATTRIBUTES_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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, float(0), float(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(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, 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_Clamp_float3(float3 In, float3 Min, float3 Max, out float3 Out)
{
Out = clamp(In, Min, Max);
}
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, float(0), float(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(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, 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 = TransformWorldToTangentDir(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
}
float3 _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3;
Unity_Clamp_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, float3(-1, -1, -1), float3(1, 1, 1), _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3);
float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
Unity_Normalize_float3(_Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_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, 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;
description.Position = IN.ObjectSpacePosition;
description.Normal = IN.ObjectSpaceNormal;
description.Tangent = IN.ObjectSpaceTangent;
return description;
}
// Graph Pixel
struct SurfaceDescription
{
float3 BaseColor;
float3 Emission;
float Alpha;
float AlphaClipThreshold;
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, 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_e703337da3887f8db2787989294238f9_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, float(0), float(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(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, float(0), float(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, float(0), float(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, 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, float(0), float(2), _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
Unity_Divide_float(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, float(1), _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, float(0), float(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, float(-0.5), _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, float(0), float(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, float(0), float(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_cd1a829e9d09c088965697dae02aa809_Out_3_Float;
Unity_Branch_float(_Property_e703337da3887f8db2787989294238f9_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_cd1a829e9d09c088965697dae02aa809_Out_3_Float);
float3 _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3;
Unity_Lerp_float3(_BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3, (_Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4.xyz), (_Branch_cd1a829e9d09c088965697dae02aa809_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);
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_R_1_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[0];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_G_2_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[1];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_B_3_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[2];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[3];
float _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float = _AlphaCutoff;
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, 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_cd1a829e9d09c088965697dae02aa809_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_cd1a829e9d09c088965697dae02aa809_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_cd1a829e9d09c088965697dae02aa809_Out_3_Float.xxxx), _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4);
surface.BaseColor = _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
surface.Emission = float3(0, 0, 0);
surface.Alpha = _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float;
surface.AlphaClipThreshold = _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float;
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;
#if UNITY_ANY_INSTANCING_ENABLED
#else
#endif
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;
#if UNITY_ANY_INSTANCING_ENABLED
#else
#endif
#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.thickness = 0.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_COLORED_TRANSMISSION
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_COLORED_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 !defined(SHADER_STAGE_RAY_TRACING)
// Mipmap mode debugging isn't supported with ray tracing as it relies on derivatives
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
#ifdef FRAG_INPUTS_USE_TEXCOORD0
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG(posInput.positionSS, fragInputs.texCoord0);
#else
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG_NO_UV(posInput.positionSS);
#endif
surfaceData.metallic = 0;
}
#endif
// We need to call ApplyDebugToSurfaceData after filling the surfaceData 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
#ifdef DEBUG_DISPLAY
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
surfaceDescription.Alpha = 1.0f;
}
#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
float alpha = 1.0;
alpha = surfaceDescription.Alpha;
// Builtin Data
// For back lighting we use the oposite vertex normal
InitBuiltinData(posInput, 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 = GetMeshRenderingLayerMask();
#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
// When overriding GI, we need to force the isLightmap flag to make sure we don't add APV (sampled in the lightloop) on top of the overridden value (set at GBuffer stage)
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
#if !defined(SHADER_STAGE_RAY_TRACING)
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
#else
#endif
#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
}
AlphaToMask [_AlphaCutoffEnable]
// 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_local _ _ALPHATEST_ON
#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 _TRANSPARENT_REFRACTIVE_SORT
#pragma shader_feature_local_fragment _ _ENABLE_FOG_ON_TRANSPARENT
#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_fragment _ WRITE_DECAL_BUFFER_AND_RENDERING_LAYER
#pragma shader_feature_local _ _REFRACTION_PLANE _REFRACTION_SPHERE _REFRACTION_THIN
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_COLORED_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_COLORED_TRANSMISSION
// GraphKeywords: <None>
// Defines
#define SHADERPASS SHADERPASS_MOTION_VECTORS
#define SUPPORT_GLOBAL_MIP_BIAS 1
// 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
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl" // Required before including properties as it defines UNITY_TEXTURE_STREAMING_DEBUG_VARS
// 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"
// 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 _AMBIENT_OCCLUSION 1
#define _SPECULAR_OCCLUSION_FROM_AO 1
#define _ENERGY_CONSERVING_SPECULAR 1
#if _MATERIAL_FEATURE_COLORED_TRANSMISSION
// Colored Transmission doesn't support clear coat
#undef _MATERIAL_FEATURE_CLEAR_COAT
#endif
// 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
// See Lit.shader
#if SHADERPASS == SHADERPASS_MOTION_VECTORS && defined(WRITE_DECAL_BUFFER_AND_RENDERING_LAYER)
#define WRITE_DECAL_BUFFER
#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(_TRANSPARENT_REFRACTIVE_SORT)) && defined(_SURFACE_TYPE_TRANSPARENT)
#define _WRITE_TRANSPARENT_MOTION_VECTOR
#endif
// -- Graph Properties
CBUFFER_START(UnityPerMaterial)
float _AlphaCutoff;
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;
UNITY_TEXTURE_STREAMING_DEBUG_VARS;
float _BlendMode;
float _EnableBlendModePreserveSpecularLighting;
float _RayTracing;
float _RefractionModel;
float _MaterialID;
float _MaterialTypeMask;
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"
// GraphIncludes: <None>
// --------------------------------------------------
// 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 || defined(ATTRIBUTES_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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, float(0), float(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(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, 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_Clamp_float3(float3 In, float3 Min, float3 Max, out float3 Out)
{
Out = clamp(In, Min, Max);
}
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, float(0), float(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(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, 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 = TransformWorldToTangentDir(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
}
float3 _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3;
Unity_Clamp_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, float3(-1, -1, -1), float3(1, 1, 1), _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3);
float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
Unity_Normalize_float3(_Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_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, 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;
description.Position = IN.ObjectSpacePosition;
description.Normal = IN.ObjectSpaceNormal;
description.Tangent = IN.ObjectSpaceTangent;
return description;
}
// Graph Pixel
struct SurfaceDescription
{
float3 BaseColor;
float3 Emission;
float Alpha;
float AlphaClipThreshold;
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, 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_e703337da3887f8db2787989294238f9_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, float(0), float(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(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, float(0), float(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, float(0), float(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, 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, float(0), float(2), _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
Unity_Divide_float(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, float(1), _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, float(0), float(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, float(-0.5), _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, float(0), float(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, float(0), float(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_cd1a829e9d09c088965697dae02aa809_Out_3_Float;
Unity_Branch_float(_Property_e703337da3887f8db2787989294238f9_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_cd1a829e9d09c088965697dae02aa809_Out_3_Float);
float3 _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3;
Unity_Lerp_float3(_BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3, (_Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4.xyz), (_Branch_cd1a829e9d09c088965697dae02aa809_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);
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_R_1_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[0];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_G_2_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[1];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_B_3_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[2];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[3];
float _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float = _AlphaCutoff;
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, 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_cd1a829e9d09c088965697dae02aa809_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_cd1a829e9d09c088965697dae02aa809_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_cd1a829e9d09c088965697dae02aa809_Out_3_Float.xxxx), _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4);
surface.BaseColor = _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
surface.Emission = float3(0, 0, 0);
surface.Alpha = _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float;
surface.AlphaClipThreshold = _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float;
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;
#if UNITY_ANY_INSTANCING_ENABLED
#else
#endif
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;
#if UNITY_ANY_INSTANCING_ENABLED
#else
#endif
#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.thickness = 0.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_COLORED_TRANSMISSION
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_COLORED_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 !defined(SHADER_STAGE_RAY_TRACING)
// Mipmap mode debugging isn't supported with ray tracing as it relies on derivatives
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
#ifdef FRAG_INPUTS_USE_TEXCOORD0
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG(posInput.positionSS, fragInputs.texCoord0);
#else
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG_NO_UV(posInput.positionSS);
#endif
surfaceData.metallic = 0;
}
#endif
// We need to call ApplyDebugToSurfaceData after filling the surfaceData 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
#ifdef DEBUG_DISPLAY
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
surfaceDescription.Alpha = 1.0f;
}
#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
float alpha = 1.0;
alpha = surfaceDescription.Alpha;
// Builtin Data
// For back lighting we use the oposite vertex normal
InitBuiltinData(posInput, 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 = GetMeshRenderingLayerMask();
#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
// When overriding GI, we need to force the isLightmap flag to make sure we don't add APV (sampled in the lightloop) on top of the overridden value (set at GBuffer stage)
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
#if !defined(SHADER_STAGE_RAY_TRACING)
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
#else
#endif
#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_local _ _ALPHATEST_ON
#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 _TRANSPARENT_REFRACTIVE_SORT
#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
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_COLORED_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_COLORED_TRANSMISSION
// GraphKeywords: <None>
// Defines
#define SHADERPASS SHADERPASS_TRANSPARENT_DEPTH_PREPASS
#define RAYTRACING_SHADER_GRAPH_DEFAULT
#define SUPPORT_GLOBAL_MIP_BIAS 1
// 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
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl" // Required before including properties as it defines UNITY_TEXTURE_STREAMING_DEBUG_VARS
// 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"
// 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 _SPECULAR_OCCLUSION_FROM_AO 1
#define _ENERGY_CONSERVING_SPECULAR 1
#if _MATERIAL_FEATURE_COLORED_TRANSMISSION
// Colored Transmission doesn't support clear coat
#undef _MATERIAL_FEATURE_CLEAR_COAT
#endif
// 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
// See Lit.shader
#if SHADERPASS == SHADERPASS_MOTION_VECTORS && defined(WRITE_DECAL_BUFFER_AND_RENDERING_LAYER)
#define WRITE_DECAL_BUFFER
#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(_TRANSPARENT_REFRACTIVE_SORT)) && defined(_SURFACE_TYPE_TRANSPARENT)
#define _WRITE_TRANSPARENT_MOTION_VECTOR
#endif
// -- Graph Properties
CBUFFER_START(UnityPerMaterial)
float _AlphaCutoff;
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;
UNITY_TEXTURE_STREAMING_DEBUG_VARS;
float _BlendMode;
float _EnableBlendModePreserveSpecularLighting;
float _RayTracing;
float _RefractionModel;
float _MaterialID;
float _MaterialTypeMask;
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"
// GraphIncludes: <None>
// --------------------------------------------------
// 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 || defined(ATTRIBUTES_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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, float(0), float(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(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_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_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_Clamp_float3(float3 In, float3 Min, float3 Max, out float3 Out)
{
Out = clamp(In, Min, Max);
}
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, float(0), float(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(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, 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 = TransformWorldToTangentDir(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
}
float3 _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3;
Unity_Clamp_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, float3(-1, -1, -1), float3(1, 1, 1), _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3);
float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
Unity_Normalize_float3(_Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_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);
}
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, 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;
description.Position = IN.ObjectSpacePosition;
description.Normal = IN.ObjectSpaceNormal;
description.Tangent = IN.ObjectSpaceTangent;
return description;
}
// Graph Pixel
struct SurfaceDescription
{
float Alpha;
float AlphaClipThreshold;
float3 NormalTS;
float Smoothness;
};
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);
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_R_1_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[0];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_G_2_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[1];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_B_3_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[2];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[3];
float _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float = _AlphaCutoff;
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);
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_e703337da3887f8db2787989294238f9_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, float(0), float(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(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, float(0), float(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, float(0), float(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, 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, float(0), float(2), _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
Unity_Divide_float(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, float(1), _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, float(0), float(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, float(-0.5), _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, float(0), float(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, float(0), float(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_cd1a829e9d09c088965697dae02aa809_Out_3_Float;
Unity_Branch_float(_Property_e703337da3887f8db2787989294238f9_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_cd1a829e9d09c088965697dae02aa809_Out_3_Float);
float3 _Lerp_6c096bfe241ea2898fb3c496a3f320f8_Out_3_Vector3;
Unity_Lerp_float3(_NormalBlend_53a2c47df3f58b8382c294e99089234d_Out_2_Vector3, _NormalStrength_316925999eb53a86a3669e22c8809208_Out_2_Vector3, (_Branch_cd1a829e9d09c088965697dae02aa809_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, 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_cd1a829e9d09c088965697dae02aa809_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 = _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float;
surface.AlphaClipThreshold = _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float;
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;
#if UNITY_ANY_INSTANCING_ENABLED
#else
#endif
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;
#if UNITY_ANY_INSTANCING_ENABLED
#else
#endif
#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.thickness = 0.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_COLORED_TRANSMISSION
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_COLORED_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 !defined(SHADER_STAGE_RAY_TRACING)
// Mipmap mode debugging isn't supported with ray tracing as it relies on derivatives
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
#ifdef FRAG_INPUTS_USE_TEXCOORD0
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG(posInput.positionSS, fragInputs.texCoord0);
#else
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG_NO_UV(posInput.positionSS);
#endif
surfaceData.metallic = 0;
}
#endif
// We need to call ApplyDebugToSurfaceData after filling the surfaceData 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
#ifdef DEBUG_DISPLAY
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
surfaceDescription.Alpha = 1.0f;
}
#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
float alpha = 1.0;
alpha = surfaceDescription.Alpha;
// Builtin Data
// For back lighting we use the oposite vertex normal
InitBuiltinData(posInput, 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 = GetMeshRenderingLayerMask();
#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
// When overriding GI, we need to force the isLightmap flag to make sure we don't add APV (sampled in the lightloop) on top of the overridden value (set at GBuffer stage)
// 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
#if !defined(SHADER_STAGE_RAY_TRACING)
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
#else
#endif
#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_local _ _ALPHATEST_ON
#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 _TRANSPARENT_REFRACTIVE_SORT
#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
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_COLORED_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_COLORED_TRANSMISSION
// GraphKeywords: <None>
// Defines
#define SHADERPASS SHADERPASS_FULL_SCREEN_DEBUG
#define RAYTRACING_SHADER_GRAPH_DEFAULT
#define SUPPORT_GLOBAL_MIP_BIAS 1
// 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
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl" // Required before including properties as it defines UNITY_TEXTURE_STREAMING_DEBUG_VARS
// 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"
// 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 _AMBIENT_OCCLUSION 1
#define _SPECULAR_OCCLUSION_FROM_AO 1
#define _ENERGY_CONSERVING_SPECULAR 1
#if _MATERIAL_FEATURE_COLORED_TRANSMISSION
// Colored Transmission doesn't support clear coat
#undef _MATERIAL_FEATURE_CLEAR_COAT
#endif
// 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
// See Lit.shader
#if SHADERPASS == SHADERPASS_MOTION_VECTORS && defined(WRITE_DECAL_BUFFER_AND_RENDERING_LAYER)
#define WRITE_DECAL_BUFFER
#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(_TRANSPARENT_REFRACTIVE_SORT)) && defined(_SURFACE_TYPE_TRANSPARENT)
#define _WRITE_TRANSPARENT_MOTION_VECTOR
#endif
// -- Graph Properties
CBUFFER_START(UnityPerMaterial)
float _AlphaCutoff;
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;
UNITY_TEXTURE_STREAMING_DEBUG_VARS;
float _BlendMode;
float _EnableBlendModePreserveSpecularLighting;
float _RayTracing;
float _RefractionModel;
float _MaterialID;
float _MaterialTypeMask;
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"
// GraphIncludes: <None>
// --------------------------------------------------
// 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 || defined(ATTRIBUTES_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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, float(0), float(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(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, 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_Clamp_float3(float3 In, float3 Min, float3 Max, out float3 Out)
{
Out = clamp(In, Min, Max);
}
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, float(0), float(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(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, 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 = TransformWorldToTangentDir(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
}
float3 _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3;
Unity_Clamp_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, float3(-1, -1, -1), float3(1, 1, 1), _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3);
float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
Unity_Normalize_float3(_Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_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, 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;
description.Position = IN.ObjectSpacePosition;
description.Normal = IN.ObjectSpaceNormal;
description.Tangent = IN.ObjectSpaceTangent;
return description;
}
// Graph Pixel
struct SurfaceDescription
{
float3 BaseColor;
float3 Emission;
float Alpha;
float AlphaClipThreshold;
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, 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_e703337da3887f8db2787989294238f9_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, float(0), float(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(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, float(0), float(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, float(0), float(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, 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, float(0), float(2), _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
Unity_Divide_float(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, float(1), _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, float(0), float(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, float(-0.5), _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, float(0), float(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, float(0), float(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_cd1a829e9d09c088965697dae02aa809_Out_3_Float;
Unity_Branch_float(_Property_e703337da3887f8db2787989294238f9_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_cd1a829e9d09c088965697dae02aa809_Out_3_Float);
float3 _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3;
Unity_Lerp_float3(_BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3, (_Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4.xyz), (_Branch_cd1a829e9d09c088965697dae02aa809_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);
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_R_1_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[0];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_G_2_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[1];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_B_3_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[2];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[3];
float _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float = _AlphaCutoff;
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, 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_cd1a829e9d09c088965697dae02aa809_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_cd1a829e9d09c088965697dae02aa809_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_cd1a829e9d09c088965697dae02aa809_Out_3_Float.xxxx), _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4);
surface.BaseColor = _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
surface.Emission = float3(0, 0, 0);
surface.Alpha = _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float;
surface.AlphaClipThreshold = _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float;
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;
#if UNITY_ANY_INSTANCING_ENABLED
#else
#endif
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;
#if UNITY_ANY_INSTANCING_ENABLED
#else
#endif
#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.thickness = 0.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_COLORED_TRANSMISSION
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_COLORED_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 !defined(SHADER_STAGE_RAY_TRACING)
// Mipmap mode debugging isn't supported with ray tracing as it relies on derivatives
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
#ifdef FRAG_INPUTS_USE_TEXCOORD0
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG(posInput.positionSS, fragInputs.texCoord0);
#else
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG_NO_UV(posInput.positionSS);
#endif
surfaceData.metallic = 0;
}
#endif
// We need to call ApplyDebugToSurfaceData after filling the surfaceData 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
#ifdef DEBUG_DISPLAY
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
surfaceDescription.Alpha = 1.0f;
}
#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
float alpha = 1.0;
alpha = surfaceDescription.Alpha;
// Builtin Data
// For back lighting we use the oposite vertex normal
InitBuiltinData(posInput, 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 = GetMeshRenderingLayerMask();
#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
// When overriding GI, we need to force the isLightmap flag to make sure we don't add APV (sampled in the lightloop) on top of the overridden value (set at GBuffer stage)
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
#if !defined(SHADER_STAGE_RAY_TRACING)
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
#else
#endif
#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
}
AlphaToMask [_AlphaCutoffEnable]
// 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 shader_feature_local _ _ALPHATEST_ON
#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 _TRANSPARENT_REFRACTIVE_SORT
#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 multi_compile_fragment _ WRITE_DECAL_BUFFER WRITE_RENDERING_LAYER
#pragma shader_feature_local _ _REFRACTION_PLANE _REFRACTION_SPHERE _REFRACTION_THIN
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_COLORED_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_COLORED_TRANSMISSION
// GraphKeywords: <None>
// Defines
#define SHADERPASS SHADERPASS_DEPTH_ONLY
#define RAYTRACING_SHADER_GRAPH_DEFAULT
#define SUPPORT_GLOBAL_MIP_BIAS 1
// 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
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl" // Required before including properties as it defines UNITY_TEXTURE_STREAMING_DEBUG_VARS
// 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"
// 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 _AMBIENT_OCCLUSION 1
#define _SPECULAR_OCCLUSION_FROM_AO 1
#define _ENERGY_CONSERVING_SPECULAR 1
#if _MATERIAL_FEATURE_COLORED_TRANSMISSION
// Colored Transmission doesn't support clear coat
#undef _MATERIAL_FEATURE_CLEAR_COAT
#endif
// 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
// See Lit.shader
#if SHADERPASS == SHADERPASS_MOTION_VECTORS && defined(WRITE_DECAL_BUFFER_AND_RENDERING_LAYER)
#define WRITE_DECAL_BUFFER
#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(_TRANSPARENT_REFRACTIVE_SORT)) && defined(_SURFACE_TYPE_TRANSPARENT)
#define _WRITE_TRANSPARENT_MOTION_VECTOR
#endif
// -- Graph Properties
CBUFFER_START(UnityPerMaterial)
float _AlphaCutoff;
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;
UNITY_TEXTURE_STREAMING_DEBUG_VARS;
float _BlendMode;
float _EnableBlendModePreserveSpecularLighting;
float _RayTracing;
float _RefractionModel;
float _MaterialID;
float _MaterialTypeMask;
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"
// GraphIncludes: <None>
// --------------------------------------------------
// 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 || defined(ATTRIBUTES_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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, float(0), float(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(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, 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_Clamp_float3(float3 In, float3 Min, float3 Max, out float3 Out)
{
Out = clamp(In, Min, Max);
}
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, float(0), float(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(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, 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 = TransformWorldToTangentDir(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
}
float3 _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3;
Unity_Clamp_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, float3(-1, -1, -1), float3(1, 1, 1), _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3);
float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
Unity_Normalize_float3(_Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_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, 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;
description.Position = IN.ObjectSpacePosition;
description.Normal = IN.ObjectSpaceNormal;
description.Tangent = IN.ObjectSpaceTangent;
return description;
}
// Graph Pixel
struct SurfaceDescription
{
float3 BaseColor;
float3 Emission;
float Alpha;
float AlphaClipThreshold;
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, 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_e703337da3887f8db2787989294238f9_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, float(0), float(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(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, float(0), float(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, float(0), float(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, 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, float(0), float(2), _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
Unity_Divide_float(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, float(1), _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, float(0), float(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, float(-0.5), _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, float(0), float(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, float(0), float(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_cd1a829e9d09c088965697dae02aa809_Out_3_Float;
Unity_Branch_float(_Property_e703337da3887f8db2787989294238f9_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_cd1a829e9d09c088965697dae02aa809_Out_3_Float);
float3 _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3;
Unity_Lerp_float3(_BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3, (_Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4.xyz), (_Branch_cd1a829e9d09c088965697dae02aa809_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);
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_R_1_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[0];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_G_2_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[1];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_B_3_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[2];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[3];
float _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float = _AlphaCutoff;
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, 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_cd1a829e9d09c088965697dae02aa809_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_cd1a829e9d09c088965697dae02aa809_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_cd1a829e9d09c088965697dae02aa809_Out_3_Float.xxxx), _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4);
surface.BaseColor = _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
surface.Emission = float3(0, 0, 0);
surface.Alpha = _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float;
surface.AlphaClipThreshold = _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float;
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;
#if UNITY_ANY_INSTANCING_ENABLED
#else
#endif
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;
#if UNITY_ANY_INSTANCING_ENABLED
#else
#endif
#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.thickness = 0.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_COLORED_TRANSMISSION
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_COLORED_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 !defined(SHADER_STAGE_RAY_TRACING)
// Mipmap mode debugging isn't supported with ray tracing as it relies on derivatives
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
#ifdef FRAG_INPUTS_USE_TEXCOORD0
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG(posInput.positionSS, fragInputs.texCoord0);
#else
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG_NO_UV(posInput.positionSS);
#endif
surfaceData.metallic = 0;
}
#endif
// We need to call ApplyDebugToSurfaceData after filling the surfaceData 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
#ifdef DEBUG_DISPLAY
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
surfaceDescription.Alpha = 1.0f;
}
#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
float alpha = 1.0;
alpha = surfaceDescription.Alpha;
// Builtin Data
// For back lighting we use the oposite vertex normal
InitBuiltinData(posInput, 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 = GetMeshRenderingLayerMask();
#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
// When overriding GI, we need to force the isLightmap flag to make sure we don't add APV (sampled in the lightloop) on top of the overridden value (set at GBuffer stage)
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
#if !defined(SHADER_STAGE_RAY_TRACING)
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
#else
#endif
#endif
ENDHLSL
}
Pass
{
Name "GBuffer"
Tags
{
"LightMode" = "GBuffer"
}
// Render State
Cull [_CullMode]
ZTest [_ZTestGBuffer]
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 _ RENDERING_LAYERS
#pragma multi_compile_raytracing _ RENDERING_LAYERS
#pragma shader_feature_local _ _ALPHATEST_ON
#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 _TRANSPARENT_REFRACTIVE_SORT
#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_L1 PROBE_VOLUMES_L2
#pragma multi_compile_raytracing _ 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 _ USE_LEGACY_LIGHTMAPS
#pragma shader_feature_local _ _REFRACTION_PLANE _REFRACTION_SPHERE _REFRACTION_THIN
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_COLORED_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_COLORED_TRANSMISSION
// GraphKeywords: <None>
// Defines
#define SHADERPASS SHADERPASS_GBUFFER
#define RAYTRACING_SHADER_GRAPH_DEFAULT
#define SUPPORT_GLOBAL_MIP_BIAS 1
// 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
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl" // Required before including properties as it defines UNITY_TEXTURE_STREAMING_DEBUG_VARS
// 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"
// 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 _AMBIENT_OCCLUSION 1
#define _SPECULAR_OCCLUSION_FROM_AO 1
#define _ENERGY_CONSERVING_SPECULAR 1
#if _MATERIAL_FEATURE_COLORED_TRANSMISSION
// Colored Transmission doesn't support clear coat
#undef _MATERIAL_FEATURE_CLEAR_COAT
#endif
// 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
// See Lit.shader
#if SHADERPASS == SHADERPASS_MOTION_VECTORS && defined(WRITE_DECAL_BUFFER_AND_RENDERING_LAYER)
#define WRITE_DECAL_BUFFER
#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(_TRANSPARENT_REFRACTIVE_SORT)) && defined(_SURFACE_TYPE_TRANSPARENT)
#define _WRITE_TRANSPARENT_MOTION_VECTOR
#endif
// -- Graph Properties
CBUFFER_START(UnityPerMaterial)
float _AlphaCutoff;
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;
UNITY_TEXTURE_STREAMING_DEBUG_VARS;
float _BlendMode;
float _EnableBlendModePreserveSpecularLighting;
float _RayTracing;
float _RefractionModel;
float _MaterialID;
float _MaterialTypeMask;
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"
// 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 color : COLOR;
#if UNITY_ANY_INSTANCING_ENABLED || defined(ATTRIBUTES_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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, float(0), float(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(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, 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_Clamp_float3(float3 In, float3 Min, float3 Max, out float3 Out)
{
Out = clamp(In, Min, Max);
}
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, float(0), float(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(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, 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 = TransformWorldToTangentDir(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
}
float3 _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3;
Unity_Clamp_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, float3(-1, -1, -1), float3(1, 1, 1), _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3);
float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
Unity_Normalize_float3(_Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_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, 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;
description.Position = IN.ObjectSpacePosition;
description.Normal = IN.ObjectSpaceNormal;
description.Tangent = IN.ObjectSpaceTangent;
return description;
}
// Graph Pixel
struct SurfaceDescription
{
float3 BaseColor;
float3 Emission;
float Alpha;
float AlphaClipThreshold;
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, 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_e703337da3887f8db2787989294238f9_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, float(0), float(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(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, float(0), float(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, float(0), float(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, 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, float(0), float(2), _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
Unity_Divide_float(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, float(1), _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, float(0), float(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, float(-0.5), _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, float(0), float(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, float(0), float(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_cd1a829e9d09c088965697dae02aa809_Out_3_Float;
Unity_Branch_float(_Property_e703337da3887f8db2787989294238f9_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_cd1a829e9d09c088965697dae02aa809_Out_3_Float);
float3 _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3;
Unity_Lerp_float3(_BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3, (_Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4.xyz), (_Branch_cd1a829e9d09c088965697dae02aa809_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);
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_R_1_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[0];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_G_2_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[1];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_B_3_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[2];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[3];
float _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float = _AlphaCutoff;
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, 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_cd1a829e9d09c088965697dae02aa809_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_cd1a829e9d09c088965697dae02aa809_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_cd1a829e9d09c088965697dae02aa809_Out_3_Float.xxxx), _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4);
surface.BaseColor = _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
surface.Emission = float3(0, 0, 0);
surface.Alpha = _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float;
surface.AlphaClipThreshold = _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float;
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;
#if UNITY_ANY_INSTANCING_ENABLED
#else
#endif
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;
#if UNITY_ANY_INSTANCING_ENABLED
#else
#endif
#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.thickness = 0.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_COLORED_TRANSMISSION
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_COLORED_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 !defined(SHADER_STAGE_RAY_TRACING)
// Mipmap mode debugging isn't supported with ray tracing as it relies on derivatives
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
#ifdef FRAG_INPUTS_USE_TEXCOORD0
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG(posInput.positionSS, fragInputs.texCoord0);
#else
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG_NO_UV(posInput.positionSS);
#endif
surfaceData.metallic = 0;
}
#endif
// We need to call ApplyDebugToSurfaceData after filling the surfaceData 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
#ifdef DEBUG_DISPLAY
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
surfaceDescription.Alpha = 1.0f;
}
#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
float alpha = 1.0;
alpha = surfaceDescription.Alpha;
// Builtin Data
// For back lighting we use the oposite vertex normal
InitBuiltinData(posInput, 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 = GetMeshRenderingLayerMask();
#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
// When overriding GI, we need to force the isLightmap flag to make sure we don't add APV (sampled in the lightloop) on top of the overridden value (set at GBuffer stage)
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
#if !defined(SHADER_STAGE_RAY_TRACING)
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
#else
#endif
#endif
ENDHLSL
}
Pass
{
Name "Forward"
Tags
{
"LightMode" = "Forward"
}
// Render State
Cull [_CullModeForward]
Blend [_SrcBlend] [_DstBlend], [_AlphaSrcBlend] [_AlphaDstBlend]
Blend 1 One OneMinusSrcAlpha
Blend 2 One [_DstBlend2]
Blend 3 One [_DstBlend2]
Blend 4 One 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_local _ _ALPHATEST_ON
#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 _TRANSPARENT_REFRACTIVE_SORT
#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_L1 PROBE_VOLUMES_L2
#pragma multi_compile_raytracing _ 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 _ USE_LEGACY_LIGHTMAPS
#pragma multi_compile_fragment PUNCTUAL_SHADOW_LOW PUNCTUAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_HIGH
#pragma multi_compile_fragment DIRECTIONAL_SHADOW_LOW DIRECTIONAL_SHADOW_MEDIUM DIRECTIONAL_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
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_COLORED_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_COLORED_TRANSMISSION
// GraphKeywords: <None>
// Defines
#define SHADERPASS SHADERPASS_FORWARD
#define SUPPORT_BLENDMODE_PRESERVE_SPECULAR_LIGHTING 1
#define HAS_LIGHTLOOP 1
#define RAYTRACING_SHADER_GRAPH_DEFAULT
#define SHADER_LIT 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
// 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
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl" // Required before including properties as it defines UNITY_TEXTURE_STREAMING_DEBUG_VARS
// 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"
// 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 _AMBIENT_OCCLUSION 1
#define _SPECULAR_OCCLUSION_FROM_AO 1
#define _ENERGY_CONSERVING_SPECULAR 1
#if _MATERIAL_FEATURE_COLORED_TRANSMISSION
// Colored Transmission doesn't support clear coat
#undef _MATERIAL_FEATURE_CLEAR_COAT
#endif
// 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
// See Lit.shader
#if SHADERPASS == SHADERPASS_MOTION_VECTORS && defined(WRITE_DECAL_BUFFER_AND_RENDERING_LAYER)
#define WRITE_DECAL_BUFFER
#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(_TRANSPARENT_REFRACTIVE_SORT)) && defined(_SURFACE_TYPE_TRANSPARENT)
#define _WRITE_TRANSPARENT_MOTION_VECTOR
#endif
// -- Graph Properties
CBUFFER_START(UnityPerMaterial)
float _AlphaCutoff;
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;
UNITY_TEXTURE_STREAMING_DEBUG_VARS;
float _BlendMode;
float _EnableBlendModePreserveSpecularLighting;
float _RayTracing;
float _RefractionModel;
float _MaterialID;
float _MaterialTypeMask;
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"
// 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 color : COLOR;
#if UNITY_ANY_INSTANCING_ENABLED || defined(ATTRIBUTES_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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, float(0), float(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(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, 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_Clamp_float3(float3 In, float3 Min, float3 Max, out float3 Out)
{
Out = clamp(In, Min, Max);
}
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, float(0), float(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(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, 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 = TransformWorldToTangentDir(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
}
float3 _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3;
Unity_Clamp_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, float3(-1, -1, -1), float3(1, 1, 1), _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3);
float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
Unity_Normalize_float3(_Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_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, 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;
description.Position = IN.ObjectSpacePosition;
description.Normal = IN.ObjectSpaceNormal;
description.Tangent = IN.ObjectSpaceTangent;
return description;
}
// Graph Pixel
struct SurfaceDescription
{
float3 BaseColor;
float3 Emission;
float Alpha;
float AlphaClipThreshold;
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, 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_e703337da3887f8db2787989294238f9_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, float(0), float(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(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, float(0), float(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, float(0), float(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, 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, float(0), float(2), _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
Unity_Divide_float(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, float(1), _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, float(0), float(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, float(-0.5), _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, float(0), float(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, float(0), float(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_cd1a829e9d09c088965697dae02aa809_Out_3_Float;
Unity_Branch_float(_Property_e703337da3887f8db2787989294238f9_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_cd1a829e9d09c088965697dae02aa809_Out_3_Float);
float3 _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3;
Unity_Lerp_float3(_BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3, (_Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4.xyz), (_Branch_cd1a829e9d09c088965697dae02aa809_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);
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_R_1_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[0];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_G_2_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[1];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_B_3_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[2];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[3];
float _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float = _AlphaCutoff;
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, 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_cd1a829e9d09c088965697dae02aa809_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_cd1a829e9d09c088965697dae02aa809_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_cd1a829e9d09c088965697dae02aa809_Out_3_Float.xxxx), _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4);
surface.BaseColor = _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
surface.Emission = float3(0, 0, 0);
surface.Alpha = _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float;
surface.AlphaClipThreshold = _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float;
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;
#if UNITY_ANY_INSTANCING_ENABLED
#else
#endif
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;
#if UNITY_ANY_INSTANCING_ENABLED
#else
#endif
#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.thickness = 0.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_COLORED_TRANSMISSION
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_COLORED_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 !defined(SHADER_STAGE_RAY_TRACING)
// Mipmap mode debugging isn't supported with ray tracing as it relies on derivatives
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
#ifdef FRAG_INPUTS_USE_TEXCOORD0
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG(posInput.positionSS, fragInputs.texCoord0);
#else
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG_NO_UV(posInput.positionSS);
#endif
surfaceData.metallic = 0;
}
#endif
// We need to call ApplyDebugToSurfaceData after filling the surfaceData 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
#ifdef DEBUG_DISPLAY
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
surfaceDescription.Alpha = 1.0f;
}
#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
float alpha = 1.0;
alpha = surfaceDescription.Alpha;
// Builtin Data
// For back lighting we use the oposite vertex normal
InitBuiltinData(posInput, 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 = GetMeshRenderingLayerMask();
#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
// When overriding GI, we need to force the isLightmap flag to make sure we don't add APV (sampled in the lightloop) on top of the overridden value (set at GBuffer stage)
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
#if !defined(SHADER_STAGE_RAY_TRACING)
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
#else
#endif
#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_local _ _ALPHATEST_ON
#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 _TRANSPARENT_REFRACTIVE_SORT
#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
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_COLORED_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_COLORED_TRANSMISSION
// GraphKeywords: <None>
// Defines
#define SHADERPASS SHADERPASS_CONSTANT
#define RAYTRACING_SHADER_GRAPH_DEFAULT
#define SUPPORT_GLOBAL_MIP_BIAS 1
// 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
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl" // Required before including properties as it defines UNITY_TEXTURE_STREAMING_DEBUG_VARS
// 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"
// 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 _AMBIENT_OCCLUSION 1
#define _SPECULAR_OCCLUSION_FROM_AO 1
#define _ENERGY_CONSERVING_SPECULAR 1
#if _MATERIAL_FEATURE_COLORED_TRANSMISSION
// Colored Transmission doesn't support clear coat
#undef _MATERIAL_FEATURE_CLEAR_COAT
#endif
// 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
// See Lit.shader
#if SHADERPASS == SHADERPASS_MOTION_VECTORS && defined(WRITE_DECAL_BUFFER_AND_RENDERING_LAYER)
#define WRITE_DECAL_BUFFER
#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(_TRANSPARENT_REFRACTIVE_SORT)) && defined(_SURFACE_TYPE_TRANSPARENT)
#define _WRITE_TRANSPARENT_MOTION_VECTOR
#endif
// -- Graph Properties
CBUFFER_START(UnityPerMaterial)
float _AlphaCutoff;
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;
UNITY_TEXTURE_STREAMING_DEBUG_VARS;
float _BlendMode;
float _EnableBlendModePreserveSpecularLighting;
float _RayTracing;
float _RefractionModel;
float _MaterialID;
float _MaterialTypeMask;
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"
// GraphIncludes: <None>
// --------------------------------------------------
// 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 || defined(ATTRIBUTES_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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 || defined(VARYINGS_NEED_INSTANCEID)
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, float(0), float(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(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, 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_Clamp_float3(float3 In, float3 Min, float3 Max, out float3 Out)
{
Out = clamp(In, Min, Max);
}
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, float(0), float(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(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, 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 = TransformWorldToTangentDir(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
}
float3 _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3;
Unity_Clamp_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, float3(-1, -1, -1), float3(1, 1, 1), _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3);
float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
Unity_Normalize_float3(_Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_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, 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;
description.Position = IN.ObjectSpacePosition;
description.Normal = IN.ObjectSpaceNormal;
description.Tangent = IN.ObjectSpaceTangent;
return description;
}
// Graph Pixel
struct SurfaceDescription
{
float3 BaseColor;
float3 Emission;
float Alpha;
float AlphaClipThreshold;
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, 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_e703337da3887f8db2787989294238f9_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, float(0), float(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(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, float(0), float(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, float(0), float(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, 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, float(0), float(2), _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
Unity_Divide_float(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, float(1), _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, float(0), float(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, float(-0.5), _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, float(0), float(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, float(0), float(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_cd1a829e9d09c088965697dae02aa809_Out_3_Float;
Unity_Branch_float(_Property_e703337da3887f8db2787989294238f9_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_cd1a829e9d09c088965697dae02aa809_Out_3_Float);
float3 _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3;
Unity_Lerp_float3(_BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3, (_Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4.xyz), (_Branch_cd1a829e9d09c088965697dae02aa809_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);
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_R_1_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[0];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_G_2_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[1];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_B_3_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[2];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[3];
float _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float = _AlphaCutoff;
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, 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_cd1a829e9d09c088965697dae02aa809_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_cd1a829e9d09c088965697dae02aa809_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_cd1a829e9d09c088965697dae02aa809_Out_3_Float.xxxx), _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4);
surface.BaseColor = _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
surface.Emission = float3(0, 0, 0);
surface.Alpha = _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float;
surface.AlphaClipThreshold = _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float;
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;
#if UNITY_ANY_INSTANCING_ENABLED
#else
#endif
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;
#if UNITY_ANY_INSTANCING_ENABLED
#else
#endif
#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.thickness = 0.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_COLORED_TRANSMISSION
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_COLORED_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 !defined(SHADER_STAGE_RAY_TRACING)
// Mipmap mode debugging isn't supported with ray tracing as it relies on derivatives
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
#ifdef FRAG_INPUTS_USE_TEXCOORD0
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG(posInput.positionSS, fragInputs.texCoord0);
#else
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG_NO_UV(posInput.positionSS);
#endif
surfaceData.metallic = 0;
}
#endif
// We need to call ApplyDebugToSurfaceData after filling the surfaceData 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
#ifdef DEBUG_DISPLAY
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
surfaceDescription.Alpha = 1.0f;
}
#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
float alpha = 1.0;
alpha = surfaceDescription.Alpha;
// Builtin Data
// For back lighting we use the oposite vertex normal
InitBuiltinData(posInput, 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 = GetMeshRenderingLayerMask();
#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
// When overriding GI, we need to force the isLightmap flag to make sure we don't add APV (sampled in the lightloop) on top of the overridden value (set at GBuffer stage)
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
#if !defined(SHADER_STAGE_RAY_TRACING)
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
#else
#endif
#endif
ENDHLSL
}
}
SubShader
{
Tags
{
"RenderPipeline"="HDRenderPipeline"
"RenderType"="HDLitShader"
"Queue"="AlphaTest+25"
"DisableBatching"="False"
"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_local _ _ALPHATEST_ON
#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 _TRANSPARENT_REFRACTIVE_SORT
#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_L1 PROBE_VOLUMES_L2
#pragma multi_compile_raytracing _ PROBE_VOLUMES_L1 PROBE_VOLUMES_L2
#pragma multi_compile _ DYNAMICLIGHTMAP_ON
#pragma multi_compile_raytracing DECALS_OFF DECALS_3RT DECALS_4RT
#pragma multi_compile_raytracing _ DECAL_SURFACE_GRADIENT
#pragma shader_feature_local _ _REFRACTION_PLANE _REFRACTION_SPHERE _REFRACTION_THIN
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_COLORED_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_COLORED_TRANSMISSION
// GraphKeywords: <None>
// Defines
#define SHADERPASS SHADERPASS_RAYTRACING_INDIRECT
#define PUNCTUAL_SHADOW_LOW
#define DIRECTIONAL_SHADOW_LOW
#define RAYTRACING_SHADER_GRAPH_RAYTRACED
#define LIGHTLOOP_DISABLE_TILE_AND_CLUSTER 1
#define PATH_TRACING_CLUSTERED_DECALS 1
#define HAS_LIGHTLOOP 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
// 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
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl" // Required before including properties as it defines UNITY_TEXTURE_STREAMING_DEBUG_VARS
// 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"
// 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 _AMBIENT_OCCLUSION 1
#define _SPECULAR_OCCLUSION_FROM_AO 1
#define _ENERGY_CONSERVING_SPECULAR 1
#if _MATERIAL_FEATURE_COLORED_TRANSMISSION
// Colored Transmission doesn't support clear coat
#undef _MATERIAL_FEATURE_CLEAR_COAT
#endif
// 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
// See Lit.shader
#if SHADERPASS == SHADERPASS_MOTION_VECTORS && defined(WRITE_DECAL_BUFFER_AND_RENDERING_LAYER)
#define WRITE_DECAL_BUFFER
#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(_TRANSPARENT_REFRACTIVE_SORT)) && defined(_SURFACE_TYPE_TRANSPARENT)
#define _WRITE_TRANSPARENT_MOTION_VECTOR
#endif
// -- Graph Properties
CBUFFER_START(UnityPerMaterial)
float _AlphaCutoff;
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;
UNITY_TEXTURE_STREAMING_DEBUG_VARS;
float _BlendMode;
float _EnableBlendModePreserveSpecularLighting;
float _RayTracing;
float _RefractionModel;
float _MaterialID;
float _MaterialTypeMask;
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"
#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"
// 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, float(0), float(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(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, 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_Clamp_float3(float3 In, float3 Min, float3 Max, out float3 Out)
{
Out = clamp(In, Min, Max);
}
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, float(0), float(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(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, 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 = TransformWorldToTangentDir(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
}
float3 _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3;
Unity_Clamp_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, float3(-1, -1, -1), float3(1, 1, 1), _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3);
float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
Unity_Normalize_float3(_Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_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, 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;
float AlphaClipThreshold;
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, 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_e703337da3887f8db2787989294238f9_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, float(0), float(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(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, float(0), float(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, float(0), float(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, 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, float(0), float(2), _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
Unity_Divide_float(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, float(1), _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, float(0), float(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, float(-0.5), _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, float(0), float(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, float(0), float(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_cd1a829e9d09c088965697dae02aa809_Out_3_Float;
Unity_Branch_float(_Property_e703337da3887f8db2787989294238f9_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_cd1a829e9d09c088965697dae02aa809_Out_3_Float);
float3 _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3;
Unity_Lerp_float3(_BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3, (_Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4.xyz), (_Branch_cd1a829e9d09c088965697dae02aa809_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);
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_R_1_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[0];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_G_2_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[1];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_B_3_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[2];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[3];
float _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float = _AlphaCutoff;
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, 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_cd1a829e9d09c088965697dae02aa809_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_cd1a829e9d09c088965697dae02aa809_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_cd1a829e9d09c088965697dae02aa809_Out_3_Float.xxxx), _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4);
surface.BaseColor = _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
surface.Emission = float3(0, 0, 0);
surface.Alpha = _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float;
surface.AlphaClipThreshold = _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float;
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.thickness = 0.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_COLORED_TRANSMISSION
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_COLORED_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 !defined(SHADER_STAGE_RAY_TRACING)
// Mipmap mode debugging isn't supported with ray tracing as it relies on derivatives
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
#ifdef FRAG_INPUTS_USE_TEXCOORD0
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG(posInput.positionSS, fragInputs.texCoord0);
#else
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG_NO_UV(posInput.positionSS);
#endif
surfaceData.metallic = 0;
}
#endif
// We need to call ApplyDebugToSurfaceData after filling the surfaceData 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
#ifdef DEBUG_DISPLAY
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
surfaceDescription.Alpha = 1.0f;
}
#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
float alpha = 1.0;
alpha = surfaceDescription.Alpha;
// Builtin Data
// For back lighting we use the oposite vertex normal
InitBuiltinData(posInput, 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 = GetMeshRenderingLayerMask();
#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
// When overriding GI, we need to force the isLightmap flag to make sure we don't add APV (sampled in the lightloop) on top of the overridden value (set at GBuffer stage)
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
#if !defined(SHADER_STAGE_RAY_TRACING)
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
#else
#endif
#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_local _ _ALPHATEST_ON
#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 _TRANSPARENT_REFRACTIVE_SORT
#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
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_COLORED_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_COLORED_TRANSMISSION
// GraphKeywords: <None>
// Defines
#define SHADERPASS SHADERPASS_RAYTRACING_VISIBILITY
#define RAYTRACING_SHADER_GRAPH_RAYTRACED
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
// 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
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl" // Required before including properties as it defines UNITY_TEXTURE_STREAMING_DEBUG_VARS
// 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"
// 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 _AMBIENT_OCCLUSION 1
#define _SPECULAR_OCCLUSION_FROM_AO 1
#define _ENERGY_CONSERVING_SPECULAR 1
#if _MATERIAL_FEATURE_COLORED_TRANSMISSION
// Colored Transmission doesn't support clear coat
#undef _MATERIAL_FEATURE_CLEAR_COAT
#endif
// 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
// See Lit.shader
#if SHADERPASS == SHADERPASS_MOTION_VECTORS && defined(WRITE_DECAL_BUFFER_AND_RENDERING_LAYER)
#define WRITE_DECAL_BUFFER
#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(_TRANSPARENT_REFRACTIVE_SORT)) && defined(_SURFACE_TYPE_TRANSPARENT)
#define _WRITE_TRANSPARENT_MOTION_VECTOR
#endif
// -- Graph Properties
CBUFFER_START(UnityPerMaterial)
float _AlphaCutoff;
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;
UNITY_TEXTURE_STREAMING_DEBUG_VARS;
float _BlendMode;
float _EnableBlendModePreserveSpecularLighting;
float _RayTracing;
float _RefractionModel;
float _MaterialID;
float _MaterialTypeMask;
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, float(0), float(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(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, 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_Clamp_float3(float3 In, float3 Min, float3 Max, out float3 Out)
{
Out = clamp(In, Min, Max);
}
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, float(0), float(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(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, 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 = TransformWorldToTangentDir(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
}
float3 _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3;
Unity_Clamp_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, float3(-1, -1, -1), float3(1, 1, 1), _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3);
float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
Unity_Normalize_float3(_Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_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, 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;
float AlphaClipThreshold;
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, 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_e703337da3887f8db2787989294238f9_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, float(0), float(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(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, float(0), float(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, float(0), float(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, 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, float(0), float(2), _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
Unity_Divide_float(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, float(1), _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, float(0), float(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, float(-0.5), _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, float(0), float(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, float(0), float(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_cd1a829e9d09c088965697dae02aa809_Out_3_Float;
Unity_Branch_float(_Property_e703337da3887f8db2787989294238f9_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_cd1a829e9d09c088965697dae02aa809_Out_3_Float);
float3 _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3;
Unity_Lerp_float3(_BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3, (_Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4.xyz), (_Branch_cd1a829e9d09c088965697dae02aa809_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);
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_R_1_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[0];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_G_2_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[1];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_B_3_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[2];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[3];
float _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float = _AlphaCutoff;
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, 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_cd1a829e9d09c088965697dae02aa809_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_cd1a829e9d09c088965697dae02aa809_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_cd1a829e9d09c088965697dae02aa809_Out_3_Float.xxxx), _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4);
surface.BaseColor = _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
surface.Emission = float3(0, 0, 0);
surface.Alpha = _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float;
surface.AlphaClipThreshold = _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float;
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.thickness = 0.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_COLORED_TRANSMISSION
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_COLORED_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 !defined(SHADER_STAGE_RAY_TRACING)
// Mipmap mode debugging isn't supported with ray tracing as it relies on derivatives
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
#ifdef FRAG_INPUTS_USE_TEXCOORD0
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG(posInput.positionSS, fragInputs.texCoord0);
#else
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG_NO_UV(posInput.positionSS);
#endif
surfaceData.metallic = 0;
}
#endif
// We need to call ApplyDebugToSurfaceData after filling the surfaceData 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
#ifdef DEBUG_DISPLAY
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
surfaceDescription.Alpha = 1.0f;
}
#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
float alpha = 1.0;
alpha = surfaceDescription.Alpha;
// Builtin Data
// For back lighting we use the oposite vertex normal
InitBuiltinData(posInput, 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 = GetMeshRenderingLayerMask();
#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
// When overriding GI, we need to force the isLightmap flag to make sure we don't add APV (sampled in the lightloop) on top of the overridden value (set at GBuffer stage)
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
#if !defined(SHADER_STAGE_RAY_TRACING)
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
#else
#endif
#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_local _ _ALPHATEST_ON
#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 _TRANSPARENT_REFRACTIVE_SORT
#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_L1 PROBE_VOLUMES_L2
#pragma multi_compile_raytracing _ PROBE_VOLUMES_L1 PROBE_VOLUMES_L2
#pragma multi_compile _ DYNAMICLIGHTMAP_ON
#pragma shader_feature_local _ _REFRACTION_PLANE _REFRACTION_SPHERE _REFRACTION_THIN
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_COLORED_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_COLORED_TRANSMISSION
// GraphKeywords: <None>
// Defines
#define SHADERPASS SHADERPASS_RAYTRACING_FORWARD
#define PUNCTUAL_SHADOW_LOW
#define DIRECTIONAL_SHADOW_LOW
#define RAYTRACING_SHADER_GRAPH_RAYTRACED
#define HAS_LIGHTLOOP 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
// 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
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl" // Required before including properties as it defines UNITY_TEXTURE_STREAMING_DEBUG_VARS
// 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"
// 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 _AMBIENT_OCCLUSION 1
#define _SPECULAR_OCCLUSION_FROM_AO 1
#define _ENERGY_CONSERVING_SPECULAR 1
#if _MATERIAL_FEATURE_COLORED_TRANSMISSION
// Colored Transmission doesn't support clear coat
#undef _MATERIAL_FEATURE_CLEAR_COAT
#endif
// 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
// See Lit.shader
#if SHADERPASS == SHADERPASS_MOTION_VECTORS && defined(WRITE_DECAL_BUFFER_AND_RENDERING_LAYER)
#define WRITE_DECAL_BUFFER
#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(_TRANSPARENT_REFRACTIVE_SORT)) && defined(_SURFACE_TYPE_TRANSPARENT)
#define _WRITE_TRANSPARENT_MOTION_VECTOR
#endif
// -- Graph Properties
CBUFFER_START(UnityPerMaterial)
float _AlphaCutoff;
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;
UNITY_TEXTURE_STREAMING_DEBUG_VARS;
float _BlendMode;
float _EnableBlendModePreserveSpecularLighting;
float _RayTracing;
float _RefractionModel;
float _MaterialID;
float _MaterialTypeMask;
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/Decal/DecalUtilities.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, float(0), float(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(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, 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_Clamp_float3(float3 In, float3 Min, float3 Max, out float3 Out)
{
Out = clamp(In, Min, Max);
}
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, float(0), float(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(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, 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 = TransformWorldToTangentDir(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
}
float3 _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3;
Unity_Clamp_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, float3(-1, -1, -1), float3(1, 1, 1), _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3);
float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
Unity_Normalize_float3(_Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_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, 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;
float AlphaClipThreshold;
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, 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_e703337da3887f8db2787989294238f9_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, float(0), float(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(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, float(0), float(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, float(0), float(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, 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, float(0), float(2), _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
Unity_Divide_float(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, float(1), _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, float(0), float(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, float(-0.5), _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, float(0), float(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, float(0), float(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_cd1a829e9d09c088965697dae02aa809_Out_3_Float;
Unity_Branch_float(_Property_e703337da3887f8db2787989294238f9_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_cd1a829e9d09c088965697dae02aa809_Out_3_Float);
float3 _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3;
Unity_Lerp_float3(_BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3, (_Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4.xyz), (_Branch_cd1a829e9d09c088965697dae02aa809_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);
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_R_1_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[0];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_G_2_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[1];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_B_3_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[2];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[3];
float _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float = _AlphaCutoff;
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, 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_cd1a829e9d09c088965697dae02aa809_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_cd1a829e9d09c088965697dae02aa809_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_cd1a829e9d09c088965697dae02aa809_Out_3_Float.xxxx), _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4);
surface.BaseColor = _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
surface.Emission = float3(0, 0, 0);
surface.Alpha = _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float;
surface.AlphaClipThreshold = _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float;
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.thickness = 0.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_COLORED_TRANSMISSION
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_COLORED_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 !defined(SHADER_STAGE_RAY_TRACING)
// Mipmap mode debugging isn't supported with ray tracing as it relies on derivatives
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
#ifdef FRAG_INPUTS_USE_TEXCOORD0
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG(posInput.positionSS, fragInputs.texCoord0);
#else
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG_NO_UV(posInput.positionSS);
#endif
surfaceData.metallic = 0;
}
#endif
// We need to call ApplyDebugToSurfaceData after filling the surfaceData 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
#ifdef DEBUG_DISPLAY
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
surfaceDescription.Alpha = 1.0f;
}
#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
float alpha = 1.0;
alpha = surfaceDescription.Alpha;
// Builtin Data
// For back lighting we use the oposite vertex normal
InitBuiltinData(posInput, 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 = GetMeshRenderingLayerMask();
#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
// When overriding GI, we need to force the isLightmap flag to make sure we don't add APV (sampled in the lightloop) on top of the overridden value (set at GBuffer stage)
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
#if !defined(SHADER_STAGE_RAY_TRACING)
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
#else
#endif
#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_local _ _ALPHATEST_ON
#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 _TRANSPARENT_REFRACTIVE_SORT
#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_L1 PROBE_VOLUMES_L2
#pragma multi_compile_raytracing _ PROBE_VOLUMES_L1 PROBE_VOLUMES_L2
#pragma multi_compile _ DYNAMICLIGHTMAP_ON
#pragma multi_compile_raytracing DECALS_OFF DECALS_3RT DECALS_4RT
#pragma multi_compile_raytracing _ DECAL_SURFACE_GRADIENT
#pragma shader_feature_local _ _REFRACTION_PLANE _REFRACTION_SPHERE _REFRACTION_THIN
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_COLORED_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_COLORED_TRANSMISSION
// GraphKeywords: <None>
// Defines
#define SHADERPASS SHADERPASS_RAYTRACING_GBUFFER
#define PUNCTUAL_SHADOW_LOW
#define DIRECTIONAL_SHADOW_LOW
#define RAYTRACING_SHADER_GRAPH_RAYTRACED
#define LIGHTLOOP_DISABLE_TILE_AND_CLUSTER 1
#define PATH_TRACING_CLUSTERED_DECALS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
// 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
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl" // Required before including properties as it defines UNITY_TEXTURE_STREAMING_DEBUG_VARS
// 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"
// 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 _AMBIENT_OCCLUSION 1
#define _SPECULAR_OCCLUSION_FROM_AO 1
#define _ENERGY_CONSERVING_SPECULAR 1
#if _MATERIAL_FEATURE_COLORED_TRANSMISSION
// Colored Transmission doesn't support clear coat
#undef _MATERIAL_FEATURE_CLEAR_COAT
#endif
// 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
// See Lit.shader
#if SHADERPASS == SHADERPASS_MOTION_VECTORS && defined(WRITE_DECAL_BUFFER_AND_RENDERING_LAYER)
#define WRITE_DECAL_BUFFER
#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(_TRANSPARENT_REFRACTIVE_SORT)) && defined(_SURFACE_TYPE_TRANSPARENT)
#define _WRITE_TRANSPARENT_MOTION_VECTOR
#endif
// -- Graph Properties
CBUFFER_START(UnityPerMaterial)
float _AlphaCutoff;
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;
UNITY_TEXTURE_STREAMING_DEBUG_VARS;
float _BlendMode;
float _EnableBlendModePreserveSpecularLighting;
float _RayTracing;
float _RefractionModel;
float _MaterialID;
float _MaterialTypeMask;
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"
#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"
// 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, float(0), float(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(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, 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_Clamp_float3(float3 In, float3 Min, float3 Max, out float3 Out)
{
Out = clamp(In, Min, Max);
}
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, float(0), float(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(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, 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 = TransformWorldToTangentDir(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
}
float3 _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3;
Unity_Clamp_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, float3(-1, -1, -1), float3(1, 1, 1), _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3);
float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
Unity_Normalize_float3(_Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_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, 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;
float AlphaClipThreshold;
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, 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_e703337da3887f8db2787989294238f9_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, float(0), float(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(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, float(0), float(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, float(0), float(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, 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, float(0), float(2), _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
Unity_Divide_float(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, float(1), _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, float(0), float(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, float(-0.5), _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, float(0), float(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, float(0), float(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_cd1a829e9d09c088965697dae02aa809_Out_3_Float;
Unity_Branch_float(_Property_e703337da3887f8db2787989294238f9_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_cd1a829e9d09c088965697dae02aa809_Out_3_Float);
float3 _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3;
Unity_Lerp_float3(_BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3, (_Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4.xyz), (_Branch_cd1a829e9d09c088965697dae02aa809_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);
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_R_1_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[0];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_G_2_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[1];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_B_3_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[2];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[3];
float _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float = _AlphaCutoff;
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, 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_cd1a829e9d09c088965697dae02aa809_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_cd1a829e9d09c088965697dae02aa809_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_cd1a829e9d09c088965697dae02aa809_Out_3_Float.xxxx), _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4);
surface.BaseColor = _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
surface.Emission = float3(0, 0, 0);
surface.Alpha = _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float;
surface.AlphaClipThreshold = _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float;
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.thickness = 0.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_COLORED_TRANSMISSION
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_COLORED_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 !defined(SHADER_STAGE_RAY_TRACING)
// Mipmap mode debugging isn't supported with ray tracing as it relies on derivatives
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
#ifdef FRAG_INPUTS_USE_TEXCOORD0
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG(posInput.positionSS, fragInputs.texCoord0);
#else
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG_NO_UV(posInput.positionSS);
#endif
surfaceData.metallic = 0;
}
#endif
// We need to call ApplyDebugToSurfaceData after filling the surfaceData 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
#ifdef DEBUG_DISPLAY
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
surfaceDescription.Alpha = 1.0f;
}
#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
float alpha = 1.0;
alpha = surfaceDescription.Alpha;
// Builtin Data
// For back lighting we use the oposite vertex normal
InitBuiltinData(posInput, 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 = GetMeshRenderingLayerMask();
#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
// When overriding GI, we need to force the isLightmap flag to make sure we don't add APV (sampled in the lightloop) on top of the overridden value (set at GBuffer stage)
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
#if !defined(SHADER_STAGE_RAY_TRACING)
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
#else
#endif
#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_local _ _ALPHATEST_ON
#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 _TRANSPARENT_REFRACTIVE_SORT
#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_L1 PROBE_VOLUMES_L2
#pragma multi_compile_raytracing _ PROBE_VOLUMES_L1 PROBE_VOLUMES_L2
#pragma multi_compile _ DYNAMICLIGHTMAP_ON
#pragma multi_compile_raytracing DECALS_OFF DECALS_3RT DECALS_4RT
#pragma multi_compile_raytracing _ DECAL_SURFACE_GRADIENT
#pragma shader_feature_local _ _REFRACTION_PLANE _REFRACTION_SPHERE _REFRACTION_THIN
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SUBSURFACE_SCATTERING
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_TRANSMISSION
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_ANISOTROPY
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_IRIDESCENCE
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_SPECULAR_COLOR
#pragma shader_feature_local_fragment _MATERIAL_FEATURE_COLORED_TRANSMISSION
#pragma shader_feature_local_raytracing _MATERIAL_FEATURE_COLORED_TRANSMISSION
// GraphKeywords: <None>
// Defines
#define SHADERPASS SHADERPASS_PATH_TRACING
#define PUNCTUAL_SHADOW_LOW
#define DIRECTIONAL_SHADOW_LOW
#define RAYTRACING_SHADER_GRAPH_DEFAULT
#define LIGHTLOOP_DISABLE_TILE_AND_CLUSTER 1
#define PATH_TRACING_CLUSTERED_DECALS 1
#define HAS_LIGHTLOOP 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
#define SUPPORT_GLOBAL_MIP_BIAS 1
// 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
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl" // Required before including properties as it defines UNITY_TEXTURE_STREAMING_DEBUG_VARS
// 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"
// 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 _AMBIENT_OCCLUSION 1
#define _SPECULAR_OCCLUSION_FROM_AO 1
#define _ENERGY_CONSERVING_SPECULAR 1
#if _MATERIAL_FEATURE_COLORED_TRANSMISSION
// Colored Transmission doesn't support clear coat
#undef _MATERIAL_FEATURE_CLEAR_COAT
#endif
// 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
// See Lit.shader
#if SHADERPASS == SHADERPASS_MOTION_VECTORS && defined(WRITE_DECAL_BUFFER_AND_RENDERING_LAYER)
#define WRITE_DECAL_BUFFER
#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(_TRANSPARENT_REFRACTIVE_SORT)) && defined(_SURFACE_TYPE_TRANSPARENT)
#define _WRITE_TRANSPARENT_MOTION_VECTOR
#endif
// -- Graph Properties
CBUFFER_START(UnityPerMaterial)
float _AlphaCutoff;
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;
UNITY_TEXTURE_STREAMING_DEBUG_VARS;
float _BlendMode;
float _EnableBlendModePreserveSpecularLighting;
float _RayTracing;
float _RefractionModel;
float _MaterialID;
float _MaterialTypeMask;
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/RenderPipeline/Raytracing/Shaders/RayTracingLightCluster.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/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/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 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, float(0), float(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(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, 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_Clamp_float3(float3 In, float3 Min, float3 Max, out float3 Out)
{
Out = clamp(In, Min, Max);
}
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, float(0), float(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(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, 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 = TransformWorldToTangentDir(_Vector3_433840b555db308b97e9b14b6a957195_Out_0_Vector3.xyz, tangentTransform, true);
}
float3 _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3;
Unity_Clamp_float3(_Transform_c7914cc45a011c89b3f53c55afb51673_Out_1_Vector3, float3(-1, -1, -1), float3(1, 1, 1), _Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_Vector3);
float3 _Normalize_09bf8a2bd0a4d38e8b97d5c674f79b44_Out_1_Vector3;
Unity_Normalize_float3(_Clamp_5008beffa5304df4b6180e04c2af9a5b_Out_3_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, 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;
float AlphaClipThreshold;
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, 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_e703337da3887f8db2787989294238f9_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, float(0), float(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(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, float(0), float(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, float(0), float(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, 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, float(0), float(2), _Clamp_67dcc607b6da848097d3412324311616_Out_3_Float);
float _Divide_7e924b680020b8839e898e52794f5c99_Out_2_Float;
Unity_Divide_float(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, float(1), _Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float);
float _Clamp_1a2194bb4d160981b1f98b30c7dcfab8_Out_3_Float;
Unity_Clamp_float(_Add_3723f639f46d838b951924a0c5bf23c0_Out_2_Float, float(0), float(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, float(-0.5), _Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float);
float _Clamp_a36bf92e4148fc81abdfa47745edb1b4_Out_3_Float;
Unity_Clamp_float(_Add_5909635fb2caf188a8f0da78e2b1ad59_Out_2_Float, float(0), float(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, float(0), float(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_cd1a829e9d09c088965697dae02aa809_Out_3_Float;
Unity_Branch_float(_Property_e703337da3887f8db2787989294238f9_Out_0_Boolean, _Multiply_15279359e14bb78da9519b8088ceefbe_Out_2_Float, _Clamp_55025fe224a63e8e864487907e15ec9b_Out_3_Float, _Branch_cd1a829e9d09c088965697dae02aa809_Out_3_Float);
float3 _Lerp_025015016dabe58f98f723728a7969a1_Out_3_Vector3;
Unity_Lerp_float3(_BlendOverlayBaseColor_a7338cc006791f8b850b853ab1ef6a83_OutVector4_1_Vector3, (_Multiply_78cfbe31164b178c9c12dd8c7ded60b4_Out_2_Vector4.xyz), (_Branch_cd1a829e9d09c088965697dae02aa809_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);
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_R_1_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[0];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_G_2_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[1];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_B_3_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[2];
float _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float = _PlanarNM_f392575634df5b86b63ff6e287282b30_XZ_2_Vector4[3];
float _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float = _AlphaCutoff;
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, 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_cd1a829e9d09c088965697dae02aa809_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_cd1a829e9d09c088965697dae02aa809_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_cd1a829e9d09c088965697dae02aa809_Out_3_Float.xxxx), _Lerp_47ca78e28d9a1080952043471bd239f8_Out_3_Vector4);
surface.BaseColor = _Lerp_c4f85e60c5af788ebf03d7cf656bb00b_Out_3_Vector3;
surface.Emission = float3(0, 0, 0);
surface.Alpha = _Split_ccf0a3426f1aea83b9e7f8b1c2f7910b_A_4_Float;
surface.AlphaClipThreshold = _Property_35e1d35e56d12682ac2fecfd3f38259a_Out_0_Float;
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.thickness = 0.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_COLORED_TRANSMISSION
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_TRANSMISSION;
surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_COLORED_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 !defined(SHADER_STAGE_RAY_TRACING)
// Mipmap mode debugging isn't supported with ray tracing as it relies on derivatives
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
#ifdef FRAG_INPUTS_USE_TEXCOORD0
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG(posInput.positionSS, fragInputs.texCoord0);
#else
surfaceData.baseColor = GET_TEXTURE_STREAMING_DEBUG_NO_UV(posInput.positionSS);
#endif
surfaceData.metallic = 0;
}
#endif
// We need to call ApplyDebugToSurfaceData after filling the surfaceData 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
#ifdef DEBUG_DISPLAY
if (_DebugMipMapMode != DEBUGMIPMAPMODE_NONE)
{
surfaceDescription.Alpha = 1.0f;
}
#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
float alpha = 1.0;
alpha = surfaceDescription.Alpha;
// Builtin Data
// For back lighting we use the oposite vertex normal
InitBuiltinData(posInput, 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 = GetMeshRenderingLayerMask();
#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
// When overriding GI, we need to force the isLightmap flag to make sure we don't add APV (sampled in the lightloop) on top of the overridden value (set at GBuffer stage)
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
#if !defined(SHADER_STAGE_RAY_TRACING)
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/VisualEffectVertex.hlsl"
#else
#endif
#endif
ENDHLSL
}
}
CustomEditor "UnityEditor.ShaderGraph.GenericShaderGraphMaterialGUI"
CustomEditorForRenderPipeline "Rendering.HighDefinition.LitShaderGraphGUI" "UnityEngine.Rendering.HighDefinition.HDRenderPipelineAsset"
FallBack "Hidden/Shader Graph/FallbackError"
}