precision mediump float;

// colors
uniform vec4 vColorMask;
varying vec4 v_Color;

// light
varying vec3 v_Position;
varying vec3 v_lightPos;
varying vec3 v_Normal;

void main(){

    // Get a lighting direction vector from the light to the vertex.
    vec3 lightVector = normalize(v_lightPos - v_Position);

    float diffuse = max(dot(lightVector, normalize(v_Normal)),0.0);

    // Attenuate the light based on distance.
        float distance = distance(v_lightPos,v_Position);
        distance = 1.0 / (1.0 + distance * 0.05);
        diffuse = diffuse * distance;

    //gl_FragColor = v_Color * vColorMask * v_Position[0];
    gl_FragColor = v_Color * min((diffuse + 0.5),1.0);
    gl_FragColor[3] = v_Color[3];
    gl_FragColor = gl_FragColor * vColorMask;
}