From 2e0197bf693477afb5f1ecec2401a82b29699e8f Mon Sep 17 00:00:00 2001 From: Yoel <s73017@beuth-hochschule.de> Date: Sun, 14 Feb 2021 15:22:51 +0100 Subject: [PATCH] Added texels to SurfacePoints --- RayTracer/tools/SurfacePoint.cpp | 10 +++++++--- RayTracer/tools/SurfacePoint.h | 8 +++++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/RayTracer/tools/SurfacePoint.cpp b/RayTracer/tools/SurfacePoint.cpp index e740eb8..d841275 100644 --- a/RayTracer/tools/SurfacePoint.cpp +++ b/RayTracer/tools/SurfacePoint.cpp @@ -6,18 +6,19 @@ namespace util { SurfacePoint::SurfacePoint(const util::Vec3& point, const util::Vec3& n, + const std::pair<float, float>& uv, const std::shared_ptr<material::Material>& material) - : x(point), n(n), material(material) { + : x(point), n(n), uv(uv), material(material) { } cam::Ray SurfacePoint::scattered_ray(const cam::Ray& inc_ray) const { 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); + return material->albedo(uv); } util::Vec3 SurfacePoint::emission() const { - return material->emission(0, 0); + return material->emission(uv); } bool SurfacePoint::scatter(const util::Vec3& d, const util::Vec3& n) const { return material->scatter(d, n); @@ -28,6 +29,9 @@ util::Vec3 SurfacePoint::point() const { util::Vec3 SurfacePoint::normal() const { return n; } +std::pair<float, float> SurfacePoint::texel() const { + return uv; +} float SurfacePoint::calculateLightMultiplier(const util::Vec3& d_in, const util::Vec3& d_out, const util::Vec3& n) const { diff --git a/RayTracer/tools/SurfacePoint.h b/RayTracer/tools/SurfacePoint.h index 5c3cbee..fc666e0 100644 --- a/RayTracer/tools/SurfacePoint.h +++ b/RayTracer/tools/SurfacePoint.h @@ -7,23 +7,25 @@ namespace util { class SurfacePoint { public: SurfacePoint(const util::Vec3& point, const util::Vec3& n, + const std::pair<float, float>& uv, const std::shared_ptr<material::Material>& material); cam::Ray scattered_ray(const cam::Ray& inc_ray) const; - util::Vec3 albedo() const; // TODO TexelPos - util::Vec3 emission() const; // TODO TexelPos + util::Vec3 albedo() const; + util::Vec3 emission() const; bool scatter(const util::Vec3& d, const util::Vec3& n) const; util::Vec3 point() const; util::Vec3 normal() const; + std::pair<float, float> texel() const; float calculateLightMultiplier(const util::Vec3& d_in, const util::Vec3& d_out, const util::Vec3& n) const; // Attributes - // TODO TexelPos std::shared_ptr<material::Material> material; private: util::Vec3 x, n; + std::pair<float, float> uv; }; } // namespace util -- GitLab