Ambient-, Area-, Hemisphere-, PointLight and Light implementation