From 3c57e57d813a62b7cdbb73c978bb633241e3b983 Mon Sep 17 00:00:00 2001 From: Antoine Pilote Date: Sat, 23 Sep 2023 21:49:52 -0400 Subject: [PATCH] Fixed wrong material used for particles when more than one was used --- Nuake/src/Rendering/SceneRenderer.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Nuake/src/Rendering/SceneRenderer.cpp b/Nuake/src/Rendering/SceneRenderer.cpp index 997ec862..5a9dc81d 100644 --- a/Nuake/src/Rendering/SceneRenderer.cpp +++ b/Nuake/src/Rendering/SceneRenderer.cpp @@ -387,6 +387,8 @@ namespace Nuake Renderer::Flush(gBufferShader, false); // Particles + Ref previousMaterial = Renderer::QuadMesh->GetMaterial(); + auto particleEmitterView = scene.m_Registry.view(); for (auto& e : particleEmitterView) { @@ -395,6 +397,8 @@ namespace Nuake if (!visibility.Visible) continue; + Renderer::QuadMesh->SetMaterial(emitterComponent.ParticleMaterial); + Vector3 oldColor = Renderer::QuadMesh->GetMaterial()->data.m_AlbedoColor; auto initialTransform = transform.GetGlobalTransform(); for (auto& p : emitterComponent.Emitter.Particles) @@ -416,18 +420,19 @@ namespace Nuake // Scale particleTransform = glm::scale(particleTransform, emitterComponent.ParticleScale); - - Renderer::QuadMesh->GetMaterial()->data.u_HasAlbedo = 0; - Renderer::QuadMesh->GetMaterial()->data.m_AlbedoColor = p.Color; + Renderer::SubmitMesh(Renderer::QuadMesh, particleTransform, (uint32_t)e); } Renderer::QuadMesh->SetMaterial(emitterComponent.ParticleMaterial); - Renderer::Flush(gBufferShader, false); - Renderer::QuadMesh->GetMaterial()->data.m_AlbedoColor = oldColor; + + Renderer::QuadMesh->SetMaterial(previousMaterial); } + // Reset material on quadmesh + //Renderer::QuadMesh->SetMaterial(previousMaterial); + // Skinned mesh at the end because we switch shader gBufferSkinnedMeshShader->Bind(); gBufferSkinnedMeshShader->SetUniformMat4f("u_Projection", mProjection);