void LightDir_float(out float3 Direction){
#ifdef SHADERGRAPH_PREVIEW
Direction = float3(0, 1, 0);
#else
Direction = GetMainLight().direction;
#endif
}
half GetMainLightShadowFade_alt(float3 positionWS)
{
float4 MainLightShadowParams = float4(1,1,1,1);
float3 camToPixel = positionWS - _WorldSpaceCameraPos;
float distanceCamToPixel2 = dot(camToPixel, camToPixel);
float fade = saturate(distanceCamToPixel2 * float(MainLightShadowParams.z) + float(MainLightShadowParams.w));
return half(fade);
}
SAMPLER(sampler_LinearClamp);
void Test_float (float3 WorldPos, out float3 ShadowCoord, out float ShadowDepth, out float4x4 ShadowMatrix, out float4 CascadeSphere, out float Fade){
#ifdef SHADERGRAPH_PREVIEW
ShadowCoord = float3(0, 0, 0);
ShadowDepth = 1;
ShadowMatrix = 0;
CascadeSphere = 0;
Fade = 0;
#else
ShadowSamplingData samplingData = GetMainLightShadowSamplingData();
Fade = GetMainLightShadowFade_alt(WorldPos);
#if defined(_MAIN_LIGHT_SHADOWS_SCREEN) && !defined(_SURFACE_TYPE_TRANSPARENT)
float4 shadowCoord = ComputeScreenPos(TransformWorldToHClip(WorldPos));
#else
float4 shadowCoord = TransformWorldToShadowCoord(WorldPos);
#endif
ShadowCoord = shadowCoord;
// Hard Shadows
ShadowDepth = SAMPLE_TEXTURE2D_LOD(_MainLightShadowmapTexture, sampler_LinearClamp, shadowCoord.xy, 0).r;
#ifdef _MAIN_LIGHT_SHADOWS_CASCADE
int cascadeIndex = ComputeCascadeIndex(WorldPos);
#else
int cascadeIndex = 0;
#endif
if (cascadeIndex == 0 ){
CascadeSphere = _CascadeShadowSplitSpheres0;
}else if (cascadeIndex == 1 ){
CascadeSphere = _CascadeShadowSplitSpheres1;
}else if (cascadeIndex == 2){
CascadeSphere = _CascadeShadowSplitSpheres2;
}else if (cascadeIndex == 3){
CascadeSphere = _CascadeShadowSplitSpheres3;
}else{
CascadeSphere = 0;
}
if (BEYOND_SHADOW_FAR(shadowCoord)){
CascadeSphere = 1;
}
ShadowMatrix = 0;
#endif
}
void SampleCascadeSpheres_float (out float4 sphere0, out float4 sphere1,out float4 sphere2,out float4 sphere3){
#ifdef SHADERGRAPH_PREVIEW
sphere0 = float4(1,1,1,1);
sphere1 = float4(1,1,1,1);
sphere2 = float4(1,1,1,1);
sphere3 = float4(1,1,1,1);
#else
sphere0 = _CascadeShadowSplitSpheres0;
sphere1 = _CascadeShadowSplitSpheres1;
sphere2 = _CascadeShadowSplitSpheres2;
sphere3 = _CascadeShadowSplitSpheres3;
#endif
}