Files
HydraV3/HydraEngine/source/buffer/HydraShadowBufferManager.h
T

48 lines
1.8 KiB
C++
Raw Normal View History

2026-08-06 21:11:33 +01:00
#ifndef HYDRASHADOWBUFFERMANAGER
#define HYDRASHADOWBUFFERMANAGER
#include "../engine/HydraObject.h"
#include "HydraShadowBuffer.h"
#include "../ecs/components/HydraDirectionalShadowSourceComponent.h"
#include "../ecs/components/HydraSpotShadowSourceComponent.h"
2026-08-16 13:47:11 +01:00
#include "../ecs/components/HydraPointShadowSourceComponent.h"
2026-08-06 21:11:33 +01:00
#include <queue>
#include <mutex>
class HydraShadowBufferManager : public HydraObject
{
public:
void Initialise();
void Shutdown();
2026-08-18 16:23:20 +01:00
HydraID AddDirectionalShadow(HydraDirectionalShadowSourceComponent& shadow);
HydraID AddSpotShadow(HydraSpotShadowSourceComponent& shadow);
HydraID AddPointShadow(HydraPointShadowSourceComponent& shadow);
2026-08-16 13:47:11 +01:00
2026-08-06 21:11:33 +01:00
void UpdateDirectionalShadow(HydraID shadow_id, HydraDirectionalShadowSourceComponent shadow);
void UpdateSpotShadow(HydraID shadow_id, HydraSpotShadowSourceComponent shadow);
2026-08-16 13:47:11 +01:00
void UpdatePointShadow(HydraID shadow_id, HydraPointShadowSourceComponent shadow);
2026-08-17 21:44:00 +01:00
void DeleteDirectionalShadow(HydraID shadow_id);
void DeleteSpotShadow(HydraID shadow_id);
void DeletePointShadow(HydraID shadow_id);
2026-08-16 13:47:11 +01:00
2026-08-06 21:11:33 +01:00
void UpdateShadowBuffer();
private:
2026-08-18 16:23:20 +01:00
2026-08-06 21:11:33 +01:00
std::vector<HydraDirectionalShadowSourceComponent> m_directional_shadow_buffer;
std::vector<HydraSpotShadowSourceComponent> m_spot_shadow_buffer;
2026-08-16 13:47:11 +01:00
std::vector<HydraPointShadowSourceComponent> m_point_shadow_buffer;
2026-08-06 21:11:33 +01:00
std::queue<HydraID> m_available_dir;
std::queue<HydraID> m_available_spot;
2026-08-16 13:47:11 +01:00
std::queue<HydraID> m_available_point;
2026-08-06 21:11:33 +01:00
uint32_t m_directional_shadow_buffer_id;
uint32_t m_spot_shadow_buffer_id;
2026-08-16 13:47:11 +01:00
uint32_t m_point_shadow_buffer_id;
2026-08-06 21:11:33 +01:00
std::mutex m_mutex;
2026-08-18 16:23:20 +01:00
2026-08-06 21:11:33 +01:00
};
#endif /* HYDRASHADOWBUFFERMANAGER */