//#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" //#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Version.hlsl" //#if VERSION_GREATER_EQUAL(10, 0) //#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl" //#endif //#if VERSION_GREATER_EQUAL(10,0) #define SHADOWPASS ( SHADERPASS == SHADERPASS_SHADOWCASTER ) //#else //#define SHADOWPASS defined(SHADERPASS_SHADOWCASTER) //#endif float Dither32(float2 Pos) { float Ret = dot( float3(Pos.xy, 0.5f), float3(0.40625f, 0.15625f, 0.46875f ) ); return frac(Ret); } void CameraFade_float( // Base inputs float4 positionSP, float3 positionWS, float CameraInversFadeRange, float CameraInversFarFadeRange, float CameraFadeDist, float CameraFarFadeDist, float AlphaIN, float AlphaTh, out real Alpha ) { #if SHADOWPASS //Alpha = AlphaIN * saturate( (positionSP.w - CameraFadeDist) * CameraInversFadeRange - Dither32(positionSP.xy / positionSP.w * _ScreenParams.xy ) ); Alpha = AlphaIN; #else float distanceToCam = distance(positionWS, GetCameraPositionWS() ); float a = saturate((distanceToCam - CameraFadeDist) * CameraInversFadeRange) * saturate((CameraFarFadeDist - distanceToCam)* CameraInversFarFadeRange); //Alpha = AlphaIN * saturate( saturate(distanceToCam - CameraFadeDist) * saturate(CameraFarFadeDist - distanceToCam)* CameraInversFadeRange - Dither32(positionSP.xy / positionSP.w * _ScreenParams.xy ) ); Alpha = AlphaIN * saturate(a+AlphaTh - Dither32(positionSP.xy / positionSP.w * _ScreenParams.xy ) ); //Alpha = AlphaIN; #endif }