-- Copy of fragment shader from Physics example
return [[
in vec3 lightDirection;
in vec3 normalDirection;
in vec3 vertexPosition;

vec3 cAmbient = vec3(.25);
vec3 cDiffuse = vec3(1);
vec3 cSpecular = vec3(.35);

vec4 color(vec4 graphicsColor, sampler2D image, vec2 uv) {
  float diffuse = max(dot(normalDirection, lightDirection), 0.);
  float specular = 0.;

  if (diffuse > 0.) {
    vec3 r = reflect(lightDirection, normalDirection);
    vec3 viewDirection = normalize(-vertexPosition);

    float specularAngle = max(dot(r, viewDirection), 0.);
    specular = pow(specularAngle, 5.);
  }

  vec3 cFinal = pow(clamp(vec3(diffuse) * cDiffuse + vec3(specular) * cSpecular, cAmbient, vec3(1.)), vec3(.4545));
  return vec4(cFinal, 1.) * graphicsColor * texture(image, uv);
}
]]
