   vec3 surfaceNormal,
   float shininess) {
 
-  vec3 R = normalize(reflect(lightDirection, surfaceNormal));  
+  vec3 R = normalize(reflect(-lightDirection, surfaceNormal));  
   return pow(max(0.0, dot(R, viewDirection)), shininess);
 }
 

  }

  gl_FragColor = isTexture ? texture2D(uSampler, vTexCoord) : uMaterialColor;
  gl_FragColor.rgb = gl_FragColor.rgb * (diffuse + vAmbientColor) + specular;
}
    if (uPointLightCount == k) break;

    vec3 lightPosition = (uViewMatrix * vec4(uPointLightLocation[k], 1.0)).xyz;
    vec3 lightVector = vViewPosition - lightPosition;
	
    //calculate attenuation
    float lightDistance = length(lightVector);
    float falloff = 500.0 / (lightDistance + 500.0);

    LightResult result = light(lightVector);
    diffuse += result.diffuse * falloff * uPointLightColor[k];
