+1 vote

I'm using Godot 3.1 alpha 2 (tried 3.0 stable as well).
Actually I have several issues:

1) Draw calls counter in the Monitors sections seems to be completely broken. It shows 0 on all occassions.
2) I put all my sprites into a spritesheet and use them wisely (I only use .tres files for my sprites). Theoretically the engine MUST optimize the draw calls count (this is the whole point of packing). However, seems it doesn't. 2500 of packed sprites on the screen easily put CPU to 100%. This sucks. I can't prove the point though (see p. 1).

in Engine by (13 points)

OK, switching to OpenGL ES2 renderer improves performance significantly.
Batching not implemented in ES3 renderer?

2500 of packed sprites on the screen easily put CPU to 100%

Are you sure this isn't just the node cost, if you are using .tres files, you probably use a node for every sprite.
In Godot, even a empty node has a high overhead.

To test this, just make a new scene and place 2500 of the icon image provided with Godot. If you still get low performance with the icons it is the nodes.

However, if the single icon rendered 2500 times, runs smoothly then you know it is the draw calls; because rendering the same sprite should have very few draw calls.

Ok, it could be node cost. How can I optimize this? As I said I use the packed spritesheet. What if I need to render a huge grid from it (say, 50x50) to fully utilize the sprite atlas batching? I cannot use TileMap because of its limitations (each node has it's all custom sub-elements, tweaks etc).

Please log in or register to answer this question.

Welcome to Godot Engine Q&A, where you can ask questions and receive answers from other members of the community.

Please make sure to read Frequently asked questions and How to use this Q&A? before posting your first questions.
Social login is currently unavailable. If you've previously logged in with a Facebook or GitHub account, use the I forgot my password link in the login box to set a password for your account. If you still can't access your account, send an email to [email protected] with your username.