Spot works
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
#include "../buffer/HydraTextureBufferManager.h"
|
||||
#include "../buffer/HydraMaterialBufferManager.h"
|
||||
#include "../buffer/HydraLightBufferManager.h"
|
||||
#include "../buffer/HydraShadowBufferManager.h"
|
||||
|
||||
#include "../ecs/HydraECS.h"
|
||||
#include "../ecs/systems/HydraTransformSystem.h"
|
||||
@@ -54,6 +55,7 @@
|
||||
#include "../task/ecs/HydraInitialiseComponentsTask.hpp"
|
||||
#include "../task/buffer/HydraShutdownBufferManagerTask.hpp"
|
||||
#include "../task/buffer/HydraInitialiseTextureManagerTask.hpp"
|
||||
#include "../task/buffer/HydraInitialiseShadowBufferTask.hpp"
|
||||
#include "../task/actor/HydraUpdatePlayerTask.h"
|
||||
|
||||
#include "../task/renderer/HydraEndRenderTask.hpp"
|
||||
@@ -149,6 +151,11 @@ HydraLightBufferManager *const HydraEngine::LightBufferManager()
|
||||
return m_light_buffer_manager;
|
||||
}
|
||||
|
||||
HydraShadowBufferManager *const HydraEngine::ShadowBufferManager()
|
||||
{
|
||||
return m_shadow_buffer_manager;
|
||||
}
|
||||
|
||||
void HydraEngine::PossessPlayer(HydraID actor_id)
|
||||
{
|
||||
m_possessed_actor_id = actor_id;
|
||||
@@ -187,6 +194,7 @@ void HydraEngine::_CreateManagers()
|
||||
m_texture_buffer_manager = new HydraTextureBufferManager();
|
||||
m_material_buffer_manager = new HydraMaterialBufferManager();
|
||||
m_light_buffer_manager = new HydraLightBufferManager();
|
||||
m_shadow_buffer_manager = new HydraShadowBufferManager();
|
||||
}
|
||||
|
||||
void HydraEngine::_InitialiseManagers()
|
||||
@@ -208,6 +216,9 @@ void HydraEngine::_InitialiseManagers()
|
||||
m_material_buffer_manager->Intialise();
|
||||
m_light_buffer_manager->Initialise();
|
||||
|
||||
HydraID create_shadow_buffer_task_id = m_task_scheduler->CreateTask<HydraInitialiseShadowBufferTask>(HydraThreadAffinity::Render);
|
||||
m_task_scheduler->WaitForTask(create_shadow_buffer_task_id);
|
||||
|
||||
}
|
||||
|
||||
void HydraEngine::_InitialiseSystems()
|
||||
@@ -277,7 +288,6 @@ void HydraEngine::_InitialiseSystems()
|
||||
|
||||
m_task_scheduler->StartTask(update_trans_id);
|
||||
m_task_scheduler->StartTask(update_mat_id);
|
||||
|
||||
m_task_scheduler->WaitForBarrier(posUpdateBarrierID);
|
||||
|
||||
HydraID update_light_id = m_task_scheduler->CreateTask<HydraUpdateSystemTask>(HydraThreadAffinity::General);
|
||||
@@ -285,16 +295,22 @@ void HydraEngine::_InitialiseSystems()
|
||||
update_light_task->Initialise(m_delta_t, m_light_system);
|
||||
m_task_scheduler->WaitForTask(update_light_id);
|
||||
|
||||
HydraID update_shadow_id = m_task_scheduler->CreateTask<HydraUpdateSystemTask>(HydraThreadAffinity::General);
|
||||
HydraID shadow_barrier = m_task_scheduler->CreateBarrier();
|
||||
|
||||
HydraID update_shadow_id = m_task_scheduler->CreateTask<HydraUpdateSystemTask>(HydraThreadAffinity::General, shadow_barrier);
|
||||
HydraUpdateSystemTask* update_shadow_task = static_cast<HydraUpdateSystemTask*>(m_task_scheduler->GetTask(update_shadow_id));
|
||||
update_shadow_task->Initialise(m_delta_t, m_directional_shadow_system);
|
||||
m_task_scheduler->WaitForTask(update_shadow_id);
|
||||
|
||||
|
||||
HydraID update_spot_shadow_id = m_task_scheduler->CreateTask<HydraUpdateSystemTask>(HydraThreadAffinity::General);
|
||||
HydraID update_spot_shadow_id = m_task_scheduler->CreateTask<HydraUpdateSystemTask>(HydraThreadAffinity::General, shadow_barrier);
|
||||
HydraUpdateSystemTask* update_spot_shadow_task = static_cast<HydraUpdateSystemTask*>(m_task_scheduler->GetTask(update_spot_shadow_id));
|
||||
update_spot_shadow_task->Initialise(m_delta_t, m_spot_shadow_system);
|
||||
m_task_scheduler->WaitForTask(update_spot_shadow_id);
|
||||
|
||||
m_task_scheduler->StartTask(update_shadow_id);
|
||||
m_task_scheduler->StartTask(update_spot_shadow_id);
|
||||
m_task_scheduler->WaitForBarrier(shadow_barrier);
|
||||
|
||||
m_shadow_buffer_manager->UpdateShadowBuffer();
|
||||
}
|
||||
|
||||
void HydraEngine::_GameLoop()
|
||||
|
||||
@@ -27,6 +27,7 @@ class HydraLightBufferManager;
|
||||
class HydraLightSystem;
|
||||
class HydraDirectionalShadowSourceSystem;
|
||||
class HydraSpotShadowSourceSystem;
|
||||
class HydraShadowBufferManager;
|
||||
|
||||
class CLASS_DEFINE HydraEngine : public HydraObject
|
||||
{
|
||||
@@ -58,6 +59,7 @@ public:
|
||||
HydraTextureBufferManager* const TextureBufferManager();
|
||||
HydraMaterialBufferManager* const MaterialBufferManager();
|
||||
HydraLightBufferManager* const LightBufferManager();
|
||||
HydraShadowBufferManager* const ShadowBufferManager();
|
||||
void PossessPlayer(HydraID actor_id);
|
||||
HydraID GetPossessedPlayer();
|
||||
float GetDeltaT();
|
||||
@@ -88,7 +90,7 @@ private:
|
||||
HydraTextureBufferManager* m_texture_buffer_manager = nullptr;
|
||||
HydraMaterialBufferManager* m_material_buffer_manager = nullptr;
|
||||
HydraLightBufferManager* m_light_buffer_manager = nullptr;
|
||||
|
||||
HydraShadowBufferManager* m_shadow_buffer_manager = nullptr;
|
||||
std::shared_ptr<HydraMeshSystem> m_mesh_system;
|
||||
std::shared_ptr<HydraTransformSystem> m_transform_system;
|
||||
std::shared_ptr<HydraRenderSystem> m_render_system;
|
||||
|
||||
Reference in New Issue
Block a user