diff --git a/HydraEngine/source/ShaderFiles/shadow_shader.frag b/HydraEngine/source/ShaderFiles/shadow_shader.frag index 5eccbfb..30414d0 100644 --- a/HydraEngine/source/ShaderFiles/shadow_shader.frag +++ b/HydraEngine/source/ShaderFiles/shadow_shader.frag @@ -8,8 +8,6 @@ const uint DIRECTIONAL_LIGHT = 1; const uint POINT_LIGHT = 2; const uint SPOT_LIGHT = 3; - - void main() { diff --git a/HydraEngine/source/ShaderFiles/shadow_shader.geom b/HydraEngine/source/ShaderFiles/shadow_shader.geom index b89b6b7..ddd5b0f 100644 --- a/HydraEngine/source/ShaderFiles/shadow_shader.geom +++ b/HydraEngine/source/ShaderFiles/shadow_shader.geom @@ -8,14 +8,12 @@ struct ShadowMapSet uint entity_id; uint cascade_count; uint shadow_texture_id; - uint padding0; + uint frame_buffer_id; float near_plane[8]; float far_plane[8]; mat4 light_space_proj[6]; mat4 light_space_view[6]; }; - - //Push constants updated for each light layout(binding = 0) uniform shadow_per_frame @@ -24,8 +22,7 @@ layout(binding = 0) uniform shadow_per_frame uint shadow_idxs; }; - -layout(std430, binding = 0) readonly buffer ShadowMapSets +layout(std430, binding = 5) readonly buffer ShadowMapSets { ShadowMapSet shadows[10]; }; @@ -34,7 +31,6 @@ void main() { for (int i = 0; i < 3; ++i) { - gl_Position = shadows[shadow_idxs].light_space_proj[gl_InvocationID] * shadows[shadow_idxs].light_space_view[gl_InvocationID] * gl_in[i].gl_Position; diff --git a/HydraEngine/source/buffer/HydraBufferManager.cpp b/HydraEngine/source/buffer/HydraBufferManager.cpp index 790406e..8e9cfaf 100644 --- a/HydraEngine/source/buffer/HydraBufferManager.cpp +++ b/HydraEngine/source/buffer/HydraBufferManager.cpp @@ -22,30 +22,6 @@ void HydraBufferManager::Shutdown() } } -// HydraID HydraBufferManager::CreateGPUBuffer(std::string buffer_name, -// uint32_t buffer_size_bytes, -// uint32_t binding, -// HYDRA_BUFFER_TYPE buffer_type) -// { -// HydraID buffer_id = _GetBufferID(); -// HydraBuffer buffer = {}; -// buffer.buffer_id = buffer_id; -// buffer.size_bytes = buffer_size_bytes; -// buffer.buffer_name = buffer_name; -// buffer.buffer_type = buffer_type; -// uint32_t gl_buffer_type = _DecodeBufferType(buffer_type); -// //Create the buffer -// glGenBuffers(1, &buffer.gpu_buffer_id); -// glBindBuffer(gl_buffer_type, buffer.gpu_buffer_id); -// //Allocate storage -// glBufferData(gl_buffer_type, buffer.size_bytes, NULL, GL_DYNAMIC_DRAW); -// glBindBufferBase(gl_buffer_type, binding, buffer.gpu_buffer_id); -// glBindBuffer(gl_buffer_type, 0); -// m_buffers[buffer_id] = buffer; -// return buffer_id; - -// } - HydraID HydraBufferManager::CreateGPUBuffer(std::string buffer_name, uint32_t buffer_size_bytes, uint32_t binding, diff --git a/HydraEngine/source/buffer/HydraTextureBufferManager.cpp b/HydraEngine/source/buffer/HydraTextureBufferManager.cpp index b35086e..51c271c 100644 --- a/HydraEngine/source/buffer/HydraTextureBufferManager.cpp +++ b/HydraEngine/source/buffer/HydraTextureBufferManager.cpp @@ -57,7 +57,7 @@ HydraID HydraTextureBufferManager::LoadTexture(std::string texture_filename) HydraID create_tex_id = scheduler->CreateTask(HydraThreadAffinity::Render); HydraCreateTextureTask *create_tex_task = static_cast(scheduler->GetTask(create_tex_id)); HydraID tex_id = INVALID_HYDRA_ID; - create_tex_task->Initialise(texture_filename, + create_tex_task->Initialise(texture_filename, width, height, GL_RGBA8, @@ -107,7 +107,45 @@ HydraID HydraTextureBufferManager::_GetTextureID() return id; } -HydraID HydraTextureBufferManager::CreateTexture(std::string texture_name, +HydraID HydraTextureBufferManager::CreateTextureArray(std::string texture_name, + uint32_t width, + uint32_t height, + uint32_t internal_format, + uint32_t min_filter, + uint32_t mag_filter, + uint32_t levels + ) +{ + uint32_t gl_tex_id = 0; + glCreateTextures(GL_TEXTURE_2D_ARRAY, 1, &gl_tex_id); + glBindTexture(GL_TEXTURE_2D_ARRAY, gl_tex_id); + + + glTextureStorage3D(gl_tex_id, 1, internal_format, width, height, levels); + + + glTextureParameteri(gl_tex_id, GL_TEXTURE_MIN_FILTER, min_filter); + glTextureParameteri(gl_tex_id, GL_TEXTURE_MAG_FILTER, mag_filter); + + glBindTexture(GL_TEXTURE_2D_ARRAY, 0); + HydraTextureBuffer texture_buffer = {}; + HydraID texture_id = _GetTextureID(); + texture_buffer.texture_id = texture_id; + texture_buffer.format = 0; + texture_buffer.internal_format = internal_format; + texture_buffer.width = width; + texture_buffer.height = height; + texture_buffer.gl_tex_id = gl_tex_id; + texture_buffer.mag_filter = mag_filter; + texture_buffer.min_filter = min_filter; + + m_textures[texture_id] = texture_buffer; + m_texture_lookup.insert(std::pair(texture_name, texture_id)); + + return texture_id; +} + +HydraID HydraTextureBufferManager::CreateTexture(std::string texture_name, uint32_t width, uint32_t height, uint32_t internal_format, @@ -162,7 +200,7 @@ HydraID HydraTextureBufferManager::CreateTexture(std::string texture_name, return texture_id; } -void HydraTextureBufferManager::BindTexture(HydraID texture_id) +void HydraTextureBufferManager::BindTexture(HydraID texture_id, uint32_t target) { if (texture_id >= MAX_TEXTURES) @@ -170,7 +208,7 @@ void HydraTextureBufferManager::BindTexture(HydraID texture_id) return; } HydraTextureBuffer texture = m_textures[texture_id]; - glBindTexture(GL_TEXTURE_2D, texture.gl_tex_id); + glBindTexture(target, texture.gl_tex_id); glTextureParameteri(texture.gl_tex_id, GL_TEXTURE_WRAP_S, GL_REPEAT); glTextureParameteri(texture.gl_tex_id, GL_TEXTURE_WRAP_T, GL_REPEAT); glTextureParameteri(texture.gl_tex_id, GL_TEXTURE_MIN_FILTER, texture.min_filter); diff --git a/HydraEngine/source/buffer/HydraTextureBufferManager.h b/HydraEngine/source/buffer/HydraTextureBufferManager.h index 568e3f6..7c075c4 100644 --- a/HydraEngine/source/buffer/HydraTextureBufferManager.h +++ b/HydraEngine/source/buffer/HydraTextureBufferManager.h @@ -18,10 +18,19 @@ class HydraTextureBufferManager : public HydraObject public: void Intialise(); void Shutdown(); - HydraID CreateTexture(std::string texture_name, uint32_t width, uint32_t height, uint32_t internal_format, + HydraID CreateTexture(std::string texture_name, + uint32_t width, uint32_t height, uint32_t internal_format, uint32_t min_filter, uint32_t mag_filter, uint32_t levels, - uint32_t format = GL_RGBA, uint32_t data_type = GL_UNSIGNED_BYTE, uint32_t mip_levels = 0, void* data = nullptr); - void BindTexture(HydraID texture_id); + uint32_t format = GL_RGBA, uint32_t data_type = GL_UNSIGNED_BYTE, uint32_t mip_levels = 0, void* data = nullptr); + + HydraID CreateTextureArray(std::string texture_name, + uint32_t width, + uint32_t height, + uint32_t internal_format, + uint32_t min_filter, + uint32_t mag_filter, + uint32_t levels); + void BindTexture(HydraID texture_id, uint32_t target); void UnbindTexture(HydraID texture_id); void DeleteTexture(HydraID texture_id); HydraID LoadTexture(std::string texture_filename); diff --git a/HydraEngine/source/ecs/components/HydraShadowSourceComponent.h b/HydraEngine/source/ecs/components/HydraShadowSourceComponent.h index 09111b1..4ba6e04 100644 --- a/HydraEngine/source/ecs/components/HydraShadowSourceComponent.h +++ b/HydraEngine/source/ecs/components/HydraShadowSourceComponent.h @@ -8,7 +8,7 @@ struct HydraShadowSourceComponent uint32_t entity_id; uint32_t cascade_count; uint32_t shadow_texture_id; - uint32_t padding0; + uint32_t frame_buffer_id; float near_plane[8]; float far_plane[8]; glm::mat4 light_space_proj[6]; diff --git a/HydraEngine/source/ecs/systems/HydraShadowSourceSystem.cpp b/HydraEngine/source/ecs/systems/HydraShadowSourceSystem.cpp index 30382b7..7ab3981 100644 --- a/HydraEngine/source/ecs/systems/HydraShadowSourceSystem.cpp +++ b/HydraEngine/source/ecs/systems/HydraShadowSourceSystem.cpp @@ -14,48 +14,46 @@ #include "../../task/buffer/HydraUpdateWholeGPUBufferTask.hpp" #include "../../task/buffer/HydraUpdatePartialGPUBufferTask.hpp" #include "../../task/buffer/HydraCreateUnBoundTextureTask.hpp" - +#include "../../task/renderer/HydraCreateShadowFrameBuffer.hpp" #include "../../actor/HydraActorManager.h" - void HydraShadowSourceSystem::Initialise() { HydraTaskScheduler *task_scheduler = GetEngine()->TaskScheduler(); HydraID create_gpu_buffer_task_id = task_scheduler->CreateTask(HydraThreadAffinity::Render); HydraCreateGPUBufferTask *task = static_cast(task_scheduler->GetTask(create_gpu_buffer_task_id)); - task->Intialise("ShadowBuffer", 1, MAX_SHADOWS * sizeof(HydraShadowBuffer), &m_shadow_buffer_id, HYDRA_BUFFER_TYPE::HYDRA_SSBO_BUFFER); + task->Intialise("ShadowBuffer", 1, MAX_SHADOWS * sizeof(HydraShadowSourceComponent), &m_shadow_buffer_id, HYDRA_BUFFER_TYPE::HYDRA_SSBO_BUFFER); task_scheduler->WaitForTask(create_gpu_buffer_task_id); } void HydraShadowSourceSystem::InitialiseComponent(HydraID entity_id) -{ - HydraEngine* engine = GetEngine(); - HydraECS* ecs = engine->ECS(); - HydraLightComponent& light_comp = ecs->GetComponent(entity_id); - switch(light_comp.light_type) +{ + HydraEngine *engine = GetEngine(); + HydraECS *ecs = engine->ECS(); + HydraLightComponent &light_comp = ecs->GetComponent(entity_id); + switch (light_comp.light_type) { - case (int)HYDRA_LIGHT_TYPE::HYDRA_LIGHT_DIRECTIONAL: - _InitialiseDirectionalLight(entity_id); - break; + case (int)HYDRA_LIGHT_TYPE::HYDRA_LIGHT_DIRECTIONAL: + _InitialiseDirectionalLight(entity_id); + break; } - } void HydraShadowSourceSystem::UpdateSystem(float delta_t_seconds) { - HydraEngine* engine = GetEngine(); - HydraECS* ecs = engine->ECS(); + HydraEngine *engine = GetEngine(); + HydraECS *ecs = engine->ECS(); std::vector shadows; - for(HydraID entity_id:Entities) + for (HydraID entity_id : Entities) { - HydraLightComponent& light_comp = ecs->GetComponent(entity_id); - switch(light_comp.light_type) + HydraLightComponent &light_comp = ecs->GetComponent(entity_id); + switch (light_comp.light_type) { - case (int)HYDRA_LIGHT_TYPE::HYDRA_LIGHT_DIRECTIONAL: - _UpdateDirectionalLight(entity_id); - break; + case (int)HYDRA_LIGHT_TYPE::HYDRA_LIGHT_DIRECTIONAL: + _UpdateDirectionalLight(entity_id); + break; } HydraShadowSourceComponent shad_comp = ecs->GetComponent(entity_id); @@ -66,75 +64,74 @@ void HydraShadowSourceSystem::UpdateSystem(float delta_t_seconds) void HydraShadowSourceSystem::_UpdateDirectionalLight(HydraID entity_id) { - HydraEngine* engine = GetEngine(); - HydraECS* ecs = engine->ECS(); + HydraEngine *engine = GetEngine(); + HydraECS *ecs = engine->ECS(); HydraPositionComponent pos_comp = ecs->GetComponent(entity_id); - HydraShadowSourceComponent& shad_comp = ecs->GetComponent(entity_id); + HydraShadowSourceComponent &shad_comp = ecs->GetComponent(entity_id); + float view_size = 5.0f; + float view_near = -5.0f; + float view_far = 5.0f; - float view_size = 5.0f; - float view_near = -5.0f; - float view_far = 5.0f; + float PI = 3.1415927; + float TWO_PI = 6.2831854; - float PI = 3.1415927; - float TWO_PI = 6.2831854; + glm::vec3 light_dir = glm::vec3(0, 0, -1); + glm::mat3 light_rot = glm::mat3(1); + glm::vec3 light_euler = pos_comp.orientation; + light_rot = glm::eulerAngleXYZ(light_euler.x, light_euler.y, light_euler.z); - glm::vec3 light_dir = glm::vec3(0, 0, -1); - glm::mat3 light_rot = glm::mat3(1); - glm::vec3 light_euler = pos_comp.orientation; - light_rot = glm::eulerAngleXYZ(light_euler.x, light_euler.y, light_euler.z); + light_dir = light_rot * light_dir; + light_dir = glm::normalize(light_dir); + glm::vec3 camera_pos = GetEngine()->Camera()->GetPosition(); - light_dir = light_rot * light_dir; - light_dir = glm::normalize(light_dir); - glm::vec3 camera_pos = GetEngine()->Camera()->GetPosition(); - for (uint32_t i = 0; i < 6; i++) - { - glm::vec3 light_pos = camera_pos; // - (light_dir * light_distance); + for (uint32_t i = 0; i < 6; i++) + { + glm::vec3 light_pos = camera_pos; // - (light_dir * light_distance); - glm::mat4 light_trans = glm::translate(light_pos * glm::vec3(-1, -1, -1)); - glm::mat4 light_orient = glm::eulerAngleXYZ(light_euler.x, light_euler.y, light_euler.z); - glm::mat4 view = light_orient * light_trans; - glm::mat4 proj = glm::orthoRH(view_size, -view_size, -view_size, view_size, -15000, 15000); - // glm::mat4 proj = glm::orthoRH(view_size, -view_size, -view_size, view_size, view_near, view_far); + glm::mat4 light_trans = glm::translate(light_pos * glm::vec3(-1, -1, -1)); + glm::mat4 light_orient = glm::eulerAngleXYZ(light_euler.x, light_euler.y, light_euler.z); + glm::mat4 view = light_orient * light_trans; + glm::mat4 proj = glm::orthoRH(view_size, -view_size, -view_size, view_size, -15000, 15000); - shad_comp.far_plane[i] = view_far; - shad_comp.near_plane[i] = view_near; - shad_comp.light_space_proj[i] = proj; - shad_comp.light_space_view[i] = view; + shad_comp.far_plane[i] = view_far; + shad_comp.near_plane[i] = view_near; + shad_comp.light_space_proj[i] = proj; + shad_comp.light_space_view[i] = view; - view_far *= 3.0f; - view_near = -view_far; - view_size *= 3.0f; - } + view_far *= 3.0f; + view_near = -view_far; + view_size *= 3.0f; + } } void HydraShadowSourceSystem::_InitialiseDirectionalLight(HydraID entity_id) { - HydraEngine* engine = GetEngine(); - HydraECS* ecs = engine->ECS(); - HydraTextureBufferManager* tex_man = engine->TextureBufferManager(); - HydraShadowSourceComponent& shad_comp = ecs->GetComponent(entity_id); + HydraEngine *engine = GetEngine(); + HydraECS *ecs = engine->ECS(); + HydraTextureBufferManager *tex_man = engine->TextureBufferManager(); + HydraShadowSourceComponent &shad_comp = ecs->GetComponent(entity_id); shad_comp.entity_id = entity_id; shad_comp.cascade_count = 6; HydraTaskScheduler *task_scheduler = GetEngine()->TaskScheduler(); - HydraID create_texture_task_id = task_scheduler->CreateTask(HydraThreadAffinity::Render); - HydraCreateUnBoundTextureTask *task = static_cast(task_scheduler->GetTask(create_texture_task_id)); - task->Initialise("shadow", SHADOW_MAP_SIZE, SHADOW_MAP_SIZE, GL_R32F, GL_R32F, GL_LINEAR, GL_LINEAR, 6, GL_BYTE, 0, nullptr, &shad_comp.shadow_texture_id); - task_scheduler->WaitForTask(create_texture_task_id); + HydraID create_framebuffer_task_id = task_scheduler->CreateTask(HydraThreadAffinity::Render); + HydraCreateShadowFrameBuffer *fb_task = static_cast(task_scheduler->GetTask(create_framebuffer_task_id)); + fb_task->Initialise(&shad_comp.shadow_texture_id, &shad_comp.frame_buffer_id); + task_scheduler->WaitForTask(create_framebuffer_task_id); } void HydraShadowSourceSystem::_WriteToGPU(std::vector shadows) { - HydraEngine* engine = GetEngine(); - HydraECS* ecs = engine->ECS(); - + HydraEngine *engine = GetEngine(); + HydraECS *ecs = engine->ECS(); + void *buffer = static_cast(shadows.data()); HydraTaskScheduler *task_scheduler = GetEngine()->TaskScheduler(); HydraID update_buffer_task_id = task_scheduler->CreateTask(HydraThreadAffinity::Render); HydraUpdatePartialGPUBufferTask *task = static_cast(task_scheduler->GetTask(update_buffer_task_id)); - task->Intialise(m_shadow_buffer_id, 0, sizeof(HydraLightComponent) * shadows.size(), buffer); + task->Intialise(m_shadow_buffer_id, 0, sizeof(HydraShadowSourceComponent) * shadows.size(), buffer); task_scheduler->WaitForTask(update_buffer_task_id); } \ No newline at end of file diff --git a/HydraEngine/source/engine/HydraEngine.cpp b/HydraEngine/source/engine/HydraEngine.cpp index 963f41c..395ffd7 100644 --- a/HydraEngine/source/engine/HydraEngine.cpp +++ b/HydraEngine/source/engine/HydraEngine.cpp @@ -52,7 +52,7 @@ #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" @@ -360,13 +360,7 @@ void HydraEngine::_GameLoop() _UpdateSystems(); - // HydraID render_task_id = m_task_scheduler->CreateTask(HydraThreadAffinity::Render); - // HydraRenderPipelineTask* render_task = static_cast(m_task_scheduler->GetTask(render_task_id)); - // render_task->Initialise(m_pipeline); - // m_task_scheduler->WaitForTask(render_task_id); - - HydraID begin_task_id = m_task_scheduler->CreateTask(HydraThreadAffinity::Render); - m_task_scheduler->WaitForTask(begin_task_id); + HydraID render_shadow_task_id = m_task_scheduler->CreateTask(HydraThreadAffinity::Render); HydraRenderPipelineTask* render_shadow_task = static_cast(m_task_scheduler->GetTask(render_shadow_task_id)); diff --git a/HydraEngine/source/fileaccess/HydraGLTFLoader.cpp b/HydraEngine/source/fileaccess/HydraGLTFLoader.cpp index 5f031a3..8185f4f 100644 --- a/HydraEngine/source/fileaccess/HydraGLTFLoader.cpp +++ b/HydraEngine/source/fileaccess/HydraGLTFLoader.cpp @@ -280,7 +280,7 @@ void HydraGLTFLoader::_ProcessGLTFTextures(aiScene const *scene, std::vector(tex->pcData), tex->mWidth, &width, &height, &channels, 4); - HydraID texture_id = texture_manager->CreateTexture(texture_name, + HydraID texture_id = texture_manager->CreateTexture(texture_name, width, height, GL_RGBA8, @@ -291,7 +291,7 @@ void HydraGLTFLoader::_ProcessGLTFTextures(aiScene const *scene, std::vectorBindTexture(texture_id); + texture_manager->BindTexture(texture_id, GL_TEXTURE_2D); // store the texture id against the scene index for the texture. Materials will have *n where n is the index texture_lookup[i_tex] = texture_id; } diff --git a/HydraEngine/source/pipeline/HydraDeferredPipeline.cpp b/HydraEngine/source/pipeline/HydraDeferredPipeline.cpp index c7c50f1..d6ef873 100644 --- a/HydraEngine/source/pipeline/HydraDeferredPipeline.cpp +++ b/HydraEngine/source/pipeline/HydraDeferredPipeline.cpp @@ -39,21 +39,36 @@ void HydraDeferredPipeline::Render() { _UpdateUBO(); - glBindFramebuffer(GL_FRAMEBUFFER, m_frame_buffer_id); - glClearColor(0.0f, 0.0f, 0.0f, 0.0f); + - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // we're not using the stencil buffer now - glEnable(GL_DEPTH_TEST); - glBindFramebuffer(GL_FRAMEBUFFER, 0); HydraECS* ecs = GetEngine()->ECS(); std::shared_ptr render_system = ecs->GetSystem(); - GetEngine()->Renderer()->BeginFrame(); + HydraRenderSettings render_settings = GetEngine()->RenderSettings(); + glEnable(GL_DEPTH_TEST); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glViewport(0, 0, render_settings.ViewportWidth, render_settings.ViewportHeight); + + float clear_colour[4] = {0, 0, 0, 0}; + float depth_value = 1; + + glClearNamedFramebufferfv(m_frame_buffer_id, GL_COLOR, 0, clear_colour); + glClearNamedFramebufferfv(m_frame_buffer_id, GL_COLOR, 1, clear_colour); + glClearNamedFramebufferfv(m_frame_buffer_id, GL_COLOR, 2, clear_colour); + glClearNamedFramebufferfv(m_frame_buffer_id, GL_COLOR, 3, clear_colour); + glClearNamedFramebufferfv(m_frame_buffer_id, GL_DEPTH, 0, &depth_value); + + float screen_colour[4] = {0.0f, 0.5f, 0.7f, 1.0f}; + glClearNamedFramebufferfv(0, GL_COLOR, 0, screen_colour); + glClearNamedFramebufferfv(0, GL_DEPTH, 0, &depth_value); + for(uint32_t rs_idx = 0; rs_idx Render(render_system->Entities); } - GetEngine()->Renderer()->EndFrame(); + } void HydraDeferredPipeline::_UpdateUBO() @@ -126,11 +141,11 @@ void HydraDeferredPipeline::_CreateFrameBuffer() glDrawBuffers(4, draw_buffers); glBindTexture(GL_TEXTURE_2D, 0); - tex_buffer_manager->BindTexture(depth_texture.texture_id); - tex_buffer_manager->BindTexture(buffer_0_texture.texture_id); - tex_buffer_manager->BindTexture(metal_rough_texture.texture_id); - tex_buffer_manager->BindTexture(normal_texture.texture_id); - tex_buffer_manager->BindTexture(position_texture.texture_id); + tex_buffer_manager->BindTexture(depth_texture.texture_id, GL_TEXTURE_2D); + tex_buffer_manager->BindTexture(buffer_0_texture.texture_id, GL_TEXTURE_2D); + tex_buffer_manager->BindTexture(metal_rough_texture.texture_id, GL_TEXTURE_2D); + tex_buffer_manager->BindTexture(normal_texture.texture_id, GL_TEXTURE_2D); + tex_buffer_manager->BindTexture(position_texture.texture_id, GL_TEXTURE_2D); HydraBufferManager* buffer_manager = GetEngine()->BufferManager(); diff --git a/HydraEngine/source/pipeline/HydraForwardPipeline.cpp b/HydraEngine/source/pipeline/HydraForwardPipeline.cpp index 0777458..a3105c4 100644 --- a/HydraEngine/source/pipeline/HydraForwardPipeline.cpp +++ b/HydraEngine/source/pipeline/HydraForwardPipeline.cpp @@ -60,13 +60,16 @@ void HydraForwardPipeline::Render() HydraECS* ecs = GetEngine()->ECS(); std::shared_ptr render_system = ecs->GetSystem(); - GetEngine()->Renderer()->BeginFrame(); + float depth_value = 1; + float screen_colour[4] = {0, 0.2, 0.7, 1}; + + glClearNamedFramebufferfv(0, GL_COLOR, 0, screen_colour); + glClearNamedFramebufferfv(0, GL_DEPTH, 0, &depth_value); for(uint32_t rs_idx = 0; rs_idx Render(render_system->Entities); } - GetEngine()->Renderer()->EndFrame(); } void HydraForwardPipeline::_UpdateUBO() diff --git a/HydraEngine/source/pipeline/HydraRenderStage.cpp b/HydraEngine/source/pipeline/HydraRenderStage.cpp index cc67951..a7485d5 100644 --- a/HydraEngine/source/pipeline/HydraRenderStage.cpp +++ b/HydraEngine/source/pipeline/HydraRenderStage.cpp @@ -52,11 +52,13 @@ void HydraRenderStage::ShutDown() glDeleteProgram(m_program); } -void HydraRenderStage::Render(std::set& entities) +void HydraRenderStage::Render(std::set& entities, uint32_t framebuffer_id) { HydraECS* ecs = GetEngine()->ECS(); - - glBindFramebuffer(GL_FRAMEBUFFER, m_framebuffer_id); + if(framebuffer_id != INVALID_HYDRA_ID) + { + glBindFramebuffer(GL_FRAMEBUFFER, framebuffer_id); + } //glDrawBuffers(m_rb_attachments.size(), &m_rb_attachments[0]); HydraVertexBufferManager* vert_buffer_mananger = GetEngine()->VertexBufferManager(); glUseProgram(m_program); @@ -91,6 +93,11 @@ void HydraRenderStage::Render(std::set& entities) glBindFramebuffer(GL_FRAMEBUFFER, 0); } +void HydraRenderStage::Render(std::set &entities) +{ + Render(entities, m_framebuffer_id); +} + uint32_t HydraRenderStage::_LoadShader(std::string filename, uint32_t shader_type) { diff --git a/HydraEngine/source/pipeline/HydraRenderStage.h b/HydraEngine/source/pipeline/HydraRenderStage.h index 733045d..f27b980 100644 --- a/HydraEngine/source/pipeline/HydraRenderStage.h +++ b/HydraEngine/source/pipeline/HydraRenderStage.h @@ -19,6 +19,7 @@ class HydraRenderStage : public HydraObject bool enable_culling, HYDRA_RENDERABLE_TYPE renderable_type); void ShutDown(); + void Render(std::set& entities, uint32_t framebuffer_id); void Render(std::set& entities); private: uint32_t _LoadShader(std::string filename, uint32_t shader_type); diff --git a/HydraEngine/source/pipeline/HydraShadowPipeline.cpp b/HydraEngine/source/pipeline/HydraShadowPipeline.cpp index fa8fe8d..04a2f57 100644 --- a/HydraEngine/source/pipeline/HydraShadowPipeline.cpp +++ b/HydraEngine/source/pipeline/HydraShadowPipeline.cpp @@ -16,12 +16,9 @@ #include "../actor/HydraActorManager.h" #include "../actor/HydraOutputActor.h" - - void HydraShadowPipeline::Initialise() { _CreateUBOs(); - _CreateFrameBuffer(); _CreateRenderStage(); } @@ -31,111 +28,99 @@ void HydraShadowPipeline::Shutdown() void HydraShadowPipeline::Render() { - HydraECS* ecs = GetEngine()->ECS(); + HydraECS *ecs = GetEngine()->ECS(); std::shared_ptr render_system = ecs->GetSystem(); std::shared_ptr shadow_system = ecs->GetSystem(); - uint32_t shadow_idx =0; - for(HydraID entity_id:shadow_system->Entities) + uint32_t shadow_idx = 0; + + glViewport(0, 0, SHADOW_MAP_SIZE, SHADOW_MAP_SIZE); + + + glEnable(GL_DEPTH_TEST); // Depth testing must be active + glDepthMask(GL_TRUE); // Depth buffer must be writable + glDepthFunc(GL_LESS); + + for (HydraID entity_id : shadow_system->Entities) { _UpdateUBO(shadow_idx); - _BindFrameBufferAttachments(entity_id); - GetEngine()->Renderer()->BeginFrame(); - for(uint32_t rs_idx = 0; rs_idx ECS()->GetComponent(entity_id); + glBindFramebuffer(GL_FRAMEBUFFER, shad_comp.frame_buffer_id); + glBindTextureUnit(0, 0); + + float depth_value = 1.0f; + glClearNamedFramebufferfv(shad_comp.frame_buffer_id, GL_DEPTH, 0, &depth_value); + + for (uint32_t rs_idx = 0; rs_idx < m_render_stages.size(); rs_idx++) { - m_render_stages[rs_idx]->Render(render_system->Entities); + m_render_stages[rs_idx]->Render(render_system->Entities, INVALID_HYDRA_ID); } - GetEngine()->Renderer()->EndFrame(); - glBindFramebuffer(GL_FRAMEBUFFER, 0); + + glBindFramebuffer(GL_FRAMEBUFFER, 0); shadow_idx++; } - + } void HydraShadowPipeline::_CreateRenderStage() { - HydraRenderStage* render_stage = new HydraRenderStage(); + HydraRenderStage *render_stage = new HydraRenderStage(); std::string shader_path = std::string(shader_base); - HydraBufferManager* buffer_manager = GetEngine()->BufferManager(); + HydraBufferManager *buffer_manager = GetEngine()->BufferManager(); - HydraID pos_buffer_id = buffer_manager->FindBuffer("PositionsBuffer"); - HydraID shadow_buffer_id = buffer_manager->FindBuffer("ShadowBuffer"); + HydraID pos_buffer_id = buffer_manager->FindBuffer("PositionsBuffer"); + HydraID shadow_buffer_id = buffer_manager->FindBuffer("ShadowBuffer"); HydraID per_frame_buffer_id = buffer_manager->FindBuffer("ShadowPerFrameUBO"); HydraShaderBinding shader_binding = {}; - + shader_binding.block_name.push_back("PositionsBuffer"); shader_binding.binding_point.push_back(1); shader_binding.buffer_id.push_back(pos_buffer_id); shader_binding.buffer_type.push_back(HYDRA_BUFFER_TYPE::HYDRA_SSBO_BUFFER); - + shader_binding.block_name.push_back("ShadowMapSets"); - shader_binding.binding_point.push_back(0); + shader_binding.binding_point.push_back(5); shader_binding.buffer_id.push_back(shadow_buffer_id); shader_binding.buffer_type.push_back(HYDRA_BUFFER_TYPE::HYDRA_SSBO_BUFFER); shader_binding.block_name.push_back("shadow_per_frame"); - shader_binding.binding_point.push_back(0); + shader_binding.binding_point.push_back(1); shader_binding.buffer_id.push_back(per_frame_buffer_id); shader_binding.buffer_type.push_back(HYDRA_BUFFER_TYPE::HYDRA_UBO_BUFFER); std::vector textures; - render_stage->Initialise(shader_path + "shadow_shader.vert", - shader_path + "shadow_shader.frag", - shader_path + "shadow_shader.geom", - shader_binding, - m_frame_buffer_id, - textures, - true, - HYDRA_RENDERABLE_TYPE::HYDRA_COLOUR); + render_stage->Initialise(shader_path + "shadow_shader.vert", + shader_path + "shadow_shader.frag", + shader_path + "shadow_shader.geom", + shader_binding, + 0, + textures, + true, + HYDRA_RENDERABLE_TYPE::HYDRA_COLOUR); m_render_stages.push_back(render_stage); } void HydraShadowPipeline::_UpdateUBO(uint32_t shadow_idx) { - HydraBufferManager* buffer_manager = GetEngine()->BufferManager(); - buffer_manager->UpdatePartialBuffer(m_per_frame_ubo,3*sizeof(float), sizeof(uint32_t), &shadow_idx); + HydraBufferManager *buffer_manager = GetEngine()->BufferManager(); + buffer_manager->UpdatePartialBuffer(m_per_frame_ubo, 3 * sizeof(float), sizeof(uint32_t), &shadow_idx); glBindBuffer(GL_UNIFORM_BUFFER, m_per_frame_ubo); } void HydraShadowPipeline::_BindFrameBufferAttachments(HydraID entity_id) { HydraShadowSourceComponent shad_comp = GetEngine()->ECS()->GetComponent(entity_id); - HydraTextureBuffer texture = GetEngine()->TextureBufferManager()->GetTexture(shad_comp.shadow_texture_id); - glBindFramebuffer(GL_FRAMEBUFFER, m_frame_buffer_id); - - glBindTexture(GL_TEXTURE_2D, texture.gl_tex_id); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, texture.gl_tex_id, 0); - - GLenum draw_buffers[4] = {GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT2, GL_COLOR_ATTACHMENT3}; - - glDrawBuffer(GL_NONE); - glReadBuffer(GL_NONE); - glBindTexture(GL_TEXTURE_2D, 0); - - - glClearColor(0.0f, 0.0f, 0.0f, 0.0f); - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // we're not using the stencil buffer now - glEnable(GL_DEPTH_TEST); - glBindFramebuffer(GL_FRAMEBUFFER, 0); - + glBindFramebuffer(GL_FRAMEBUFFER, shad_comp.frame_buffer_id); + glBindTextureUnit(0, 0); } -void HydraShadowPipeline::_CreateFrameBuffer() -{ - HydraEngine* engine = GetEngine(); - HydraTextureBufferManager* tex_buffer_manager = engine->TextureBufferManager(); - HydraRenderSettings render_settings = engine->RenderSettings(); - glGenFramebuffers(1, &m_frame_buffer_id); - glBindFramebuffer(GL_FRAMEBUFFER, m_frame_buffer_id); -} + void HydraShadowPipeline::_CreateUBOs() { - HydraBufferManager* buffer_manager = GetEngine()->BufferManager(); + HydraBufferManager *buffer_manager = GetEngine()->BufferManager(); - m_per_frame_ubo = buffer_manager->CreateGPUBuffer("ShadowPerFrameUBO", - sizeof(float)*4, 0, HYDRA_BUFFER_TYPE::HYDRA_UBO_BUFFER); + m_per_frame_ubo = buffer_manager->CreateGPUBuffer("ShadowPerFrameUBO", + sizeof(float) * 4, 0, HYDRA_BUFFER_TYPE::HYDRA_UBO_BUFFER); } diff --git a/HydraEngine/source/pipeline/HydraShadowPipeline.h b/HydraEngine/source/pipeline/HydraShadowPipeline.h index 5eb64a0..631fe40 100644 --- a/HydraEngine/source/pipeline/HydraShadowPipeline.h +++ b/HydraEngine/source/pipeline/HydraShadowPipeline.h @@ -18,12 +18,12 @@ class HydraShadowPipeline : public HydraPipeline void Render() override; private: void _CreateUBOs(); - void _CreateFrameBuffer(); + void _CreateRenderStage(); void _UpdateUBO(uint32_t shadow_idx); void _BindFrameBufferAttachments(HydraID entity_id); HydraID m_per_frame_ubo = INVALID_HYDRA_ID; - uint32_t m_frame_buffer_id; + }; diff --git a/HydraEngine/source/renderer/HydraRenderer.cpp b/HydraEngine/source/renderer/HydraRenderer.cpp index b128536..3730916 100644 --- a/HydraEngine/source/renderer/HydraRenderer.cpp +++ b/HydraEngine/source/renderer/HydraRenderer.cpp @@ -31,18 +31,18 @@ void HydraRenderer::Initialise(HydraRenderSettings render_settings) } } -void HydraRenderer::BeginFrame() -{ +// void HydraRenderer::BeginFrame() +// { - glViewport(0, 0, m_render_settings.ViewportWidth, m_render_settings.ViewportHeight); +// glViewport(0, 0, m_render_settings.ViewportWidth, m_render_settings.ViewportHeight); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glClearColor(0.0f, 0.5f, 0.7f, 1.0f); +// glEnable(GL_BLEND); +// glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); +// glClearColor(0.0f, 0.5f, 0.7f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); +// glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); -} +// } void HydraRenderer::EndFrame() { diff --git a/HydraEngine/source/renderer/HydraRenderer.h b/HydraEngine/source/renderer/HydraRenderer.h index 90241e2..3c58969 100644 --- a/HydraEngine/source/renderer/HydraRenderer.h +++ b/HydraEngine/source/renderer/HydraRenderer.h @@ -7,7 +7,7 @@ class HydraRenderer : public HydraObject { public: void Initialise(HydraRenderSettings render_settings); - void BeginFrame(); + //void BeginFrame(); void EndFrame(); diff --git a/HydraEngine/source/task/buffer/HydraCreateTextureTask.hpp b/HydraEngine/source/task/buffer/HydraCreateTextureTask.hpp index 57be572..d16c7da 100644 --- a/HydraEngine/source/task/buffer/HydraCreateTextureTask.hpp +++ b/HydraEngine/source/task/buffer/HydraCreateTextureTask.hpp @@ -18,6 +18,7 @@ private: uint32_t m_min_filter; uint32_t m_mag_filter; uint32_t m_levels; + uint32_t m_target; void *m_data; HydraID *m_texture_id; @@ -35,10 +36,10 @@ public: m_data_type, m_mip_levels, m_data); - GetEngine()->TextureBufferManager()->BindTexture(*m_texture_id); + GetEngine()->TextureBufferManager()->BindTexture(*m_texture_id, GL_TEXTURE_2D); } - void Initialise(std::string texture_name, + void Initialise(std::string texture_name, uint32_t width, uint32_t height, uint32_t internal_format, diff --git a/HydraEngine/source/task/buffer/HydraCreateUnBoundTextureTask.hpp b/HydraEngine/source/task/buffer/HydraCreateUnBoundTextureTask.hpp index b2249b6..190e315 100644 --- a/HydraEngine/source/task/buffer/HydraCreateUnBoundTextureTask.hpp +++ b/HydraEngine/source/task/buffer/HydraCreateUnBoundTextureTask.hpp @@ -37,7 +37,7 @@ public: m_data); } - void Initialise(std::string texture_name, + void Initialise(std::string texture_name, uint32_t width, uint32_t height, uint32_t internal_format, @@ -51,6 +51,7 @@ public: HydraID *texture_id) { m_texture_name = texture_name; + m_width = width; m_height = height; m_internal_format = internal_format; diff --git a/HydraEngine/source/task/renderer/HydraBeginRenderTask.hpp b/HydraEngine/source/task/renderer/HydraBeginRenderTask.hpp deleted file mode 100644 index f9b5014..0000000 --- a/HydraEngine/source/task/renderer/HydraBeginRenderTask.hpp +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef HYDRABEGINRENDERTASK -#define HYDRABEGINRENDERTASK -#include "../HydraTask.h" -#include "../../engine/HydraEngine.h" -#include "../../renderer/HydraRenderer.h" - -class HydraBeginRenderTask : public HydraTask -{ - private: - protected: - public: - virtual void Process() override - { - GetEngine()->Renderer()->BeginFrame(); - } -}; - - -#endif /* HYDRABEGINRENDERTASK */ diff --git a/HydraEngine/source/task/renderer/HydraCreateShadowFrameBuffer.hpp b/HydraEngine/source/task/renderer/HydraCreateShadowFrameBuffer.hpp new file mode 100644 index 0000000..bf90ca7 --- /dev/null +++ b/HydraEngine/source/task/renderer/HydraCreateShadowFrameBuffer.hpp @@ -0,0 +1,61 @@ +#ifndef HYDRACREATESHADOWFRAMEBUFFER +#define HYDRACREATESHADOWFRAMEBUFFER + +#include "../HydraTask.h" +#include "../../engine/HydraEngine.h" +#include "../../renderer/HydraRenderer.h" +#include +#include "../../GlewIncludes.h" + +class HydraCreateShadowFrameBuffer : public HydraTask +{ +private: + uint32_t *m_texture_id = 0; + uint32_t *m_frame_buffer_id = nullptr; + +protected: +public: + void Process() override + { + HydraEngine *engine = GetEngine(); + + HydraTextureBufferManager *tex_buffer_manager = engine->TextureBufferManager(); + HydraRenderSettings render_settings = engine->RenderSettings(); + + *m_texture_id = tex_buffer_manager->CreateTextureArray("shadow_FB", + SHADOW_MAP_SIZE, SHADOW_MAP_SIZE, + GL_DEPTH_COMPONENT24, + GL_NEAREST, + GL_NEAREST, + 6); + + HydraTextureBuffer texture = tex_buffer_manager->GetTexture(*m_texture_id); + + glGenFramebuffers(1, m_frame_buffer_id); + glBindFramebuffer(GL_FRAMEBUFFER, *m_frame_buffer_id); + + glNamedFramebufferDrawBuffer(*m_frame_buffer_id, GL_NONE); + glNamedFramebufferReadBuffer(*m_frame_buffer_id, GL_NONE); + + glBindTexture(GL_TEXTURE_2D_ARRAY, texture.gl_tex_id); + glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + + glFramebufferTexture(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, texture.gl_tex_id, 0); + + GLenum status = glCheckNamedFramebufferStatus(*m_frame_buffer_id, GL_FRAMEBUFFER); + if (status != GL_FRAMEBUFFER_COMPLETE) + { + std::cout << "Framebuffer error: " << status << std::endl; + } + glBindFramebuffer(GL_FRAMEBUFFER, 0); + glBindTexture(GL_TEXTURE_2D_ARRAY, 0); + tex_buffer_manager->BindTexture(*m_texture_id, GL_TEXTURE_2D_ARRAY); + } + void Initialise(uint32_t *texture_id, uint32_t *frame_buffer_id) + { + m_texture_id = texture_id; + m_frame_buffer_id = frame_buffer_id; + } +}; +#endif /* HYDRACREATESHADOWFRAMEBUFFER */ diff --git a/HydraEngine/source/task/renderer/HydraRenderTask.hpp b/HydraEngine/source/task/renderer/HydraRenderTask.hpp index deb4022..5e443d0 100644 --- a/HydraEngine/source/task/renderer/HydraRenderTask.hpp +++ b/HydraEngine/source/task/renderer/HydraRenderTask.hpp @@ -10,8 +10,7 @@ class HydraRenderTask : public HydraTask protected: public: virtual void Process() override - { - GetEngine()->Renderer()->BeginFrame(); + { GetEngine()->Renderer()->EndFrame(); } }; diff --git a/build/.cmake/api/v1/reply/codemodel-v2-2319b378636e3c742c14.json b/build/.cmake/api/v1/reply/codemodel-v2-ccd34cf25146cac2c39e.json similarity index 96% rename from build/.cmake/api/v1/reply/codemodel-v2-2319b378636e3c742c14.json rename to build/.cmake/api/v1/reply/codemodel-v2-ccd34cf25146cac2c39e.json index 1bd2781..1e55346 100644 --- a/build/.cmake/api/v1/reply/codemodel-v2-2319b378636e3c742c14.json +++ b/build/.cmake/api/v1/reply/codemodel-v2-ccd34cf25146cac2c39e.json @@ -161,7 +161,7 @@ { "directoryIndex" : 0, "id" : "ALL_BUILD::@6890427a1f51a3e7e1df", - "jsonFile" : "target-ALL_BUILD-Debug-cadb66c5dccd0bd206e6.json", + "jsonFile" : "target-ALL_BUILD-Debug-9ddbbbeb4caedf0a48f0.json", "name" : "ALL_BUILD", "projectIndex" : 0 }, @@ -182,7 +182,7 @@ { "directoryIndex" : 1, "id" : "HydraEngine::@fafd37b19aacd4c483ed", - "jsonFile" : "target-HydraEngine-Debug-a388455bc5d4b1d63093.json", + "jsonFile" : "target-HydraEngine-Debug-2faea7c156292a0c0ce8.json", "name" : "HydraEngine", "projectIndex" : 1 }, @@ -355,7 +355,7 @@ { "directoryIndex" : 0, "id" : "ALL_BUILD::@6890427a1f51a3e7e1df", - "jsonFile" : "target-ALL_BUILD-Release-cadb66c5dccd0bd206e6.json", + "jsonFile" : "target-ALL_BUILD-Release-9ddbbbeb4caedf0a48f0.json", "name" : "ALL_BUILD", "projectIndex" : 0 }, @@ -376,7 +376,7 @@ { "directoryIndex" : 1, "id" : "HydraEngine::@fafd37b19aacd4c483ed", - "jsonFile" : "target-HydraEngine-Release-4d51ecf0ab4ffdcb7da6.json", + "jsonFile" : "target-HydraEngine-Release-b1d450122d30c349552d.json", "name" : "HydraEngine", "projectIndex" : 1 }, @@ -549,7 +549,7 @@ { "directoryIndex" : 0, "id" : "ALL_BUILD::@6890427a1f51a3e7e1df", - "jsonFile" : "target-ALL_BUILD-MinSizeRel-cadb66c5dccd0bd206e6.json", + "jsonFile" : "target-ALL_BUILD-MinSizeRel-9ddbbbeb4caedf0a48f0.json", "name" : "ALL_BUILD", "projectIndex" : 0 }, @@ -570,7 +570,7 @@ { "directoryIndex" : 1, "id" : "HydraEngine::@fafd37b19aacd4c483ed", - "jsonFile" : "target-HydraEngine-MinSizeRel-8280923c3e8a8a1bd015.json", + "jsonFile" : "target-HydraEngine-MinSizeRel-8b4acdd146655dce4c11.json", "name" : "HydraEngine", "projectIndex" : 1 }, @@ -743,7 +743,7 @@ { "directoryIndex" : 0, "id" : "ALL_BUILD::@6890427a1f51a3e7e1df", - "jsonFile" : "target-ALL_BUILD-RelWithDebInfo-cadb66c5dccd0bd206e6.json", + "jsonFile" : "target-ALL_BUILD-RelWithDebInfo-9ddbbbeb4caedf0a48f0.json", "name" : "ALL_BUILD", "projectIndex" : 0 }, @@ -764,7 +764,7 @@ { "directoryIndex" : 1, "id" : "HydraEngine::@fafd37b19aacd4c483ed", - "jsonFile" : "target-HydraEngine-RelWithDebInfo-1179a3c8def17db9efd4.json", + "jsonFile" : "target-HydraEngine-RelWithDebInfo-800c6fa211e5ae182b46.json", "name" : "HydraEngine", "projectIndex" : 1 }, diff --git a/build/.cmake/api/v1/reply/index-2026-07-27T14-57-08-0829.json b/build/.cmake/api/v1/reply/index-2026-07-28T17-43-01-0588.json similarity index 94% rename from build/.cmake/api/v1/reply/index-2026-07-27T14-57-08-0829.json rename to build/.cmake/api/v1/reply/index-2026-07-28T17-43-01-0588.json index a115497..d21e78d 100644 --- a/build/.cmake/api/v1/reply/index-2026-07-27T14-57-08-0829.json +++ b/build/.cmake/api/v1/reply/index-2026-07-28T17-43-01-0588.json @@ -27,7 +27,7 @@ "objects" : [ { - "jsonFile" : "codemodel-v2-2319b378636e3c742c14.json", + "jsonFile" : "codemodel-v2-ccd34cf25146cac2c39e.json", "kind" : "codemodel", "version" : { @@ -100,7 +100,7 @@ } }, { - "jsonFile" : "codemodel-v2-2319b378636e3c742c14.json", + "jsonFile" : "codemodel-v2-ccd34cf25146cac2c39e.json", "kind" : "codemodel", "version" : { diff --git a/build/.cmake/api/v1/reply/target-ALL_BUILD-Release-cadb66c5dccd0bd206e6.json b/build/.cmake/api/v1/reply/target-ALL_BUILD-Debug-9ddbbbeb4caedf0a48f0.json similarity index 100% rename from build/.cmake/api/v1/reply/target-ALL_BUILD-Release-cadb66c5dccd0bd206e6.json rename to build/.cmake/api/v1/reply/target-ALL_BUILD-Debug-9ddbbbeb4caedf0a48f0.json index 8e32007..93dc2e3 100644 --- a/build/.cmake/api/v1/reply/target-ALL_BUILD-Release-cadb66c5dccd0bd206e6.json +++ b/build/.cmake/api/v1/reply/target-ALL_BUILD-Debug-9ddbbbeb4caedf0a48f0.json @@ -22,10 +22,10 @@ "dependencies" : [ { - "id" : "HydraEngine::@fafd37b19aacd4c483ed" + "id" : "HydraClient::@6890427a1f51a3e7e1df" }, { - "id" : "HydraClient::@6890427a1f51a3e7e1df" + "id" : "HydraEngine::@fafd37b19aacd4c483ed" }, { "id" : "ZERO_CHECK::@6890427a1f51a3e7e1df" @@ -41,10 +41,10 @@ "orderDependencies" : [ { - "id" : "HydraEngine::@fafd37b19aacd4c483ed" + "id" : "HydraClient::@6890427a1f51a3e7e1df" }, { - "id" : "HydraClient::@6890427a1f51a3e7e1df" + "id" : "HydraEngine::@fafd37b19aacd4c483ed" } ], "paths" : diff --git a/build/.cmake/api/v1/reply/target-ALL_BUILD-MinSizeRel-cadb66c5dccd0bd206e6.json b/build/.cmake/api/v1/reply/target-ALL_BUILD-MinSizeRel-9ddbbbeb4caedf0a48f0.json similarity index 100% rename from build/.cmake/api/v1/reply/target-ALL_BUILD-MinSizeRel-cadb66c5dccd0bd206e6.json rename to build/.cmake/api/v1/reply/target-ALL_BUILD-MinSizeRel-9ddbbbeb4caedf0a48f0.json index 8e32007..93dc2e3 100644 --- a/build/.cmake/api/v1/reply/target-ALL_BUILD-MinSizeRel-cadb66c5dccd0bd206e6.json +++ b/build/.cmake/api/v1/reply/target-ALL_BUILD-MinSizeRel-9ddbbbeb4caedf0a48f0.json @@ -22,10 +22,10 @@ "dependencies" : [ { - "id" : "HydraEngine::@fafd37b19aacd4c483ed" + "id" : "HydraClient::@6890427a1f51a3e7e1df" }, { - "id" : "HydraClient::@6890427a1f51a3e7e1df" + "id" : "HydraEngine::@fafd37b19aacd4c483ed" }, { "id" : "ZERO_CHECK::@6890427a1f51a3e7e1df" @@ -41,10 +41,10 @@ "orderDependencies" : [ { - "id" : "HydraEngine::@fafd37b19aacd4c483ed" + "id" : "HydraClient::@6890427a1f51a3e7e1df" }, { - "id" : "HydraClient::@6890427a1f51a3e7e1df" + "id" : "HydraEngine::@fafd37b19aacd4c483ed" } ], "paths" : diff --git a/build/.cmake/api/v1/reply/target-ALL_BUILD-RelWithDebInfo-cadb66c5dccd0bd206e6.json b/build/.cmake/api/v1/reply/target-ALL_BUILD-RelWithDebInfo-9ddbbbeb4caedf0a48f0.json similarity index 100% rename from build/.cmake/api/v1/reply/target-ALL_BUILD-RelWithDebInfo-cadb66c5dccd0bd206e6.json rename to build/.cmake/api/v1/reply/target-ALL_BUILD-RelWithDebInfo-9ddbbbeb4caedf0a48f0.json index 8e32007..93dc2e3 100644 --- a/build/.cmake/api/v1/reply/target-ALL_BUILD-RelWithDebInfo-cadb66c5dccd0bd206e6.json +++ b/build/.cmake/api/v1/reply/target-ALL_BUILD-RelWithDebInfo-9ddbbbeb4caedf0a48f0.json @@ -22,10 +22,10 @@ "dependencies" : [ { - "id" : "HydraEngine::@fafd37b19aacd4c483ed" + "id" : "HydraClient::@6890427a1f51a3e7e1df" }, { - "id" : "HydraClient::@6890427a1f51a3e7e1df" + "id" : "HydraEngine::@fafd37b19aacd4c483ed" }, { "id" : "ZERO_CHECK::@6890427a1f51a3e7e1df" @@ -41,10 +41,10 @@ "orderDependencies" : [ { - "id" : "HydraEngine::@fafd37b19aacd4c483ed" + "id" : "HydraClient::@6890427a1f51a3e7e1df" }, { - "id" : "HydraClient::@6890427a1f51a3e7e1df" + "id" : "HydraEngine::@fafd37b19aacd4c483ed" } ], "paths" : diff --git a/build/.cmake/api/v1/reply/target-ALL_BUILD-Debug-cadb66c5dccd0bd206e6.json b/build/.cmake/api/v1/reply/target-ALL_BUILD-Release-9ddbbbeb4caedf0a48f0.json similarity index 100% rename from build/.cmake/api/v1/reply/target-ALL_BUILD-Debug-cadb66c5dccd0bd206e6.json rename to build/.cmake/api/v1/reply/target-ALL_BUILD-Release-9ddbbbeb4caedf0a48f0.json index 8e32007..93dc2e3 100644 --- a/build/.cmake/api/v1/reply/target-ALL_BUILD-Debug-cadb66c5dccd0bd206e6.json +++ b/build/.cmake/api/v1/reply/target-ALL_BUILD-Release-9ddbbbeb4caedf0a48f0.json @@ -22,10 +22,10 @@ "dependencies" : [ { - "id" : "HydraEngine::@fafd37b19aacd4c483ed" + "id" : "HydraClient::@6890427a1f51a3e7e1df" }, { - "id" : "HydraClient::@6890427a1f51a3e7e1df" + "id" : "HydraEngine::@fafd37b19aacd4c483ed" }, { "id" : "ZERO_CHECK::@6890427a1f51a3e7e1df" @@ -41,10 +41,10 @@ "orderDependencies" : [ { - "id" : "HydraEngine::@fafd37b19aacd4c483ed" + "id" : "HydraClient::@6890427a1f51a3e7e1df" }, { - "id" : "HydraClient::@6890427a1f51a3e7e1df" + "id" : "HydraEngine::@fafd37b19aacd4c483ed" } ], "paths" : diff --git a/build/.cmake/api/v1/reply/target-HydraEngine-Debug-a388455bc5d4b1d63093.json b/build/.cmake/api/v1/reply/target-HydraEngine-Debug-2faea7c156292a0c0ce8.json similarity index 98% rename from build/.cmake/api/v1/reply/target-HydraEngine-Debug-a388455bc5d4b1d63093.json rename to build/.cmake/api/v1/reply/target-HydraEngine-Debug-2faea7c156292a0c0ce8.json index 257cb29..fe000c5 100644 --- a/build/.cmake/api/v1/reply/target-HydraEngine-Debug-a388455bc5d4b1d63093.json +++ b/build/.cmake/api/v1/reply/target-HydraEngine-Debug-2faea7c156292a0c0ce8.json @@ -203,35 +203,35 @@ 24, 27, 30, - 32, - 36, - 38, - 42, - 46, - 48, - 58, - 60, - 62, - 64, - 66, - 68, - 70, - 72, - 74, - 76, - 78, - 81, - 84, - 86, - 88, - 90, - 92, - 94, - 96, - 98, - 100, - 102, - 106 + 33, + 37, + 39, + 43, + 47, + 49, + 59, + 61, + 63, + 65, + 67, + 69, + 71, + 73, + 75, + 77, + 79, + 82, + 85, + 87, + 89, + 91, + 93, + 95, + 97, + 99, + 101, + 103, + 107 ] } ], @@ -322,35 +322,35 @@ 24, 27, 30, - 32, - 36, - 38, - 42, - 46, - 48, - 58, - 60, - 62, - 64, - 66, - 68, - 70, - 72, - 74, - 76, - 78, - 81, - 84, - 86, - 88, - 90, - 92, - 94, - 96, - 98, - 100, - 102, - 106 + 33, + 37, + 39, + 43, + 47, + 49, + 59, + 61, + 63, + 65, + 67, + 69, + 71, + 73, + 75, + 77, + 79, + 82, + 85, + 87, + 89, + 91, + 93, + 95, + 97, + 99, + 101, + 103, + 107 ] }, { @@ -376,18 +376,18 @@ 28, 29, 31, - 33, + 32, 34, 35, - 37, - 39, + 36, + 38, 40, 41, - 43, + 42, 44, 45, - 47, - 49, + 46, + 48, 50, 51, 52, @@ -396,33 +396,34 @@ 55, 56, 57, - 59, - 61, - 63, - 65, - 67, - 69, - 71, - 73, - 75, - 77, - 79, + 58, + 60, + 62, + 64, + 66, + 68, + 70, + 72, + 74, + 76, + 78, 80, - 82, + 81, 83, - 85, - 87, - 89, - 91, - 93, - 95, - 97, - 99, - 101, - 103, + 84, + 86, + 88, + 90, + 92, + 94, + 96, + 98, + 100, + 102, 104, 105, - 107 + 106, + 108 ] } ], @@ -601,6 +602,11 @@ "path" : "HydraEngine/source/buffer/HydraMaterialBufferManager.h", "sourceGroupIndex" : 1 }, + { + "backtrace" : 1, + "path" : "HydraEngine/source/buffer/HydraShadowBuffer.h", + "sourceGroupIndex" : 1 + }, { "backtrace" : 1, "compileGroupIndex" : 0, diff --git a/build/.cmake/api/v1/reply/target-HydraEngine-MinSizeRel-8280923c3e8a8a1bd015.json b/build/.cmake/api/v1/reply/target-HydraEngine-MinSizeRel-8b4acdd146655dce4c11.json similarity index 98% rename from build/.cmake/api/v1/reply/target-HydraEngine-MinSizeRel-8280923c3e8a8a1bd015.json rename to build/.cmake/api/v1/reply/target-HydraEngine-MinSizeRel-8b4acdd146655dce4c11.json index 0aa139e..a331d03 100644 --- a/build/.cmake/api/v1/reply/target-HydraEngine-MinSizeRel-8280923c3e8a8a1bd015.json +++ b/build/.cmake/api/v1/reply/target-HydraEngine-MinSizeRel-8b4acdd146655dce4c11.json @@ -203,35 +203,35 @@ 24, 27, 30, - 32, - 36, - 38, - 42, - 46, - 48, - 58, - 60, - 62, - 64, - 66, - 68, - 70, - 72, - 74, - 76, - 78, - 81, - 84, - 86, - 88, - 90, - 92, - 94, - 96, - 98, - 100, - 102, - 106 + 33, + 37, + 39, + 43, + 47, + 49, + 59, + 61, + 63, + 65, + 67, + 69, + 71, + 73, + 75, + 77, + 79, + 82, + 85, + 87, + 89, + 91, + 93, + 95, + 97, + 99, + 101, + 103, + 107 ] } ], @@ -322,35 +322,35 @@ 24, 27, 30, - 32, - 36, - 38, - 42, - 46, - 48, - 58, - 60, - 62, - 64, - 66, - 68, - 70, - 72, - 74, - 76, - 78, - 81, - 84, - 86, - 88, - 90, - 92, - 94, - 96, - 98, - 100, - 102, - 106 + 33, + 37, + 39, + 43, + 47, + 49, + 59, + 61, + 63, + 65, + 67, + 69, + 71, + 73, + 75, + 77, + 79, + 82, + 85, + 87, + 89, + 91, + 93, + 95, + 97, + 99, + 101, + 103, + 107 ] }, { @@ -376,18 +376,18 @@ 28, 29, 31, - 33, + 32, 34, 35, - 37, - 39, + 36, + 38, 40, 41, - 43, + 42, 44, 45, - 47, - 49, + 46, + 48, 50, 51, 52, @@ -396,33 +396,34 @@ 55, 56, 57, - 59, - 61, - 63, - 65, - 67, - 69, - 71, - 73, - 75, - 77, - 79, + 58, + 60, + 62, + 64, + 66, + 68, + 70, + 72, + 74, + 76, + 78, 80, - 82, + 81, 83, - 85, - 87, - 89, - 91, - 93, - 95, - 97, - 99, - 101, - 103, + 84, + 86, + 88, + 90, + 92, + 94, + 96, + 98, + 100, + 102, 104, 105, - 107 + 106, + 108 ] } ], @@ -601,6 +602,11 @@ "path" : "HydraEngine/source/buffer/HydraMaterialBufferManager.h", "sourceGroupIndex" : 1 }, + { + "backtrace" : 1, + "path" : "HydraEngine/source/buffer/HydraShadowBuffer.h", + "sourceGroupIndex" : 1 + }, { "backtrace" : 1, "compileGroupIndex" : 0, diff --git a/build/.cmake/api/v1/reply/target-HydraEngine-RelWithDebInfo-1179a3c8def17db9efd4.json b/build/.cmake/api/v1/reply/target-HydraEngine-RelWithDebInfo-800c6fa211e5ae182b46.json similarity index 98% rename from build/.cmake/api/v1/reply/target-HydraEngine-RelWithDebInfo-1179a3c8def17db9efd4.json rename to build/.cmake/api/v1/reply/target-HydraEngine-RelWithDebInfo-800c6fa211e5ae182b46.json index 1579917..a09b9e6 100644 --- a/build/.cmake/api/v1/reply/target-HydraEngine-RelWithDebInfo-1179a3c8def17db9efd4.json +++ b/build/.cmake/api/v1/reply/target-HydraEngine-RelWithDebInfo-800c6fa211e5ae182b46.json @@ -203,35 +203,35 @@ 24, 27, 30, - 32, - 36, - 38, - 42, - 46, - 48, - 58, - 60, - 62, - 64, - 66, - 68, - 70, - 72, - 74, - 76, - 78, - 81, - 84, - 86, - 88, - 90, - 92, - 94, - 96, - 98, - 100, - 102, - 106 + 33, + 37, + 39, + 43, + 47, + 49, + 59, + 61, + 63, + 65, + 67, + 69, + 71, + 73, + 75, + 77, + 79, + 82, + 85, + 87, + 89, + 91, + 93, + 95, + 97, + 99, + 101, + 103, + 107 ] } ], @@ -322,35 +322,35 @@ 24, 27, 30, - 32, - 36, - 38, - 42, - 46, - 48, - 58, - 60, - 62, - 64, - 66, - 68, - 70, - 72, - 74, - 76, - 78, - 81, - 84, - 86, - 88, - 90, - 92, - 94, - 96, - 98, - 100, - 102, - 106 + 33, + 37, + 39, + 43, + 47, + 49, + 59, + 61, + 63, + 65, + 67, + 69, + 71, + 73, + 75, + 77, + 79, + 82, + 85, + 87, + 89, + 91, + 93, + 95, + 97, + 99, + 101, + 103, + 107 ] }, { @@ -376,18 +376,18 @@ 28, 29, 31, - 33, + 32, 34, 35, - 37, - 39, + 36, + 38, 40, 41, - 43, + 42, 44, 45, - 47, - 49, + 46, + 48, 50, 51, 52, @@ -396,33 +396,34 @@ 55, 56, 57, - 59, - 61, - 63, - 65, - 67, - 69, - 71, - 73, - 75, - 77, - 79, + 58, + 60, + 62, + 64, + 66, + 68, + 70, + 72, + 74, + 76, + 78, 80, - 82, + 81, 83, - 85, - 87, - 89, - 91, - 93, - 95, - 97, - 99, - 101, - 103, + 84, + 86, + 88, + 90, + 92, + 94, + 96, + 98, + 100, + 102, 104, 105, - 107 + 106, + 108 ] } ], @@ -601,6 +602,11 @@ "path" : "HydraEngine/source/buffer/HydraMaterialBufferManager.h", "sourceGroupIndex" : 1 }, + { + "backtrace" : 1, + "path" : "HydraEngine/source/buffer/HydraShadowBuffer.h", + "sourceGroupIndex" : 1 + }, { "backtrace" : 1, "compileGroupIndex" : 0, diff --git a/build/.cmake/api/v1/reply/target-HydraEngine-Release-4d51ecf0ab4ffdcb7da6.json b/build/.cmake/api/v1/reply/target-HydraEngine-Release-b1d450122d30c349552d.json similarity index 98% rename from build/.cmake/api/v1/reply/target-HydraEngine-Release-4d51ecf0ab4ffdcb7da6.json rename to build/.cmake/api/v1/reply/target-HydraEngine-Release-b1d450122d30c349552d.json index 84bdcc9..88ff0bf 100644 --- a/build/.cmake/api/v1/reply/target-HydraEngine-Release-4d51ecf0ab4ffdcb7da6.json +++ b/build/.cmake/api/v1/reply/target-HydraEngine-Release-b1d450122d30c349552d.json @@ -203,35 +203,35 @@ 24, 27, 30, - 32, - 36, - 38, - 42, - 46, - 48, - 58, - 60, - 62, - 64, - 66, - 68, - 70, - 72, - 74, - 76, - 78, - 81, - 84, - 86, - 88, - 90, - 92, - 94, - 96, - 98, - 100, - 102, - 106 + 33, + 37, + 39, + 43, + 47, + 49, + 59, + 61, + 63, + 65, + 67, + 69, + 71, + 73, + 75, + 77, + 79, + 82, + 85, + 87, + 89, + 91, + 93, + 95, + 97, + 99, + 101, + 103, + 107 ] } ], @@ -322,35 +322,35 @@ 24, 27, 30, - 32, - 36, - 38, - 42, - 46, - 48, - 58, - 60, - 62, - 64, - 66, - 68, - 70, - 72, - 74, - 76, - 78, - 81, - 84, - 86, - 88, - 90, - 92, - 94, - 96, - 98, - 100, - 102, - 106 + 33, + 37, + 39, + 43, + 47, + 49, + 59, + 61, + 63, + 65, + 67, + 69, + 71, + 73, + 75, + 77, + 79, + 82, + 85, + 87, + 89, + 91, + 93, + 95, + 97, + 99, + 101, + 103, + 107 ] }, { @@ -376,18 +376,18 @@ 28, 29, 31, - 33, + 32, 34, 35, - 37, - 39, + 36, + 38, 40, 41, - 43, + 42, 44, 45, - 47, - 49, + 46, + 48, 50, 51, 52, @@ -396,33 +396,34 @@ 55, 56, 57, - 59, - 61, - 63, - 65, - 67, - 69, - 71, - 73, - 75, - 77, - 79, + 58, + 60, + 62, + 64, + 66, + 68, + 70, + 72, + 74, + 76, + 78, 80, - 82, + 81, 83, - 85, - 87, - 89, - 91, - 93, - 95, - 97, - 99, - 101, - 103, + 84, + 86, + 88, + 90, + 92, + 94, + 96, + 98, + 100, + 102, 104, 105, - 107 + 106, + 108 ] } ], @@ -601,6 +602,11 @@ "path" : "HydraEngine/source/buffer/HydraMaterialBufferManager.h", "sourceGroupIndex" : 1 }, + { + "backtrace" : 1, + "path" : "HydraEngine/source/buffer/HydraShadowBuffer.h", + "sourceGroupIndex" : 1 + }, { "backtrace" : 1, "compileGroupIndex" : 0, diff --git a/build/Debug/HydraClient.pdb b/build/Debug/HydraClient.pdb index a67a26b..d37d277 100644 Binary files a/build/Debug/HydraClient.pdb and b/build/Debug/HydraClient.pdb differ diff --git a/build/HydraClient.dir/Debug/HydraClient.ilk b/build/HydraClient.dir/Debug/HydraClient.ilk index 34592ab..929c548 100644 Binary files a/build/HydraClient.dir/Debug/HydraClient.ilk and b/build/HydraClient.dir/Debug/HydraClient.ilk differ diff --git a/build/HydraClient.dir/Debug/HydraClient.tlog/CL.read.1.tlog b/build/HydraClient.dir/Debug/HydraClient.tlog/CL.read.1.tlog index e3e63ad..3222c2c 100644 Binary files a/build/HydraClient.dir/Debug/HydraClient.tlog/CL.read.1.tlog and b/build/HydraClient.dir/Debug/HydraClient.tlog/CL.read.1.tlog differ diff --git a/build/HydraClient.dir/Debug/HydraClient.tlog/CL.write.1.tlog b/build/HydraClient.dir/Debug/HydraClient.tlog/CL.write.1.tlog index 8e2333e..6c56cb0 100644 Binary files a/build/HydraClient.dir/Debug/HydraClient.tlog/CL.write.1.tlog and b/build/HydraClient.dir/Debug/HydraClient.tlog/CL.write.1.tlog differ diff --git a/build/HydraClient.dir/Debug/vc143.pdb b/build/HydraClient.dir/Debug/vc143.pdb index 0cd7c4c..3f7436c 100644 Binary files a/build/HydraClient.dir/Debug/vc143.pdb and b/build/HydraClient.dir/Debug/vc143.pdb differ diff --git a/build/HydraEngine/Debug/HydraEngine.pdb b/build/HydraEngine/Debug/HydraEngine.pdb index 778dcde..c7b7e2f 100644 Binary files a/build/HydraEngine/Debug/HydraEngine.pdb and b/build/HydraEngine/Debug/HydraEngine.pdb differ diff --git a/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.ilk b/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.ilk index 09b4551..ef1b287 100644 Binary files a/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.ilk and b/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.ilk differ diff --git a/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/CL.command.1.tlog b/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/CL.command.1.tlog index 9e57765..fea5456 100644 Binary files a/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/CL.command.1.tlog and b/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/CL.command.1.tlog differ diff --git a/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/CL.read.1.tlog b/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/CL.read.1.tlog index c1c7994..cdd0562 100644 Binary files a/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/CL.read.1.tlog and b/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/CL.read.1.tlog differ diff --git a/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/CL.write.1.tlog b/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/CL.write.1.tlog index f93f38e..c0a6e8d 100644 Binary files a/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/CL.write.1.tlog and b/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/CL.write.1.tlog differ diff --git a/build/HydraEngine/HydraEngine.dir/Debug/vc143.pdb b/build/HydraEngine/HydraEngine.dir/Debug/vc143.pdb index e751d7c..aa852ae 100644 Binary files a/build/HydraEngine/HydraEngine.dir/Debug/vc143.pdb and b/build/HydraEngine/HydraEngine.dir/Debug/vc143.pdb differ diff --git a/build/HydraEngine/HydraEngine.vcxproj b/build/HydraEngine/HydraEngine.vcxproj index f05636b..e5edcd5 100644 --- a/build/HydraEngine/HydraEngine.vcxproj +++ b/build/HydraEngine/HydraEngine.vcxproj @@ -457,6 +457,7 @@ if %errorlevel% neq 0 goto :VCEnd + diff --git a/build/HydraEngine/HydraEngine.vcxproj.filters b/build/HydraEngine/HydraEngine.vcxproj.filters index 891834b..682983b 100644 --- a/build/HydraEngine/HydraEngine.vcxproj.filters +++ b/build/HydraEngine/HydraEngine.vcxproj.filters @@ -186,6 +186,9 @@ Header Files + + Header Files + Header Files diff --git a/build/linkerrors.txt b/build/linkerrors.txt index b054b24..eddb5c0 100644 --- a/build/linkerrors.txt +++ b/build/linkerrors.txt @@ -1,6 +1,6 @@ ================================================================================ Linker Errors -Generated: 2026-07-27T23:22:14.073Z +Generated: 2026-07-28T12:58:05.588Z Total Errors: 1 ================================================================================