#version 100
precision mediump float;
uniform sampler2D uSampler0_Stage0;
uniform vec2 uImageIncrement_Stage0;
uniform vec2 uBounds_Stage0;
uniform float uKernel_Stage0[25];
varying vec4 vColor;
varying vec2 vMatrixCoord_Stage0;

void main() {
  vec4 output_Stage0;
  { // Stage 0: Convolution
    output_Stage0 = vec4(0, 0, 0, 0);
    vec2 coord = vMatrixCoord_Stage0 - 12.0 * uImageIncrement_Stage0;
    output_Stage0 += texture2D(uSampler0_Stage0, coord) * float(coord.x >= uBounds_Stage0.x && coord.x <= uBounds_Stage0.y) * uKernel_Stage0[0];
    coord += uImageIncrement_Stage0;
    output_Stage0 += texture2D(uSampler0_Stage0, coord) * float(coord.x >= uBounds_Stage0.x && coord.x <= uBounds_Stage0.y) * uKernel_Stage0[1];
    coord += uImageIncrement_Stage0;
    output_Stage0 += texture2D(uSampler0_Stage0, coord) * float(coord.x >= uBounds_Stage0.x && coord.x <= uBounds_Stage0.y) * uKernel_Stage0[2];
    coord += uImageIncrement_Stage0;
    output_Stage0 += texture2D(uSampler0_Stage0, coord) * float(coord.x >= uBounds_Stage0.x && coord.x <= uBounds_Stage0.y) * uKernel_Stage0[3];
    coord += uImageIncrement_Stage0;
    output_Stage0 += texture2D(uSampler0_Stage0, coord) * float(coord.x >= uBounds_Stage0.x && coord.x <= uBounds_Stage0.y) * uKernel_Stage0[4];
    coord += uImageIncrement_Stage0;
    output_Stage0 += texture2D(uSampler0_Stage0, coord) * float(coord.x >= uBounds_Stage0.x && coord.x <= uBounds_Stage0.y) * uKernel_Stage0[5];
    coord += uImageIncrement_Stage0;
    output_Stage0 += texture2D(uSampler0_Stage0, coord) * float(coord.x >= uBounds_Stage0.x && coord.x <= uBounds_Stage0.y) * uKernel_Stage0[6];
    coord += uImageIncrement_Stage0;
    output_Stage0 += texture2D(uSampler0_Stage0, coord) * float(coord.x >= uBounds_Stage0.x && coord.x <= uBounds_Stage0.y) * uKernel_Stage0[7];
    coord += uImageIncrement_Stage0;
    output_Stage0 += texture2D(uSampler0_Stage0, coord) * float(coord.x >= uBounds_Stage0.x && coord.x <= uBounds_Stage0.y) * uKernel_Stage0[8];
    coord += uImageIncrement_Stage0;
    output_Stage0 += texture2D(uSampler0_Stage0, coord) * float(coord.x >= uBounds_Stage0.x && coord.x <= uBounds_Stage0.y) * uKernel_Stage0[9];
    coord += uImageIncrement_Stage0;
    output_Stage0 += texture2D(uSampler0_Stage0, coord) * float(coord.x >= uBounds_Stage0.x && coord.x <= uBounds_Stage0.y) * uKernel_Stage0[10];
    coord += uImageIncrement_Stage0;
    output_Stage0 += texture2D(uSampler0_Stage0, coord) * float(coord.x >= uBounds_Stage0.x && coord.x <= uBounds_Stage0.y) * uKernel_Stage0[11];
    coord += uImageIncrement_Stage0;
    output_Stage0 += texture2D(uSampler0_Stage0, coord) * float(coord.x >= uBounds_Stage0.x && coord.x <= uBounds_Stage0.y) * uKernel_Stage0[12];
    coord += uImageIncrement_Stage0;
    output_Stage0 += texture2D(uSampler0_Stage0, coord) * float(coord.x >= uBounds_Stage0.x && coord.x <= uBounds_Stage0.y) * uKernel_Stage0[13];
    coord += uImageIncrement_Stage0;
    output_Stage0 += texture2D(uSampler0_Stage0, coord) * float(coord.x >= uBounds_Stage0.x && coord.x <= uBounds_Stage0.y) * uKernel_Stage0[14];
    coord += uImageIncrement_Stage0;
    output_Stage0 += texture2D(uSampler0_Stage0, coord) * float(coord.x >= uBounds_Stage0.x && coord.x <= uBounds_Stage0.y) * uKernel_Stage0[15];
    coord += uImageIncrement_Stage0;
    output_Stage0 += texture2D(uSampler0_Stage0, coord) * float(coord.x >= uBounds_Stage0.x && coord.x <= uBounds_Stage0.y) * uKernel_Stage0[16];
    coord += uImageIncrement_Stage0;
    output_Stage0 += texture2D(uSampler0_Stage0, coord) * float(coord.x >= uBounds_Stage0.x && coord.x <= uBounds_Stage0.y) * uKernel_Stage0[17];
    coord += uImageIncrement_Stage0;
    output_Stage0 += texture2D(uSampler0_Stage0, coord) * float(coord.x >= uBounds_Stage0.x && coord.x <= uBounds_Stage0.y) * uKernel_Stage0[18];
    coord += uImageIncrement_Stage0;
    output_Stage0 += texture2D(uSampler0_Stage0, coord) * float(coord.x >= uBounds_Stage0.x && coord.x <= uBounds_Stage0.y) * uKernel_Stage0[19];
    coord += uImageIncrement_Stage0;
    output_Stage0 += texture2D(uSampler0_Stage0, coord) * float(coord.x >= uBounds_Stage0.x && coord.x <= uBounds_Stage0.y) * uKernel_Stage0[20];
    coord += uImageIncrement_Stage0;
    output_Stage0 += texture2D(uSampler0_Stage0, coord) * float(coord.x >= uBounds_Stage0.x && coord.x <= uBounds_Stage0.y) * uKernel_Stage0[21];
    coord += uImageIncrement_Stage0;
    output_Stage0 += texture2D(uSampler0_Stage0, coord) * float(coord.x >= uBounds_Stage0.x && coord.x <= uBounds_Stage0.y) * uKernel_Stage0[22];
    coord += uImageIncrement_Stage0;
    output_Stage0 += texture2D(uSampler0_Stage0, coord) * float(coord.x >= uBounds_Stage0.x && coord.x <= uBounds_Stage0.y) * uKernel_Stage0[23];
    coord += uImageIncrement_Stage0;
    output_Stage0 += texture2D(uSampler0_Stage0, coord) * float(coord.x >= uBounds_Stage0.x && coord.x <= uBounds_Stage0.y) * uKernel_Stage0[24];
    coord += uImageIncrement_Stage0;
    output_Stage0 *= vColor;
  }

  gl_FragColor = output_Stage0;
}
