uniform float _Fresnel;
uniform float _SpecIntensity;
float saturate (float f) { return max(0.0, min(1.0,f)); }
float splineFresnel (in vec3 N, in vec3 E, in float specIntensity, in float fresnel)
{
    float factor = (1.0 - saturate(dot(N,E)));
    float factor3 = ((factor * factor) * factor);
    vec3 p = vec3(1.0, factor, factor3);
    vec2 t = vec2(1.0 - fresnel, fresnel);
    p.x = dot(p.xy, t);
    p.y = dot(p.yz, t);
    factor = (0.05 + (0.95 * dot(p.xy, t)));
    factor *= specIntensity;
    return factor;
}
varying vec3 inN;
varying vec3 inE;
void main()
{
	float f = splineFresnel (inN, inE, _SpecIntensity, _Fresnel);
	gl_FragColor = vec4(f);
}