godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
90.6k stars 21.1k forks source link

slowdown with multiple objects while, other engine remain stable if they are not selected in 3d #73411

Open Saul2022 opened 1 year ago

Saul2022 commented 1 year ago

Godot version

godot 4 Rc2

System information

Windows 11 Vulkan Amd Integrated graphics card TM driver: vega 3 8GB Ram

Issue description

It happens that godot is rendering everything or most of it while other engines like unity or unreal keeps it stable till you try moving it, at that point the fps are much slower, while in godot they don't see that big falldown. Note that this is with the default sethings, except unreal where it had to be low sethings

Fmv9Yu8XkAApigM

FmwGm9yXkAEhZkd

as you can see while godot has bad fps, unreal is hanging just more or less well, i doubt that nanite is doing something, because it an IGPU and the ssd is not good,

And when i try to move for example 1k of that spheres godot fps remain more or less the same while unreal fps suddenly drops.

And with unity the fps are 40-30 till you move them too, (i will do some screenshot or video on weekend, i can't use the pc rn. ).

Maybe as @RandomShaper said on twitter it could be some gui feature where it makes the meshes inactive or something like that, or rendering batching.

Steps to reproduce

1 Open the MRP

2 Select as many objects till the fps are slow

3 Try moving them

Minimal reproduction project

https://github.com/Saul2022/godot_unoficial_perfomance_test/tree/main/Nuevo%20Proyecto%20de%20Juego2

Saul2022 commented 1 year ago

it my first issue, so sorry if it not good quality.

clayjohn commented 1 year ago

Is the bug just that performance is 2X slower than Unreal in this case?

Calinou commented 1 year ago

The Forward Mobile rendering method is expected to be slower when rendering lots of objects compared to Forward+.

In general, Godot does not distinguish between static and dynamic geometry for culling or shadow rendering. This could be done in the future but it'll require additional setup on the users' end, as the engine cannot guess whether an object will be moved at some point during gameplay. See also https://github.com/godotengine/godot-proposals/issues/4635.

Saul2022 commented 1 year ago

Is the bug just that performance is 2X slower than Unreal in this case?

It more that when nothing is selected godot performs way worst than other engine like unity or unreal.

Saul2022 commented 1 year ago

The Forward Mobile rendering method is expected to be slower when rendering lots of objects compared to Forward+.

well forward+ is kind of the same case

7BC19B35-5AD6-4E90-BBEC-66717BB0CDF4

In general, Godot does not distinguish between static and dynamic geometry for culling or shadow rendering. This could be done in the future but it'll require additional setup on the users' end, as the engine cannot guess whether an object will be moved at some point during gameplay. See also godotengine/godot-proposals#4635.

Prob might be the issue, although not sure if it has or not as unreal or unity does that by default.

Saul2022 commented 1 year ago

Update: Not sure if this may be the issue of this going on https://godotengine.org/article/godot-40-optimization-progress-report/ it may be as it not optimized, but i don't know if it is or not

Screenshot_2023-02-17-08-48-24-42_40deb401b9ffe8e1df2f1cc5ba480b12

Maybe the BVH couldn't be updated.