27 lines
851 B
HLSL
27 lines
851 B
HLSL
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 CameraFadeDist,
|
|
float AlphaIN,
|
|
|
|
out real Alpha
|
|
|
|
) {
|
|
#if !defined(SHADERPASS_SHADOWCASTER)
|
|
Alpha = AlphaIN * saturate( (positionSP.w - CameraFadeDist) * CameraInversFadeRange - Dither32(positionSP.xy / positionSP.w * _ScreenParams.xy ) );
|
|
#else
|
|
#if defined(FADESHADOWS_ON)
|
|
float distanceToCam = distance(positionWS, GetCameraPositionWS() );
|
|
Alpha = AlphaIN * saturate( (distanceToCam - CameraFadeDist) * CameraInversFadeRange - Dither32(positionSP.xy / positionSP.w * _ScreenParams.xy ) );
|
|
#else
|
|
Alpha = AlphaIN;
|
|
#endif
|
|
#endif
|
|
} |