Newer
Older
#define _USE_MATH_DEFINES
#include "PointLight.h"
#include "../material/BackgroundMaterial.h"
#include "math.h"
namespace shapes {
PointLight::PointLight(const util::Vec3& emission)
: material(std::make_shared<material::BackgroundMaterial>(emission)) {
}
util::SurfacePoint PointLight::sampleLight(const cam::Hit& h) const {
return util::SurfacePoint(util::Vec3(0), h.point().normalize(), {},
material);
}
util::Vec3 PointLight::lightEmission(const util::SurfacePoint& p) const {
return p.emission();
}
float PointLight::lightPdf(const util::SurfacePoint& p,
const util::Vec3& dl_out) const {
return -std::pow(dl_out.length(), 2);