almost deferred rendering, but attenuation doesn't work and it hurting me a lot