Angelus it was working because // disabled film grain. Since there was problem in film grain code that's why it doesn't work when it's enabled.
post-f.sdr:
#define FLAG_GRAIN
#define FLAG_BLOOM
#define FLAG_DISTORT_NOISE
#define FLAG_SATURATION
#define FLAG_CONTRAST
uniform sampler2D tex;
uniform float timer;
#ifdef FLAG_DISTORT_NOISE
uniform float noise_amount;
#endif
#ifdef FLAG_SATURATION
uniform float saturation;
#endif
#ifdef FLAG_CONTRAST
uniform float contrast;
#endif
#ifdef FLAG_BLOOM
uniform float bloom;
#endif
#ifdef FLAG_GRAIN
uniform float film_grain;
#endif
void main()
{
#ifdef FLAG_DISTORT_NOISE
// Distort noise
float distort_factor = timer * sin(gl_TexCoord[0].x * gl_TexCoord[0].y * 100.0 + timer);
distort_factor = mod(distort_factor, 8.0) * mod(distort_factor, 4.0);
vec2 distort;
if (noise_amount > 0.0)
distort = vec2(mod(distort_factor, noise_amount), mod(distort_factor, noise_amount + 0.002));
else
distort = vec2(0, 0);
#else
vec2 distort = vec2(0, 0);
#endif
#ifdef FLAG_BLOOM
vec4 sum = vec4(0);
vec2 texcoord = vec2(gl_TexCoord[0]) + distort;
vec4 color_in = texture2D(tex, texcoord);
int j;
int i;
vec4 color_glo;
for( i= -4 ;i < 4; i++)
{
for (j = -4; j < 4; j++)
{
sum += texture2D(tex, texcoord + vec2(j, i)*0.004) * 0.25;
}
}
if (texture2D(tex, texcoord).r < 0.3)
{
color_glo = sum * sum * 0.012 + texture2D(tex, texcoord);
}
else
{
if (texture2D(tex, texcoord).r < 0.5)
{
color_glo = sum * sum * 0.012 + texture2D(tex, texcoord);
}
else
{
color_glo = sum * sum * 0.0125 + texture2D(tex, texcoord);
}
}
color_in = mix(color_in, color_glo, bloom);
#else
vec4 color_in = texture2D(tex, gl_TexCoord[0].xy + distort);
#endif
#ifdef FLAG_SATURATION
// Saturation
vec4 color_grayscale;
color_grayscale.rgb = vec3(dot(color_in, vec4(0.299, 0.587, 0.184, 0)));
vec4 color_out = mix(color_in, color_grayscale, 1.0 - saturation);
#else
vec4 color_out = color_in;
#endif
#ifdef FLAG_CONTRAST
// Contrast and brightness
vec3 Afactor = vec3(contrast);
vec3 Bfactor = vec3(0.5 - 0.5 * contrast);
color_out.rgb = color_out.rgb * Afactor + Bfactor;
#endif
#ifdef FLAG_GRAIN
float x = gl_TexCoord[0].x * gl_TexCoord[0].y * timer * 1000.0;
x = mod(x, 13.0) * mod(x, 123.0);
float dx = mod(x, 0.01);
vec3 result = color_out.rgb + color_out.rgb * clamp(0.1 + dx * 100.0, 0.0, 1.0);
vec2 sc;
sc.x = sin(gl_TexCoord[0].y * 2048.0);
sc.y = cos(gl_TexCoord[0].y * 2048.0);
result += color_out.rgb * vec3(sc.x, sc.y, sc.x) * 0.8;
color_out.rgb = mix(color_out.rgb, result, film_grain);
#endif
// Dithering
//float downsampling_factor = 4;
//float bias = 0.5;
//color_out.rgb = floor(color_out.rgb * downsampling_factor + bias) / downsampling_factor;
gl_FragColor = color_out;
}