Godot 4.0 seems terribly slow on Mobile
Asked Answered
B

15

0

I, like many others am terribly excited for the upcoming 4.0 release so I've been obviously trying all the alpha versions coming out (these tests were done on RC1), but I seem to get really low fps on Android with the Mobile Renderer, I do acknowledge that my phone is an ancient low end device (it's a xiaomi redmi 7), but it even seems to struggle on simple scenes like this one I've been testing:

In this scene I have a simple environment and a directional light without shadows.
With the visual profiler I can see the gpu uses 11.ms for tonemapping (set in linear in enviroment) and 4.0 ms in shading meshes with the light on (just one with the light off).
With a full mesh covering the screen i get below 55 fps, even with 3d resolution scaled down to 0.35
I first wondered if it was a vulkan device driver problem, so I decided to use Unity to do a quick test and comparison
(used a 2020 version i had before I focused on godot, and I run the scene with Unity Remote) (Ugh, I know) and it seems to run fine with the default Unity URP renderer scene
this one:

running at 250 fps (at least i think so, I tried setting up a label to display 1/delta time and this was the result) with some optimizations like scaled down resolution which I wasnt able to figure out how to disable for a proper comparison.
But the difference between the 2 of them is quite high, is there any setting that I havent figure out how to optimize?
Or is there a way to imitate the default Unity optimization in advance?
Thanks everyone for the time to read this as I do acknowledge this is a long post : )

Bugbane answered 17/2, 2023 at 16:32 Comment(0)
I
0

Cadman Chip as I got further into the development of my simulator game with Godot 4.0 (the game is 3D), and even with just a few elements on the screen, and they are low poly, 2000s PC visuals, the editor starts stuttering and freezing constantly, to the point that trying to make a level or moving things around makes it very annoying to work it.

And... that's in a high-end PC with RTX 3080Ti, SSD NVMe.2, 64GB Ram and Ryzen 9 5900X - no way in hell a tiny 3D level should freeze like that in this machine.

Then, "but it's my fault, my polygons are unoptimized". Well, everything is butter smooth in Unity and UE. The main character is less than 4000 tris.

And of course let me not start on the Godot's 3D Physics... that would be another wall of text, zomfg.

So yeah, Godot 4 has a long way before it's good for 3D. But even as Juán recognized, those are all being carred over to 4.1. As a small-time Godot contributor, this is very understandable (project funds, GDC timing, contributor motivation, etc). Everyone is working super hard, crunching, and if you report bugs and issues correctly (well written Issues with a reproduction project), you are well taken care.

