From d5fbd2001b0ad3591a7f969dfd75c809ab55b40e Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Fri, 30 Jun 2023 04:34:10 +1000 Subject: RenderPrimitive micro-optimizations --- source/rendering/StarWorldPainter.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'source/rendering/StarWorldPainter.cpp') diff --git a/source/rendering/StarWorldPainter.cpp b/source/rendering/StarWorldPainter.cpp index 8e27006..07f61e0 100644 --- a/source/rendering/StarWorldPainter.cpp +++ b/source/rendering/StarWorldPainter.cpp @@ -173,7 +173,10 @@ void WorldPainter::renderParticles(WorldRenderData& renderData, Particle::Layer Vec2F size = Vec2F::filled(particle.size * m_camera.pixelRatio()); if (particle.type == Particle::Type::Ember) { - m_renderer->render(renderFlatRect(RectF(position - size / 2, position + size / 2), particle.color.toRgba(), particle.fullbright ? 0.0f : 1.0f)); + m_renderer->immediatePrimitives().emplace_back(std::in_place_type_t(), + RectF(position - size / 2, position + size / 2), + particle.color.toRgba(), + particle.fullbright ? 0.0f : 1.0f); } else if (particle.type == Particle::Type::Streak) { // Draw a rotated quad streaking in the direction the particle is coming from. @@ -183,12 +186,12 @@ void WorldPainter::renderParticles(WorldRenderData& renderData, Particle::Layer float length = particle.length * m_camera.pixelRatio(); Vec4B color = particle.color.toRgba(); float lightMapMultiplier = particle.fullbright ? 0.0f : 1.0f; - m_renderer->render(RenderQuad{{}, - {position - sideHalf, {}, color, lightMapMultiplier}, - {position + sideHalf, {}, color, lightMapMultiplier}, - {position - dir * length + sideHalf, {}, color, lightMapMultiplier}, - {position - dir * length - sideHalf, {}, color, lightMapMultiplier} - }); + m_renderer->immediatePrimitives().emplace_back(std::in_place_type_t(), + position - sideHalf, + position + sideHalf, + position - dir * length + sideHalf, + position - dir * length - sideHalf, + color, lightMapMultiplier); } else if (particle.type == Particle::Type::Textured || particle.type == Particle::Type::Animated) { Drawable drawable; -- cgit v1.2.3