From 501f94f0c0fc6a234caa6ff9a24314b43e538ef0 Mon Sep 17 00:00:00 2001
From: Yoel <s73017@beuth-hochschule.de>
Date: Mon, 29 Mar 2021 17:46:07 +0200
Subject: [PATCH] Reflective Refactor

---
 RayTracer/material/ReflectiveMaterial.cpp | 12 ++++++------
 RayTracer/material/ReflectiveMaterial.h   |  3 ++-
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/RayTracer/material/ReflectiveMaterial.cpp b/RayTracer/material/ReflectiveMaterial.cpp
index 08754c9..1a46176 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 69c6dcc..fab8f78 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
-- 
GitLab