updated from LightSourceAndShadow