Shadows - need to fix frame buffers
This commit is contained in:
@@ -36,6 +36,7 @@
|
||||
#include "../pipeline/HydraPipeline.h"
|
||||
#include "../pipeline/HydraForwardPipeline.h"
|
||||
#include "../pipeline/HydraDeferredPipeline.h"
|
||||
#include "../pipeline/HydraShadowPipeline.h"
|
||||
|
||||
#include "../task/windowmanager/HydraInitialiseWindowManagerTask.hpp"
|
||||
#include "../task/windowmanager/HydraShutdownWindowManagerTask.hpp"
|
||||
@@ -51,6 +52,8 @@
|
||||
#include "../task/buffer/HydraShutdownBufferManagerTask.hpp"
|
||||
#include "../task/buffer/HydraInitialiseTextureManagerTask.hpp"
|
||||
#include "../task/actor/HydraUpdatePlayerTask.h"
|
||||
#include "../task/renderer/HydraBeginRenderTask.hpp"
|
||||
#include "../task/renderer/HydraEndRenderTask.hpp"
|
||||
|
||||
#include "../mesh/HydraMeshManager.h"
|
||||
HydraTaskScheduler *const HydraEngine::TaskScheduler()
|
||||
@@ -177,6 +180,7 @@ void HydraEngine::_CreateManagers()
|
||||
m_mesh_manager = new HydraMeshManager();
|
||||
m_pipeline = new HydraForwardPipeline();
|
||||
m_deferred_pipeline = new HydraDeferredPipeline();
|
||||
m_shadow_pipeline = new HydraShadowPipeline();
|
||||
m_texture_buffer_manager = new HydraTextureBufferManager();
|
||||
m_material_buffer_manager = new HydraMaterialBufferManager();
|
||||
m_light_buffer_manager = new HydraLightBufferManager();
|
||||
@@ -238,13 +242,14 @@ void HydraEngine::_InitialiseSystems()
|
||||
shadow_sig.set(m_ecs->GetComponentType<HydraLightComponent>(), true);
|
||||
shadow_sig.set(m_ecs->GetComponentType<HydraPositionComponent>(), true);
|
||||
shadow_sig.set(m_ecs->GetComponentType<HydraShadowSourceComponent>(), true);
|
||||
|
||||
|
||||
m_ecs->SetSystemSignature<HydraMeshSystem>(mesh_sig);
|
||||
m_ecs->SetSystemSignature<HydraTransformSystem>(trans_sig);
|
||||
m_ecs->SetSystemSignature<HydraRenderSystem>(render_sig);
|
||||
m_ecs->SetSystemSignature<HydraMaterialSystem>(material_sig);
|
||||
m_ecs->SetSystemSignature<HydraLightSystem>(light_sig);
|
||||
m_ecs->SetSystemSignature<HydraShadowSourceSystem>(shadow_sig);
|
||||
|
||||
}
|
||||
|
||||
void HydraEngine::_UpdateSystems()
|
||||
@@ -268,6 +273,12 @@ void HydraEngine::_InitialiseSystems()
|
||||
HydraUpdateSystemTask* update_light_task = static_cast<HydraUpdateSystemTask*>(m_task_scheduler->GetTask(update_light_id));
|
||||
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);
|
||||
HydraUpdateSystemTask* update_shadow_task = static_cast<HydraUpdateSystemTask*>(m_task_scheduler->GetTask(update_shadow_id));
|
||||
update_shadow_task->Initialise(m_delta_t, m_shadow_system);
|
||||
m_task_scheduler->WaitForTask(update_shadow_id);
|
||||
|
||||
}
|
||||
|
||||
void HydraEngine::_GameLoop()
|
||||
@@ -296,6 +307,11 @@ void HydraEngine::_GameLoop()
|
||||
pipeline_task->Initialise(m_pipeline);
|
||||
m_task_scheduler->WaitForTask(initialise_pipeline_task_id);
|
||||
|
||||
HydraID initialise_shadow_pipeline_task_id = m_task_scheduler->CreateTask<HydraInitialisePipelineTask>(HydraThreadAffinity::Render);
|
||||
HydraInitialisePipelineTask *pipeline_shadow_task = static_cast<HydraInitialisePipelineTask*>(m_task_scheduler->GetTask(initialise_shadow_pipeline_task_id));
|
||||
pipeline_shadow_task->Initialise(m_shadow_pipeline);
|
||||
m_task_scheduler->WaitForTask(initialise_shadow_pipeline_task_id);
|
||||
|
||||
HydraID initialise_def_pipeline_task_id = m_task_scheduler->CreateTask<HydraInitialisePipelineTask>(HydraThreadAffinity::Render);
|
||||
HydraInitialisePipelineTask *pipeline_def_task = static_cast<HydraInitialisePipelineTask*>(m_task_scheduler->GetTask(initialise_def_pipeline_task_id));
|
||||
pipeline_def_task->Initialise(m_deferred_pipeline);
|
||||
@@ -349,10 +365,21 @@ void HydraEngine::_GameLoop()
|
||||
// render_task->Initialise(m_pipeline);
|
||||
// m_task_scheduler->WaitForTask(render_task_id);
|
||||
|
||||
HydraID begin_task_id = m_task_scheduler->CreateTask<HydraBeginRenderTask>(HydraThreadAffinity::Render);
|
||||
m_task_scheduler->WaitForTask(begin_task_id);
|
||||
|
||||
HydraID render_shadow_task_id = m_task_scheduler->CreateTask<HydraRenderPipelineTask>(HydraThreadAffinity::Render);
|
||||
HydraRenderPipelineTask* render_shadow_task = static_cast<HydraRenderPipelineTask*>(m_task_scheduler->GetTask(render_shadow_task_id));
|
||||
render_shadow_task->Initialise(m_shadow_pipeline);
|
||||
m_task_scheduler->WaitForTask(render_shadow_task_id);
|
||||
|
||||
HydraID render_def_task_id = m_task_scheduler->CreateTask<HydraRenderPipelineTask>(HydraThreadAffinity::Render);
|
||||
HydraRenderPipelineTask* render_def_task = static_cast<HydraRenderPipelineTask*>(m_task_scheduler->GetTask(render_def_task_id));
|
||||
render_def_task->Initialise(m_deferred_pipeline);
|
||||
m_task_scheduler->WaitForTask(render_def_task_id);
|
||||
|
||||
HydraID end_task_id = m_task_scheduler->CreateTask<HydraEndRenderTask>(HydraThreadAffinity::Render);
|
||||
m_task_scheduler->WaitForTask(end_task_id);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user