diff --git a/RayTracer/tools/SurfacePoint.cpp b/RayTracer/tools/SurfacePoint.cpp index 52dfc66bbfe09154b2dc652a89c5036d3e273de1..e740eb84afe476aed87d790af912fec1c9694a4a 100644 --- a/RayTracer/tools/SurfacePoint.cpp +++ b/RayTracer/tools/SurfacePoint.cpp @@ -10,8 +10,8 @@ SurfacePoint::SurfacePoint(const util::Vec3& point, const util::Vec3& n, : 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); + return cam::Ray(x, material->scattered_d(inc_ray.d, n), cam::epsilon, + inc_ray.tmax, true); } util::Vec3 SurfacePoint::albedo() const { return material->albedo(0, 0); @@ -19,8 +19,8 @@ util::Vec3 SurfacePoint::albedo() const { util::Vec3 SurfacePoint::emission() const { return material->emission(0, 0); } -bool SurfacePoint::scatter() const { - return material->scatter(); +bool SurfacePoint::scatter(const util::Vec3& d, const util::Vec3& n) const { + return material->scatter(d, n); } util::Vec3 SurfacePoint::point() const { return x; @@ -28,4 +28,9 @@ util::Vec3 SurfacePoint::point() const { util::Vec3 SurfacePoint::normal() const { return n; } +float SurfacePoint::calculateLightMultiplier(const util::Vec3& d_in, + const util::Vec3& d_out, + const util::Vec3& n) const { + return material->calculateLightMultiplier(d_in, d_out, n); +} } // namespace util \ No newline at end of file