     vec3 halfway = normalize(viewdir + lightdir);
     float specularcoeff = pow(max(0., dot(surfnorm, halfway)),
                               4.*shininess);
-        // Blinn-Phong needs shininiess about 4 * Phong shininess
-    vec4 specularcolor = specularcoeff * lightcolor;
+    vec4 specularcolor = myb1? specularcoeff * lightcolor : vec4(0.,0.,0.,1.);
 
     // Compute final color
-    return clamp(ambientcolor + diffusecolor
-                   + (myb1 ? specularcolor : vec4(0.,0.,0.,1.)),
-                 0., 1.);  // Clamp to [0,1]
+    return clamp(ambientcolor + diffusecolor + specularcolor, 0., 1.);  
 }
-
 
 void main()
 {

    vec4 paintcolor = gl_Color;

    // Apply Blinn-Phong illumination model
    gl_FragColor = bpLight(lightcolor, lightpos4,
                           paintcolor, surfpt, surfnorm);
}


 */

uniform float myf1;        // Application float (in [0.,1.]; start: 1.)
uniform bool myb1;         // Application bool (turn on/off shader)

varying vec3 surfpt;       // Point on surface (camera coords)
varying vec3 surfnorm_un;  // Surface normal (camera coords)

// bpLight
// Blinn-Phong illumination model
// Given light-source color & position/direction, surface paint color,
// position, & normal vec (normalized). Return apparent surface color.
vec4 bpLight( vec4 lightcolor, vec4 lightpos4,  // Homogeneous form
              vec4 paintcolor, vec3 surfpt, vec3 surfnorm)   
{
    // Compute normalized direction of light source from object
    vec3 lightdir = normalize(lightpos4.xyz - surfpt*lightpos4.w);

    float ambientfraction = 0.2; // Scalar lighting parameter
    float shininess = 5. + myf1 * 70.; // Ambient light fraction of light color

    // Ambient
    vec4 ambientcolor = ambientfraction * lightcolor * paintcolor;
