From 7bb8a36f8bcb2a6d0293aa8010998d4712d62caa Mon Sep 17 00:00:00 2001 From: CJSatnarine Date: Wed, 10 Jul 2024 19:14:24 -0400 Subject: [PATCH] Implement emissive materials --- material.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/material.h b/material.h index 500ad0a..d1882ad 100644 --- a/material.h +++ b/material.h @@ -10,6 +10,10 @@ class material { public: virtual ~material() = default; + virtual colour emitted(double u, double v, const point3& p) const { + return colour(0,0,0); + } + virtual bool scatter(const ray& rIn, const hitRecord& rec, colour& attenuation, ray& scattered) const { return false; } @@ -88,4 +92,17 @@ class dielectric : public material { } }; +class diffuseLight : public material { + public: + diffuseLight(shared_ptr tex) : tex(tex) {} + diffuseLight(const colour& emit) : tex(make_shared(emit)) {} + + colour emitted(double u, double v, const point3& p) const override { + return tex->value(u, v, p); + } + + private: + shared_ptr tex; +}; + #endif \ No newline at end of file