1 precision mediump float;
2 varying mediump vec2 vTexCoord;
3 uniform sampler2D sTexture;
4 uniform sampler2D sEffect;
5 uniform lowp vec4 uColor;
6 uniform float uBloomIntensity;
7 uniform float uImageIntensity;
8 uniform float uBloomSaturation;
9 uniform float uImageSaturation;
11 vec4 ChangeSaturation(vec4 col, float sat)
13 float grey = dot(col.rgb, vec3(0.3, 0.6, 0.1));
14 return mix(vec4(grey, grey, grey, 1.0), col, sat);
21 image = texture2D(sTexture, vTexCoord);
22 bloom = texture2D(sEffect, vTexCoord);
23 image = ChangeSaturation(image, uImageSaturation) * uImageIntensity;
24 bloom = ChangeSaturation(bloom, uBloomSaturation) * uBloomIntensity;
25 image *= 1.0 - clamp(bloom, 0.0, 1.0); // darken base where bloom is strong, to prevent excessive burn-out of result
26 gl_FragColor = image + bloom;