public void illuminate(SurfacePoint x, WavelengthPacket lambda, Random rng, Illuminable target) {
Vector3 lightIn = x.getPosition().vectorTo(this.position);
double dSquared = lightIn.squaredLength();
lightIn = lightIn.divide(Math.sqrt(dSquared));
double ndotl = x.getShadingNormal().dot(lightIn);
double attenuation = Math.abs(ndotl) / (4.0 * Math.PI * dSquared);
target.addLightSample(new PointLightSample(x, position, emittedPower.sample(lambda).times(attenuation), shadows));