1234567891011121314151617181920212223242526272829303132333435 |
- #define current texture0
- #define previous texture1
- uniform sampler2D current;
- uniform sampler2D previous;
- uniform vec2 texelSize0;
- uniform mediump float bloomRadius;
- #ifdef GL_ES
- varying mediump vec2 varTexCoord;
- #else
- centroid varying vec2 varTexCoord;
- #endif
- void main(void)
- {
- vec2 offset = bloomRadius * texelSize0;
- vec3 a = texture2D(previous, varTexCoord.st + vec2(-1., -1.) * offset).rgb;
- vec3 b = texture2D(previous, varTexCoord.st + vec2(0., -1.) * offset).rgb;
- vec3 c = texture2D(previous, varTexCoord.st + vec2(1., -1.) * offset).rgb;
- vec3 d = texture2D(previous, varTexCoord.st + vec2(-1., 0.) * offset).rgb;
- vec3 e = texture2D(previous, varTexCoord.st + vec2(0., 0.) * offset).rgb;
- vec3 f = texture2D(previous, varTexCoord.st + vec2(1., 0.) * offset).rgb;
- vec3 g = texture2D(previous, varTexCoord.st + vec2(-1., 1.) * offset).rgb;
- vec3 h = texture2D(previous, varTexCoord.st + vec2(0., 1.) * offset).rgb;
- vec3 i = texture2D(previous, varTexCoord.st + vec2(1., 1.) * offset).rgb;
- vec3 base = texture2D(current, varTexCoord.st).rgb;
- gl_FragColor = max(vec4(base +
- (a + c + g + i) * 0.0625 +
- (b + d + f + h) * 0.125 +
- e * 0.25, 1.), 1e-4);
- }
|