#pragma once #include "Core/Log.h" #include "Rendering/Texture.h" #include #include #include namespace Donut { class HDRIManager { public: static HDRIManager& Get() { static HDRIManager instance; return instance; } Ref LoadHDRI(const std::string& path); Ref GetCurrentHDRI() const { return m_CurrentHDRI; } void SetCurrentHDRI(const std::string& path); const std::vector& 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> m_HDRICache; Ref m_CurrentHDRI; std::vector m_AvailableHDRI = { "Assets/HDRI/HDR_blue_nebulae-1.hdr", "Assets/HDRI/HDR_subdued_blue_nebulae.hdr", "Assets/HDRI/HDR_subdued_multi_nebulae.hdr", "Assets/HDRI/night_sky.hdr" }; }; };