From 78f8e56aab2808c5beaae65651971d6bc172ba30 Mon Sep 17 00:00:00 2001
From: Yoel <s73017@beuth-hochschule.de>
Date: Mon, 29 Mar 2021 17:44:00 +0200
Subject: [PATCH] New functions sampleEmissionProfile called and emission_pdf

---
 RayTracer/material/Material.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/RayTracer/material/Material.h b/RayTracer/material/Material.h
index 63090e4..14d4de0 100644
--- a/RayTracer/material/Material.h
+++ b/RayTracer/material/Material.h
@@ -1,5 +1,6 @@
 #pragma once
 
+#include <optional>
 #include <random>
 
 #include "../sampling/Sampler.h"
@@ -11,12 +12,14 @@ class Material {
    public:
 	virtual util::Vec3 albedo(const std::pair<float, float>& uv) const = 0;
 	virtual util::Vec3 emission(const std::pair<float, float>& uv) const = 0;
+	virtual std::pair<float, float> sampleEmissionProfile() const = 0;
 	virtual util::Vec3 scattered_d(const util::Vec3& d,
 	                               const util::Vec3& n) const = 0;
 	virtual bool scatter(const util::Vec3& d, const util::Vec3& n) const = 0;
 	virtual float calculateLightMultiplier(const util::Vec3& d_in,
 	                                       const util::Vec3& d_out,
 	                                       const util::Vec3& n) const = 0;
+	virtual std::optional<float> emission_pdf(float u, float v) const = 0;
 };
 util::Vec3 reflection(const util::Vec3& d, const util::Vec3& n);
 }  // namespace material
-- 
GitLab