aboutsummaryrefslogtreecommitdiff
path: root/KaplaDemo/externalIP/resources/shaders/bloomV_fs.cpp
blob: 05f858e339bce32480a08f43602c4290feb01130 (plain) (blame)
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
	uniform sampler2D colorTex;
	uniform sampler2D blurTex;
	uniform float sy;

	void main (void)
	{
		const float hdrScale = 1.5;
		const int kernelSize = 10;
		const float invScale = 1.0 / (hdrScale * float(kernelSize) * 100.0);

		vec3 colorP = texture2D(colorTex, gl_TexCoord[0]).rgb;
		vec3 bloom = vec3(0.0, 0.0, 0.0);

		for (int y = -kernelSize; y <= kernelSize; y++)
		{
			float s = gl_TexCoord[0].s;
			float t = gl_TexCoord[0].t + y * sy;
			vec3 color = texture2D(blurTex, vec2(s,t)).rgb;
			float luminance = dot(color, vec3(0.2125, 0.7154, 0.0721));
			if (luminance > 1.0)
			{
				bloom += color  * ((kernelSize+1) - abs(float(y)));
			}
		}

		vec3 hdrColor = invScale * bloom + colorP;

		vec3 toneMappedColor = 2.0 * hdrColor / (hdrColor + vec3(1.0));
		gl_FragColor = vec4(toneMappedColor, 1.0);
	}