mirror of
https://github.com/antopilo/Nuake.git
synced 2026-09-15 20:08:54 +03:00
Fixed wrong material used for particles when more than one was used
This commit is contained in:
@@ -387,6 +387,8 @@ namespace Nuake
|
||||
Renderer::Flush(gBufferShader, false);
|
||||
|
||||
// Particles
|
||||
Ref<Material> previousMaterial = Renderer::QuadMesh->GetMaterial();
|
||||
|
||||
auto particleEmitterView = scene.m_Registry.view<TransformComponent, ParticleEmitterComponent, VisibilityComponent>();
|
||||
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);
|
||||
|
||||
Reference in New Issue
Block a user