Lots of updates regarding shading!

Rewrote the whole shading algorithm, now it works properly. Attenuation
is based on light distance from the surface coordinate & light
intensity. If a certain attenuation factor isn't exceeded then the
shading method returns a vec3(0.0).