precision mediump float;       // Set the default precision to medium. We don't need as high of a
                               // precision in the fragment shader.

uniform sampler2D u_Texture;        // The input texture.

varying float v_diffuse;         // This will be passed into the fragment shader.
varying vec2 v_TexCoordinate;       // This will be passed into the fragment shader.

// The entry point for our fragment shader.
void main()
{
    gl_FragColor = texture2D(u_Texture, v_TexCoordinate).rgba * v_diffuse;    // Pass the color directly through the pipeline.
    gl_FragColor.a = 1.0;
}