Skip to content
Snippets Groups Projects
SurfacePoint.cpp 848 B
Newer Older
Yoel's avatar
Yoel committed
#include "SurfacePoint.h"

#include <limits>

#include "../camera/Ray.h"

namespace util {
SurfacePoint::SurfacePoint(const util::Vec3& point, const util::Vec3& n,
                           const std::shared_ptr<material::Material>& material)
    : x(point), n(n), material(material) {
}
cam::Ray SurfacePoint::scattered_ray(const cam::Ray& inc_ray) const {
	return cam::Ray(x, material->scattered_d(inc_ray.d, n),
	                std::numeric_limits<float>::epsilon(), inc_ray.tmax, true);
}
util::Vec3 SurfacePoint::albedo() const {
	return material->albedo(0, 0);
}
util::Vec3 SurfacePoint::emission() const {
	return material->emission(0, 0);
}
bool SurfacePoint::scatter() const {
	return material->scatter();
}
util::Vec3 SurfacePoint::point() const {
	return x;
}
util::Vec3 SurfacePoint::normal() const {
	return n;
}
}  // namespace util