aboutsummaryrefslogtreecommitdiff
path: root/src/Core/HDRIManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Core/HDRIManager.h')
-rw-r--r--src/Core/HDRIManager.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/Core/HDRIManager.h b/src/Core/HDRIManager.h
new file mode 100644
index 0000000..ebefb3a
--- /dev/null
+++ b/src/Core/HDRIManager.h
@@ -0,0 +1,46 @@
+#pragma once
+
+#include "Core/Log.h"
+#include "Rendering/Texture.h"
+
+#include <string>
+#include <unordered_map>
+#include <memory>
+
+namespace Donut
+{
+ class HDRIManager
+ {
+ public:
+ static HDRIManager& Get()
+ {
+ static HDRIManager instance;
+ return instance;
+ }
+
+ Ref<CubemapTexture> LoadHDRI(const std::string& path);
+ Ref<CubemapTexture> GetCurrentHDRI() const { return m_CurrentHDRI; }
+
+ void SetCurrentHDRI(const std::string& path);
+ const std::vector<std::string>& GetAvailableHDRI() const { return m_AvailableHDRI; }
+ std::string GetHDRIName(const std::string& path) const;
+ void ClearCache();
+ private:
+ HDRIManager() = default;
+ ~HDRIManager() = default;
+
+ HDRIManager(const HDRIManager&) = delete;
+ HDRIManager& operator=(const HDRIManager&) = delete;
+
+ std::unordered_map<std::string, Ref<CubemapTexture>> m_HDRICache;
+
+ Ref<CubemapTexture> m_CurrentHDRI;
+
+ std::vector<std::string> m_AvailableHDRI =
+ {
+ "Assets/HDRI/HDR_blue_nebulae-1.hdr",
+ "Assets/HDRI/HDR_subdued_blue_nebulae.hdr",
+ "Assets/HDRI/HDR_subdued_multi_nebulae.hdr"
+ };
+ };
+};