43 lines
1.4 KiB
GLSL
43 lines
1.4 KiB
GLSL
#version 130
|
|
|
|
uniform sampler2D t0, t1;//, t2;
|
|
uniform vec2 vsize;
|
|
uniform float clum;
|
|
uniform bool has_bloom;
|
|
|
|
float unpackDepth(vec4 dv) {
|
|
return dot(dv.rgb, vec3(65025., 255., 1.));
|
|
}
|
|
|
|
void main(void) {
|
|
vec2 tc = gl_TexCoord[0].xy;//, dt = 2. / vsize, dt2 = dt + dt;
|
|
vec4 bloom;
|
|
float tone = 1. / clum;
|
|
if (has_bloom) {
|
|
bloom = (texture2D(t1, tc) * 3. +
|
|
textureOffset(t1, tc, ivec2(2, 0)) * 2. +
|
|
textureOffset(t1, tc, ivec2(0, 2)) * 2. +
|
|
textureOffset(t1, tc, ivec2(-2, 0)) * 2. +
|
|
textureOffset(t1, tc, ivec2(0, -2)) * 2. +
|
|
textureOffset(t1, tc, ivec2(2, 2)) * 1.5 +
|
|
textureOffset(t1, tc, ivec2(2, -2)) * 1.5 +
|
|
textureOffset(t1, tc, ivec2(-2, -2)) * 1.5 +
|
|
textureOffset(t1, tc, ivec2(-2, 2)) * 1.5 +
|
|
textureOffset(t1, tc, ivec2(4, 0)) +
|
|
textureOffset(t1, tc, ivec2(0, 4)) +
|
|
textureOffset(t1, tc, ivec2(-4, 0)) +
|
|
textureOffset(t1, tc, ivec2(0, -4)) +
|
|
textureOffset(t1, tc, ivec2(4, 2)) +
|
|
textureOffset(t1, tc, ivec2(4, -2)) +
|
|
textureOffset(t1, tc, ivec2(-4, -2)) +
|
|
textureOffset(t1, tc, ivec2(-4, 2)) +
|
|
textureOffset(t1, tc, ivec2(2, 4)) +
|
|
textureOffset(t1, tc, ivec2(2, -4)) +
|
|
textureOffset(t1, tc, ivec2(-2, -4)) +
|
|
textureOffset(t1, tc, ivec2(-2, 4))) / 29.;
|
|
vec4 diff = texture2D(t0, tc);
|
|
gl_FragColor = max(diff * tone, bloom);// + vec4(0.01/(clum+0.1));
|
|
} else
|
|
gl_FragColor = texture2D(t0, tc) * tone;// + vec4(0.01/(clum+0.1));
|
|
}
|