Newer
Older

Yoel
committed
#include "LightSingleGroup.h"
#include "../material/Material.h"
#include "../tools/Vec3.h"
namespace shapes {
LightSingleGroup::LightSingleGroup(const util::Transformation& transform,
std::shared_ptr<Light> light)
: light(light), transform(transform) {
}
LightSingleGroup::LightSingleGroup(const util::Mat4& matrix,
std::shared_ptr<Light> light)
: light(light), transform(util::Transformation(matrix)) {
}
util::SurfacePoint LightSingleGroup::sampleLight() const {
auto sample = light->sampleLight();
auto result = util::SurfacePoint(
transform.toWorld.transformPoint(sample.point()),
transform.toWorldN.transformDir(sample.normal()), sample.material);
return result;

Yoel
committed
}
util::Vec3 LightSingleGroup::calculateLightEmission(const util::SurfacePoint& p,
const util::Vec3& d) const {
return light->calculateLightEmission(p, d);

Yoel
committed
}
} // namespace shapes