It boils down to 2 QUESTIONS:

  • Can you and your game wait for 4.1 (or even later??)? Then fine, wait for it, it's not the end of the world. It's an open-source project, let's celebrate and wait for its growth. Nobody owns us anything, even if it takes 10 years, let's just wait - or help when needed with money or contributions.

  • Or, like me, you cannot wait/do not want to wait for it to be fixed? Carry on and use Unity or UE (this is what I'm doing for my 3D projects). Use Godot 4.* when it's ready for your needs 🙂 (with 4.* I'm going to try new game projects with Godot, not only GUI stuff as I currently do).

So Chip it's not your fault or your devices fault. It's just not ready yet.

Anyway, Godot 4.0 is already amazing for GUI and 2D.

Ida answered 18/2, 2023 at 9:21 Comment(0)
C
0

Even the desktop render is really unoptimized IMO. I tested the RC1 for Godot 4.0 and on my laptop I was getting only 100 FPS with a fairly simple scene (one static character and a panaroma sky). This was at 1440p, but this is a brand new high end laptop with an AMD 6800M card, which can get like 90 FPS in Cyberpunk 2077 in the city, or usually 165 FPS in less demanding games. So getting 100 FPS with just a single static mesh seems extremely low, no post processing or anything. I've been sick with COVID and haven't got to do more testing, but my initial tests indicate that Godot 4.0 is poorly optimized.

Cadman answered 17/2, 2023 at 19:3 Comment(0)
C
0

So performance on my desktop machine is much better, though that is expected as I have an AMD 6950 XT. My laptop is still decent though, so I don't know what is up there, but I need more time to test.

I can check out mobile maybe tomorrow and see how it looks. Though my guess is that Godot 4.0 is designed to work better on newer or higher end devices. Godot 3.x was very low spec.

Cadman answered 18/2, 2023 at 4:36 Comment(0)
I
0

Cadman Chip as I got further into the development of my simulator game with Godot 4.0 (the game is 3D), and even with just a few elements on the screen, and they are low poly, 2000s PC visuals, the editor starts stuttering and freezing constantly, to the point that trying to make a level or moving things around makes it very annoying to work it.

And... that's in a high-end PC with RTX 3080Ti, SSD NVMe.2, 64GB Ram and Ryzen 9 5900X - no way in hell a tiny 3D level should freeze like that in this machine.

Then, "but it's my fault, my polygons are unoptimized". Well, everything is butter smooth in Unity and UE. The main character is less than 4000 tris.

And of course let me not start on the Godot's 3D Physics... that would be another wall of text, zomfg.

So yeah, Godot 4 has a long way before it's good for 3D. But even as Juán recognized, those are all being carred over to 4.1. As a small-time Godot contributor, this is very understandable (project funds, GDC timing, contributor motivation, etc). Everyone is working super hard, crunching, and if you report bugs and issues correctly (well written Issues with a reproduction project), you are well taken care.

It boils down to 2 QUESTIONS:

  • Can you and your game wait for 4.1 (or even later??)? Then fine, wait for it, it's not the end of the world. It's an open-source project, let's celebrate and wait for its growth. Nobody owns us anything, even if it takes 10 years, let's just wait - or help when needed with money or contributions.

  • Or, like me, you cannot wait/do not want to wait for it to be fixed? Carry on and use Unity or UE (this is what I'm doing for my 3D projects). Use Godot 4.* when it's ready for your needs 🙂 (with 4.* I'm going to try new game projects with Godot, not only GUI stuff as I currently do).

So Chip it's not your fault or your devices fault. It's just not ready yet.

Anyway, Godot 4.0 is already amazing for GUI and 2D.

Ida answered 18/2, 2023 at 9:21 Comment(0)
C
0

Ida Or, like me, you cannot wait/do not want to wait for it to be fixed? Carry on and use Unity or UE

Or godot 3 if it performs fine enough for you.

Carving answered 18/2, 2023 at 9:48 Comment(0)
I
0

Carving can't live without the Godot 4 QoL improvements anymore 🙁 So I'd rather wait for 4.1+ than use Godot 3 (for 3D projects that is, because for GUI applications Godot 3 is AMAZING).

Ida answered 18/2, 2023 at 10:34 Comment(0)
C
0

Yeah, I didn't just mean FPS when I said 'if it performs well enough'.

Carving answered 18/2, 2023 at 10:52 Comment(0)
B
0

Thank you all for the great replies. I am very sorry to hear how the engine performs on your powerful machines, especially considering that the scenes were simple and 1440p and 144hz are now a fairly common target, and surely the hardware of the average user is not up to the level of your PCs, especially with this GPU market (for example, as a broke college student, I am stuck with a 1050ti xD). I was very hopeful to see a substantial increase in performance with Godot 4.0, but I will still remain hopeful for the future, in the meanwhile I'll try to focus on 2D or increase my skills in the hope of being able to contribute to this splendid engine one day.

Bugbane answered 18/2, 2023 at 15:58 Comment(0)
C
0

Bugbane Do note that some of it is also up to the default project setting being perhaps a bit too high. Especially if targeting mobile or VR you should start with setting everything down to lowest settings perhaps. It's certainly worth experimenting with.

Carving answered 18/2, 2023 at 16:35 Comment(0)
B
0

Carving
I randomly tweaked all the settings i knew could improve performance and saw a major improvement and now the scene could at least run >60 fps, the settings I changed from default are:
Disabling all filtering from the Textures tab or setting them to nearest,
setting all shadows atlas size to 1024 with no filtering (even tho they do not look acceptable)
setting GI to half resolution even if I dont think this scene uses any form of it?
setting all depth of field to the lowest setting
I skipped environment tab because I dont use its features
I remove screen space roughness limiter
and scaled the resolution by 0,35 (sadly the performance are still not good on its native resolution of 720p
Here's what the visual profiler says:

Next step will be trying if this old scene I and 3 other students had made for a Uni course with Godot 3.3 will run on my device (it used to run at >45 fps on my device without grass and shadows as the whole thing is not bestly optimized)

Bugbane answered 18/2, 2023 at 17:7 Comment(0)
B
0

I've been testing a lot more and I'd like to end with some praise.
On my laptop tests done on what I'd like to define as a "craptop" which features an amd A12 9720P as a processor plus a dedicated graphics card unrecognized by neither windows or linux,
on this scene with a directional light and shadows with a map size of 4096:

I was able to go from 30 fps on godot 3.5.1 (using GLES2 because it performed better than GLES3)
to 90 fps on godot 4.0rc1(Forward renderer)
Sadly the scene was acceptably runnable on my phone only on 3.5.1 achieving a 50 fps without light and shadows ( +light: 30 fps + shadows: ~10fps, no light no grass: >60 fps)
So I can say that beside the bad performances on mobile there is a lot to praise here, also as expected the scene scales infinitely better running ~50 fps with lights and around 2.5 milions quads of alpha scissored grass.
I'd love to see how it performs on my desktop when I have the time.

Back to my 4.1 performance analysis:
at native resolution with mostly optimized settings from default:
even linear tonemapping seems to take ~10ms on my phone which means environments were unusable,
the opaque rendering phase seems to take ~10 fps on a scene with an empty camera and adding a simple quad with default material covering the whole screen adds around 2 ms for each one.
Again this could be just my phone's Adreno 506 GPU acting weird and being low end and old (even tho apparently much more higher end devices seem to struggle a little bit too), but as I said before on Unity vulkan URP renderer MUCH more complex scenes run MUCH more smoothly,
and as low end devices gets better at everyday tasks I can see a lot of the market share steering towards them, plus I get that optimizing for low end and old devices can be a huge hassle for an open source project which tries to provide high visual fidelity on complex scenes it has the benefit of improving how many players our games can reach and it's also quite good for our environment.
Thanks everyone for listening and replying to my long rambling, I hope my test can be useful to detect where to improve and I'll be available to do some more tests or provide my test scenes to anyone who'd like to do more tests with them : ) .
Have a great day!

Bugbane answered 19/2, 2023 at 21:18 Comment(0)
H
0

that weird, on my igpu laptop in the forward + i get 100 or 90 fps in scenes like this, it doesn't have much stuff going on, but my pc is an igpu. also the leaves are approximately 300 triangles with transparency on. >!!<

Handicapped answered 5/4, 2023 at 10:58 Comment(0)
C
0

Handicapped that weird, on my igpu laptop in the forward + i get 100 or 90 fps in scenes like this

Just because they are iGPUs doesn't mean they are all the same. Chip mentioned the AMD A12-9720P(Bristol ridge) which is a low-power mobile variant of the Excavator architecture CPUs and a generically branded "R7" 512 shader iGPU. Honestly the real bottleneck there is the CPU in it's 15W if not even 12W configuration.

Carving answered 5/4, 2023 at 15:55 Comment(0)
S
0

In general, we expect the Compatibility rendering method to perform better than Forward Mobile on mobile (while also being more compatible). It's missing some features like shadows currently, but these will be added in future 4.x releases.

Regarding the Forward Mobile rendering method, it's unexpected that the tonemap pass takes so long to perform. Can you reproduce this after disabling glow in the Environment and setting tonemapping to Linear?

Also, could you upload a minimal reproduction project somewhere? This would be helpful so other people can test this on their own devices. This way, we can determine whether the issue is limited to certain SoCs or not.

Sherrylsherurd answered 19/4, 2023 at 1:8 Comment(0)
S
0

Performance is still poor on mobile devices with even simple 2D projects in v4.2.1.stable.official
EDIT: TileMaps and Parallax Layers seem to heavily drop fps so I've just removed some things and my fps is 60 FPS as expected.

Starshaped answered 20/12, 2023 at 20:45 Comment(0)
B
1

I think the core devs are planning a full rework for parallax iirc. It's probably just not high priority. You're much better off creating your own parallax implementation or using one from github in the meantime.

Bradford answered 20/12, 2023 at 21:15 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.