diff --git a/RayTracer/material/ReflectiveMaterial.cpp b/RayTracer/material/ReflectiveMaterial.cpp index 08754c9eff0d410aff934145f523e69b6b04c1fe..1a46176723b5dae86092fe3061869ee712c1b3bf 100644 --- a/RayTracer/material/ReflectiveMaterial.cpp +++ b/RayTracer/material/ReflectiveMaterial.cpp @@ -11,20 +11,20 @@ ReflectiveMaterial::ReflectiveMaterial( const std::shared_ptr<util::Sampler>& albedo_texture, const std::shared_ptr<util::Sampler>& emission_texture, float clearness) : albedo_texture(albedo_texture), - emission_texture(emission_texture), + emission_profile({emission_texture}), clearness(clearness) { } ReflectiveMaterial::ReflectiveMaterial( const std::shared_ptr<util::Sampler>& albedo_texture, float clearness) : albedo_texture(albedo_texture), - emission_texture( - std::make_shared<Constant>(Constant(util::Vec3(0, 0, 0)))), + emission_profile( + {std::make_shared<Constant>(Constant(util::Vec3(0, 0, 0)))}), clearness(clearness) { } ReflectiveMaterial::ReflectiveMaterial(const util::Vec3& color, float clearness) : albedo_texture(std::make_shared<Constant>(Constant(color))), - emission_texture( - std::make_shared<Constant>(Constant(util::Vec3(0, 0, 0)))), + emission_profile( + {std::make_shared<Constant>(Constant(util::Vec3(0, 0, 0)))}), clearness(clearness) { } util::Vec3 ReflectiveMaterial::albedo(const std::pair<float, float>& uv) const { @@ -32,7 +32,7 @@ util::Vec3 ReflectiveMaterial::albedo(const std::pair<float, float>& uv) const { } util::Vec3 ReflectiveMaterial::emission( const std::pair<float, float>& uv) const { - return emission_texture->color(uv.first, uv.second); + return emission_profile.color(uv.first, uv.second); } util::Vec3 ReflectiveMaterial::scattered_d(const util::Vec3& d, const util::Vec3& n) const { diff --git a/RayTracer/material/ReflectiveMaterial.h b/RayTracer/material/ReflectiveMaterial.h index 69c6dcc4e0ddaf2185976ebef0a0ccffcc3795a0..fab8f78191456b1b05ef41a22188470aad96dc1b 100644 --- a/RayTracer/material/ReflectiveMaterial.h +++ b/RayTracer/material/ReflectiveMaterial.h @@ -1,5 +1,6 @@ #pragma once +#include "../tools/EmissionProfile.h" #include "Material.h" namespace material { @@ -24,7 +25,7 @@ class ReflectiveMaterial : public Material { private: std::shared_ptr<util::Sampler> albedo_texture; - std::shared_ptr<util::Sampler> emission_texture; + util::EmissionProfile emission_profile; float clearness; }; } // namespace material