     float halfAngle     = light.coneAngle / 2;
 
     // Attenuate using smoothstep. Don't cut off at zero, maintains spotlight look.
-    float attenuation   = lightAngle <= halfAngle ? smoothstep (1.0, 0.5, lightAngle / halfAngle) : 0;
+    float attenuation   = lightAngle <= halfAngle ? smoothstep (1.0, 0.75, lightAngle / halfAngle) : 0;
     
     // Return the calculated attenuation factor.
     return attenuation;

            // Enable the wireframe view!
            else
            {
                // The materials should look emissive by using a bright white, unattenuated light.
                vec3 emissiveLighting	= calculateLighting (L, N, V, vec3 (0.5), lambertian);
                
                // Blend the wireframe and emissive light together and smoothstep with the calculated attenuation. This creates a
                // really smooth transition between the standard Phong shading and the wireframe emissive shading!
                const vec3 wireColour	= vec3 (1.0, 1.0, 1.0);
                lighting += (emissiveLighting + wireframe (wireColour)) * smoothstep (0.0, 1.0, attenuation);
            }
        }
    }

void obtainMaterialProperties()
{
    // We can use the instance ID to reconstruct the diffuse and specular colours from the RGBA material buffer.
    int materialID      = obtainMaterialID();

    // Each material is allocated 16 bytes of data for the diffuse colour and 16 bytes for the specular colour.
    vec4 diffusePart    = texelFetch (materials, materialID);
