aboutsummaryrefslogtreecommitdiff
path: root/client/shaders/blur_h/opengl_fragment.glsl
blob: 72d71dc07b39a9f445eb7ba14944ca2e3f139b86 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#define rendered texture0

uniform sampler2D rendered;
uniform vec2 texelSize0;
uniform mediump float bloomRadius;
uniform mat3 bloomBlurWeights;

#ifdef GL_ES
varying mediump vec2 varTexCoord;
#else
centroid varying vec2 varTexCoord;
#endif

// smoothstep - squared
float smstsq(float f)
{
	f = f * f * (3 - 2 * f);
	return f;
}

void main(void)
{
	// kernel distance and linear size
	mediump float n = 2. * bloomRadius + 1.;

	vec2 uv = varTexCoord.st - vec2(bloomRadius * texelSize0.x, 0.);
	vec4 color = vec4(0.);
	mediump float sum = 0.;
	for (mediump float i = 0.; i < n; i++) {
		mediump float weight = smstsq(1. - (abs(i / bloomRadius - 1.)));
		color.rgb += texture2D(rendered, uv).rgb * weight;
		sum += weight;
		uv += vec2(texelSize0.x, 0.);
	}
	color /= sum;
	gl_FragColor = vec4(color.rgb, 1.0); // force full alpha to avoid holes in the image.
}