diff --git a/Effects/blur.eff b/Effects/blur.eff new file mode 100644 index 000000000..9642cd8fc --- /dev/null +++ b/Effects/blur.eff @@ -0,0 +1,37 @@ + + + Effects/blur + + 0.0 + 0.0 + + + + + + 0 + buffer + buffer-name + + + Shaders/blur.vert + Shaders/blur.frag + + + input_tex + sampler-2d + 0 + + + blurOffset_x + float + blurOffset_x + + + blurOffset_y + float + blurOffset_y + + + + diff --git a/Shaders/blur.frag b/Shaders/blur.frag new file mode 100644 index 000000000..f2e473f1e --- /dev/null +++ b/Shaders/blur.frag @@ -0,0 +1,17 @@ +#version 120 +uniform sampler2D input_tex; +uniform vec2 fg_BufferSize; +uniform float blurOffset_x; +uniform float blurOffset_y; +const float f[5] = float[](0.0, 1.0, 2.0, 3.0, 4.0); +const float w[5] = float[](0.2270270270, 0.1945945946, 0.1216216216, 0.0540540541, 0.0162162162 ); +void main() { + vec2 blurOffset = vec2(blurOffset_x, blurOffset_y) / fg_BufferSize; + vec2 coords = gl_TexCoord[0].xy; + vec4 color = vec4( texture2D( input_tex, coords + f[0] * blurOffset ).rgb * w[0], 1.0 ); + for (int i=1; i<5; ++i ) { + color.rgb += texture2D( input_tex, coords - f[i] * blurOffset ).rgb * w[i]; + color.rgb += texture2D( input_tex, coords + f[i] * blurOffset ).rgb * w[i]; + } + gl_FragColor = color; +} diff --git a/Shaders/blur.vert b/Shaders/blur.vert new file mode 100644 index 000000000..f01ebba78 --- /dev/null +++ b/Shaders/blur.vert @@ -0,0 +1,4 @@ +void main() { + gl_Position = gl_Vertex; + gl_TexCoord[0] = gl_MultiTexCoord0; +}