     float distance = length (cameraPosition - Q);
     vec3 L = (cameraPosition - Q) / distance;
 
-    vec3 light = vec3 (1.0, 1.0, 1.0) * pointLightAttenuation (distance, 250.0, false);
+    vec3 light = vec3 (1.0, 1.0, 1.0) * pointLightAttenuation (distance, 250.0, true);
     
     float lambertian = max (dot (L, N), 0);
 
     return light * (diffuse * lambertian);
 }
+
 
 vec3 primitiveColour()
 {

        out     vec4            fragmentColour; //!< The computed output colour of this particular pixel;


/// <summary> Can be used to colour the scene using red, green or and blue triangles. </summary>
/// <returns> A single colour based on the primitive ID of the current triangle. </returns>
vec3 primitiveColour();

    }*/
    
    // Outcome.
    fragmentColour = vec4 (ambient + lighting, 1.0);
}


void obtainMaterialProperties()
{
    // We can use the instance ID to reconstruct the diffuse and specular colours from the RGBA material buffer.
    // Each instanceID is allocated 16 bytes of data for the diffuse colour and 16 bytes for the specular colour.
    vec4 diffusePart    = texelFetch (materialTBO, instanceID * 2);
    vec4 specularPart   = texelFetch (materialTBO, instanceID * 2 + 1);
    
    // The alpha value of the diffuse is unused.
    diffuse = vec3 (diffusePart.r, diffusePart.g, diffusePart.b) * kd;
    
    // The alpha value of the specular is the shininess value.
    specular = vec3 (specularPart.r, specularPart.g, specularPart.b) * ks;
    shininess = specularPart.a; 
}


vec3 cameraPointLight()
{
