
varying vec3 v_ecPosition;

vec4 srcFragment();
vec4 lightFragment(vec4 srcFragColor, float shadowFactor);

//--------------------------------------------------------------------------------------------------
/// Fragment Shader - Points rendered as spheres with diffuse lighting 
//--------------------------------------------------------------------------------------------------
void main()
{
    //const vec3  ecLightPosition = vec3(0.5, 5.0, 7.0);
    //vec3 lightDir = normalize(ecLightPosition - v_ecPosition);
	const vec3 lightDir = vec3(0, 0, 1);

    // Calculate normal from texture coordinates
    vec3 N;
    N.xy = gl_PointCoord.st*vec2(2.0, -2.0) + vec2(-1.0, 1.0);
	float mag = dot(N.xy, N.xy);
	
	// Kill pixels outside circle
    if (mag > 1) discard;   
    N.z = sqrt(1 - mag);

    // Calculate diffuse lighting
    float diffuse = max(0.0, dot(lightDir, N));

    vec4 color = srcFragment();
    gl_FragColor = vec4(color.rgb*diffuse, color.a);

    //gl_FragDepth = gl_FragCoord.z - 15.0*(1-mag);
}




