diff --git a/Nuake/src/Rendering/Renderer.cpp b/Nuake/src/Rendering/Renderer.cpp index 92c61628..686ecb5f 100644 --- a/Nuake/src/Rendering/Renderer.cpp +++ b/Nuake/src/Rendering/Renderer.cpp @@ -82,14 +82,17 @@ namespace Nuake m_LightsUniformBuffer = CreateRef(128); - Ref material = MaterialManager::Get()->GetMaterial("default"); + Ref defaultMaterial = CreateRef(Vector3{1, 1, 1}); + defaultMaterial->SetName("white"); + MaterialManager::Get()->RegisterMaterial(defaultMaterial); + CubeMesh = CreateRef(); CubeMesh->AddSurface(CubeVertices, CubeIndices); - CubeMesh->SetMaterial(material); + CubeMesh->SetMaterial(defaultMaterial); QuadMesh = CreateRef(); QuadMesh->AddSurface(QuadVertices, { 0, 1, 2, 3, 4, 5 }); - QuadMesh->SetMaterial(material); + QuadMesh->SetMaterial(defaultMaterial); } void Renderer::LoadShaders() diff --git a/Nuake/src/Rendering/SceneRenderer.cpp b/Nuake/src/Rendering/SceneRenderer.cpp index bafbe7cc..c7575baf 100644 --- a/Nuake/src/Rendering/SceneRenderer.cpp +++ b/Nuake/src/Rendering/SceneRenderer.cpp @@ -329,6 +329,7 @@ namespace Nuake if (!visibility.Visible) continue; + Vector3 oldColor = Renderer::QuadMesh->GetMaterial()->data.m_AlbedoColor; auto initialTransform = transform.GetGlobalTransform(); for (auto& p : emitterComponent.Emitter.Particles) { @@ -342,11 +343,14 @@ namespace Nuake // Scale particleTransform = glm::scale(particleTransform, transform.GetGlobalScale()); + Renderer::QuadMesh->GetMaterial()->data.u_HasAlbedo = 0; + Renderer::QuadMesh->GetMaterial()->data.m_AlbedoColor = p.Color; Renderer::SubmitMesh(Renderer::QuadMesh, particleTransform, (uint32_t)e); } - } - Renderer::Flush(gBufferShader, false); + Renderer::Flush(gBufferShader, false); + Renderer::QuadMesh->GetMaterial()->data.m_AlbedoColor = oldColor; + } } } diff --git a/Nuake/src/Rendering/Textures/Material.cpp b/Nuake/src/Rendering/Textures/Material.cpp index 65c14827..66e3f032 100644 --- a/Nuake/src/Rendering/Textures/Material.cpp +++ b/Nuake/src/Rendering/Textures/Material.cpp @@ -68,9 +68,7 @@ namespace Nuake data.m_AlbedoColor = Vector3{ albedoColor.r, albedoColor.g, albedoColor.b }; - m_Name = "New material"; - - m_Albedo = m_DefaultAlbedo; + m_Name = "default"; } Material::~Material() {} diff --git a/Nuake/src/Rendering/Textures/MaterialManager.h b/Nuake/src/Rendering/Textures/MaterialManager.h index 1495512d..c77faf86 100644 --- a/Nuake/src/Rendering/Textures/MaterialManager.h +++ b/Nuake/src/Rendering/Textures/MaterialManager.h @@ -11,8 +11,6 @@ namespace Nuake class MaterialManager { private: - const std::string DEFAULT_MATERIAL = "resources/Textures/default/Default.png"; - static Ref s_Instance; std::map> m_Materials; @@ -24,6 +22,7 @@ namespace Nuake public: + const std::string DEFAULT_MATERIAL = "resources/Textures/default/Default.png"; std::string CurrentlyBoundedMaterial = ""; MaterialManager(); diff --git a/Nuake/src/Scene/Systems/ParticleEmitter.h b/Nuake/src/Scene/Systems/ParticleEmitter.h index 9ed356bf..f7d8609a 100644 --- a/Nuake/src/Scene/Systems/ParticleEmitter.h +++ b/Nuake/src/Scene/Systems/ParticleEmitter.h @@ -5,6 +5,8 @@ #include "src/Core/Maths.h" #include "src/Core/Timestep.h" +#include "src/Rendering/Textures/Material.h" + #include namespace Nuake