43 lines
1.6 KiB
HLSL
43 lines
1.6 KiB
HLSL
//#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
|
|
} |