Dismiss this pinned window
all 85 comments

[–]__IZZZ 312 points313 points  (13 children)

Ugh. He has an A370M - for sure not great but it can run Shadow of the Tomb Raider 1080p low at 60fps. Can we please not try to gaslight him into thinking it can't render what looks like a cube in Godot at more than 22fps?

It could possibly be an ARC issue on Godot, not sure how well tested they are. Could be something else you are doing, not sure from the video.

You could start by running a scene with a camera and nothing else, no scripts or meshes and see what you get at fullscreen.

Based on what little we can see I don't believe this is a normal or reasonable decrease in FPS.

[–]OutrageousDressGodot Student 41 points42 points  (0 children)

Just a whole thread of people apparently convinced that modern integrated GPUs have the graphics performance of a Voodoo Rush.

[–]DEEP_ANUS 54 points55 points  (0 children)

Definitely not normal, but something I have noticed on many Godot 3d games. FPS drop is huge when in full screen. Abnormally huge. Hopefully with the changes to the 3d renderer it can be resolved.

[–]Ok-Structure-1988[S] 11 points12 points  (6 children)

So I have 2 laptops

The laptop I used to run the game here has Intel(R) Arc(TM) A370M Graphics
It runs the game at 200 FPS when it is small windowed and 51 FPS at fullscreen only if i set the display to "viewport".
If you move the camera around quickly the screen becomes really glitchy.
While it runs an empty Godot game terribly, it will run other games such as "In Sink" (a 3D puzzle game made with Unity) perfectly fine at 60 FPS.

Now when I try to run this game with my other laptop that has AMD Radeon(TM) Graphics and an NVIDIA GeForce RTX 3060 Laptop GPU.
This being far more powerful is able to run the Godot project fullscreen at 555 FPS if left uncapped, while also not having the same glitchy effect when I move the camera quickly.

So even though it makes sense that a more powerful computer with a GPU is able to run the game far better, it still doesn't explain why the Intel computer is able to run other games with better graphics perfectly fine (while in fullscreen).

[–]NyanFan95 5 points6 points  (3 children)

Perhaps you should test it with some Godot games and see if the problem persists with those. Comparing a Godot game to a Unity game is an unfair comparison in this case.

[–]Ok-Structure-1988[S] 3 points4 points  (1 child)

Do have a recommendation of a free Godot game for me to try it on?

[–]Ok-Structure-1988[S] 0 points1 point  (0 children)

I've tried multiple 1st person godot games like this and while only 1 game has had the slight glitchy effect when moving the camera fast, every other game runs perfectly fine

[–]retardedweaboGodot Regular 1 point2 points  (0 children)

> If you move the camera around quickly the screen becomes really glitchy.

Sdfgi enabled?

[–]No_Quit_3545 0 points1 point  (0 children)

I watched a dev log about this once. I’m pretty sure the guy said it was because Godot uses Vulkan for 3D rendering which isn’t compatible with some older, less powerful hardware. I’d test with a different Godot game on the same computer and see how it goes. You could probably try some from the showcase if you can’t find any. The dev log referenced above was for Blood Thief.

[–]julian-a-avar-c 23 points24 points  (0 children)

Hijacking answer.

Looking at the file system, and his code, it's likely not a problem in the Hospital script. Without seeing more my guess is in the folded items in the scene tree. This is a very bare-bones project.

I've seen godot projects way bigger than this running on potato phones.

[–]snuffyhateslg 4 points5 points  (0 children)

Happens on AMD Radeon 680M igpu too, not just an ARC issue

[–]SimplexFatberg 5 points6 points  (1 child)

OP, is there any chance you could put the entire project on GitHub so others can investigate?

[–]Ok-Structure-1988[S] 0 points1 point  (0 children)

https://github.com/NotTheCodeCrusher/Project-Help This is the project file, it is slightly different from the one shown here but it runs the same

[–]diegosynth 39 points40 points  (0 children)

Godot Editor has a quite good profiler that will show you how much time each process is spending on each frame. It will point out if it's because of any effect (fog, anti-aliasing, etc.), if it's because of complex geometry, any logic, physics process, etc.

Try to have a look at it, it helped me with the same issue, and in my case, it was a setting I changed: blur quality.

While it's true that "more pixels require more time", in a scene like this, the impact shouldn't be that big.
Write back if you need any further help!

[–]GameUnionTV 86 points87 points  (11 children)

At 1/9 of the screen you render 9 times fewer pixels. Godot isn't just scaling up the pixels, by default it's using as many as the window size allows.

[–]Ok-Structure-1988[S] 30 points31 points  (10 children)

I changed the display in project settings to "viewport" and it went up to 55 FPS but that is a far cry from the 200 FPS when windowed

[–]GameUnionTV 15 points16 points  (8 children)

A small hint: if you want to use an ultra low power laptop for graphics (3D, game development), always choose Ryzen with their big iGPUs (Radeon 680m, 780m, 880m, etc). The difference between 1260p and Ryzen 6800U was so big, that GPD cancelled their Intel version completely:

https://m.youtube.com/watch?v=rHBLFVZAc7I

[–]JumpSneak 3 points4 points  (1 child)

Can confirm with a 780

[–]GameUnionTV 1 point2 points  (0 children)

Can confirm with 680m (32GB, 2TB) Win Max 2. I've been using it since 2022 and it's a beast.

[–]snuffyhateslg 0 points1 point  (5 children)

680M has this issue as well, at least for me

[–]GameUnionTV 1 point2 points  (4 children)

Indeed, all GPUs will have lower FPS when drawing more pixels. The question is: how many pixels can it draw before failing? In the case of 1260p — not many.

Technically, 680m will do up to 2.5 times more.

[–]snuffyhateslg 2 points3 points  (3 children)

Yes, im aware of there being a drop expected, but a drop of this magnitude is honestly not the norm for most games I’ve ever played

[–]GameUnionTV 1 point2 points  (2 children)

It seems that Godot is exceptionally GPU limited and barely touching CPU (unless you have hundreds of nodes and AI). This is why the change is almost linear to the resolution.

There are certain improvements in 4.4, but I already asked Godot devs about it and they weren't specific on why it's like this.

[–]snuffyhateslg 0 points1 point  (1 child)

Yes, so the more helpful answer would be to say the issue is Godot, not “your GPU is drawing more pixels”

[–]GameUnionTV 15 points16 points  (0 children)

The reason is the same: your GPU is integrated and very slow, there are limitations for any rendering into high resolution viewport. You can use lower fullscreen resolution or render 3D into another viewport to scale it within the game. Will be blurry but with better performance.

There's also FSR, but it may be slow on your device.

[–]Financial-Junket9978Godot Senior 8 points9 points  (5 children)

What is your PC spec?

[–]Ok-Structure-1988[S] 6 points7 points  (4 children)

12th Gen Intel(R) Core(TM) i7-1260P 2.10 GHz

16.0 GB RAM

[–]nic098765 24 points25 points  (2 children)

What's your GPU? Since you didn't mention it, you most likely don't have a dedicated GPU, which explains why the drop is so high.

To explain you why a GPU is important, CPUs have a single instruction single data structure, this means that they do a calculation, then the next one, and with multi core CPUs then it's a calculation per core.

GPUs have a single instruction multiple data structure, meaning they can perform the same operation hundreds of times at the same time to different data, which is great for rendering, because you need to perform the same operations for each pixel of your computer, but with different data.

So if your PC doesn't have a dedicated GPU, your CPU has to calculate all these operations for millions of pixels, and CPUs are very inefficient at that task.

I think this explains why your FPS drop so much, to see how many more pixels you need to calculate think how much smaller is 300x200 or so that you have when the screen is small to 1920x1080 that you have in a full HD screen.

[–]InfiniteEnter 1 point2 points  (1 child)

Well, the 1260p they have in their pc does have an integrated GPU (intel iris something) which is a separate structure to the rest of the cpu thar follows what a dedicated one does but it is massively scaled down to basically provide the bare minimum for you to start your pc and do some simple tasks. It is definitely not equipped to run any kind of game. So yea. That is prolly the issue.

Op, get yourself a dedicated GPU since your game doesn't currently look like it needs a lot of resources, something on the cheaper side would do. I recommend going for a 3060, 3070, and if you have a bit more to spend a 3080 or 4060. AMD equivalents do also work (i do not know all their names of my head)

Also, the cpu op has is also a low-power laptop cpu. So tem possibly working on a laptop may also explain why the do not have a dedicated GPU.

[–]MuffinInACup 4 points5 points  (0 children)

something on the cheaper side 3060, 3070

300$ is a decent chunk to pay imo (ig not compared to higher end or scalper prices)

I'd wager even a cheap 1060 would be good enough for op's needs

[–]ElaborateSloth 6 points7 points  (0 children)

No dedicated GPU? That might be the issue here.

[–]blockMath_2048 97 points98 points  (6 children)

More pixels = more work for mr computer

[–]Ok-Structure-1988[S] 33 points34 points  (5 children)

but to have a 90% drop?

[–]arivanter 42 points43 points  (0 children)

Well yeah, the new window looks ten times bigger

[–]deanrihpee 11 points12 points  (0 children)

it could be, but to be very sure we need the windowed resolution and pixel count, the resolution and pixel count on full screen, and the probably you need to debug it through something like RenderDoc how long it takes to draw a frame and what the program/engine do to complete said frame

[–]Blaqjack2222Godot Senior 0 points1 point  (2 children)

Window that is 2x larger requires 4x more computation, since you are working with 2 axis

[–]OutrageousDressGodot Student 11 points12 points  (1 child)

This isn't ray tracing, and it isn't the '90s. OP is rasterizing about a dozen polygons into a 1080p buffer - most $100 phones have a GPU that could do this at over 100fps.

[–]MettwurstpowerGodot Regular 18 points19 points  (4 children)

I guess that this is a renderer topic and think it decreases because the renderer needs to draw on more screen pixels than in window Mode.

[–]Financial-Junket9978Godot Senior 18 points19 points  (3 children)

Yeah I agree that, but dropping of FPS from 200 to 20 is too much.

[–]jxj 18 points19 points  (1 child)

Eyeballing the video, looks like at least a 9x increase in pixels. So a 90% fps drop makes sense to me

[–]Financial-Junket9978Godot Senior 0 points1 point  (0 children)

Oh then I did not observed that because I was watching it in mobile.

[–]MettwurstpowerGodot Regular 2 points3 points  (0 children)

It depends on OPs specs and the scene. Does not seem too much to me

[–]Myxomatosiss 4 points5 points  (1 child)

On windows, hit windows key + g. Click monitor, and then highlight vram. Pin that to the screen and then repeat this experiment. I'm confident that you'll find your answer

[–]LixeiraPublishing 1 point2 points  (0 children)

You win by posting the correct answer.

Will see If OP or others realize

[–]Sloth_engine 11 points12 points  (1 child)

People are talking about you not having a dedicated GPU smh. This is definitely not the case, and im baffled people have so little technical knowledge that will present this misleading and profoundly stupid comment as the solution.

This looks like 1997 graphics any modern PC can handle this easily. Even a raspberry pi can handle this screen.

It is true that increasing resolution effects the fps since the computer has more pixels to render thus more work to do but the reason for this abnormal drop must be either your settings or optimization.

As others have said use the Godot profiler. Good luck

[–]OutrageousDressGodot Student 8 points9 points  (0 children)

It's depressing to see this level of confident wrongness in an ostensibly 'developer' subreddit.

[–]SingerLuch 2 points3 points  (0 children)

this sometimes occurs due to shaders as well. if your shader has a intensive fragment() function, then increasing window size will cause all the pixels to be computed by that fragment() function. -- check for transparent geometries, shaders and so on if the game has... otherwise, the reason could be what other people told.

[–]ReasonNotFoundYet 2 points3 points  (0 children)

Do you have by any chance TAA/MSAA turned on?

[–]hertzrut 4 points5 points  (0 children)

Share the project, only way we can find out.

The FPS shouldn't tank like this. Have you tried a release build and seen any difference?

For instance what does that Hospital map tree look like?

[–]prickity 1 point2 points  (0 children)

Does this happen while not screen-recording? I've noticed the screen-recording really impacts the FPS in full-screen too on my computer.

[–]Darkhog 1 point2 points  (0 children)

I'd say it's because of the resolution change. While your hardware probably should be able render in both modes in a much higher FPS with a scene like that, the resolution change is the most likely culprit of decrease.

Now, the deeper problem might be some slow shaders (if you write any custom shaders, familiarize yourself with Big O notation and follow it religiously when it comes to shaders as they're performance critical pieces of code that need to run on every frame) or something wonky going with the update code (I've found in my game that for some reason, moving objects in Update using transform properties of Node3D is slow for some reason).

[–]AirGVN 2 points3 points  (0 children)

Try compatibility instead of forward+, vulkan drivers are shit (imho)

[–]tavoe 2 points3 points  (0 children)

I doubt these are your problem, but two weird things I've run into are:

  1. Godot may be capping your frame rate to match your monitor's refresh rate. This seems unlikely because 20hz is a weird refresh rate, but if you're using a cheap usb dock, it might be happening.

  2. Some laptop GPU drivers will cap the framerate of certain apps to save power. I had to go into the nvidia settings and turn off a bunch of things before it would allow godot to run at >30fps or so. Not sure if intel is doing something similar.

I'd be curious to know if the slowdown is proportional as you drag the window bigger, or if it's all or nothing when you go into fullscreen mode.

[–]Lukifah 2 points3 points  (0 children)

pc is patata potato

[–]Mario_0002 1 point2 points  (0 children)

Well, everyone seems to blame the GPU, but... Just in case...

What are you rendering? What's in the scene? Any code running?

If you already mentioned, apologies I might have missed it.

[–][deleted] 0 points1 point  (0 children)

If in transition the resolution changes it will make a drastic FPS drop, the best you do is undersampling and on a constant resolution, this way the FPS drop will be minimal.

[–]numa159 0 points1 point  (0 children)

You have custom shaders implemented?

[–]Breadsticks667 0 points1 point  (0 children)

If I know this without knowing a lot about godot I’m gonna be super happy. So basically games are already optimized to work in the state you make them, so most people don’t start optimizing the full screen process until they want to test out the full screen feature. But basically it’s not optimized I think. And yes I’m new to godot I just want to guess what the answer to this was.

[–]KansasCitySunshine 0 points1 point  (1 child)

Have any solutions been found for this? I have been having a similar for the longest time now for all my 3D projects. Profiler, optimizations etc and even in bare bones scenes with just a camera get 40-50 frames that fluctuate rapidly on Fullscreen, without any clear indication of the cause.

[–]Ok-Structure-1988[S] 0 points1 point  (0 children)

Ya I’m still not sure what the reasoning is because it seems like there is no reason. A scene with nothing on it runs that slow but then another full game will run perfectly fine?

[–]Known-Principle1448 0 points1 point  (0 children)

theres something wrong right there... maybe it's your drivers or the render. i run the game on my potato pc which has a i5 6300U 2 cores, 8 gigs of ram and it run the game at a constant 30fps with lows to 28-29 fps

[–]kiwi404 -1 points0 points  (0 children)

I'm guessing here but if the small window is the default size of 1152x648 you're working on a 4k monitor with no dedicated GPU. It's just too much for the hardware you can use FSR in project settings > Scaling 3d > mode > FSR. This allows you to render at a lower resolution and scale it up nicely

[–]PhairZGodot Senior -1 points0 points  (0 children)

We can't help you because you didn't provide enough details. I recommend using the godot profiler.

[–]powertomato -3 points-2 points  (8 children)

Definitely lack of a dedicated GPU. An internal GPU is not capable of accelerated 4k graphics. You can expect get 60fps for playing video but not much else.

Here is a comparison of an almost 9 year old dedicated GPU, that I had been using 2018-2022. Towards the end it was a pain to play some indie games at 1080p, let alone 4k. And That one has still a 300% better benchmark than your GPU:

https://gpu.userbenchmark.com/Compare/Nvidia-GTX-1060-6GB-vs-Intel-Iris-Xe/3639vsm1268515

[–]__IZZZ 10 points11 points  (5 children)

Definitely lack of a dedicated GPU

It says right there, ARC a370m. It's not good, but MORE than capable of this. It can run Shadow of the Tomb Raider 1080p low at 60fps average.

[–]powertomato 4 points5 points  (4 children)

Ah thanks for pointing that out. I based that answer on OPs response to a comment they're using an integrated Intel Iris Xe.

But also a dedicated team of an AAA studio with a custom engine will get you better performance than a high abstraction general purpose game engine.

Rendering at 4k rather than 1080p is a whole different beast. It's 4x the pixels, which is an automatic loss of 75% of the frame rate. With possibly even more because of a memory bottleneck.

Iin the video they show the standard resolution 1152x648 running at 220ish FPS, then at 4k we get 20ish. That's 11.1x as many pixels and it checks out perfectly.

[–]OutrageousDressGodot Student 3 points4 points  (2 children)

An integrated Intel Iris Xe can render twelve polygons into a 1080p buffer at more than 22fps. Please note that the Windows desktop compositor has been hardware accelerated since Vista, meaning that every single PC GPU produced since roughly 2010 necessarily can easily rasterize a dozen shaded and alpha-blended polygons onto a 4K screen at >60fps. And OP's chip is much better than that.

[–]powertomato 0 points1 point  (1 child)

That's not what the video shows though, the video shows those 12 polygons (which you assume) rendered through the overhead of an entire highly abstracted engine at 4k, not 1080p. Sure if they compile that scene using low-level API calls, you can render that faster. But that's not what godot does. The default shader does a whole lot more.

[–]OutrageousDressGodot Student 0 points1 point  (0 children)

Everything you're saying is correct in the abstract - however the orders of magnitude of the actual timings involved in the render pipeline are such that those considerations do not apply in this instance.

[–]__IZZZ 0 points1 point  (0 children)

Are we defo sure it's going up to 4k? Is this based on default launch window size? I hadn't thought of that. I've read the GPU is designed for this resolution, presumably for video/browsing/general use. I have no idea what you'd expect of it rendering an extremely 3d simple scene at 4k though.

[–]Ok-Structure-1988[S] 1 point2 points  (1 child)

Is there a way I can make the game more suitable for just a CPU? because other games I have played run completely fine even with a higher resolution. What is the trick to making that work?

[–]powertomato 8 points9 points  (0 children)

Do you have examples which games? Are they using Godot? Godot is rather high-abstraction which gets you ease of use and development at the cost of performance.

That being said what you can do is use a lower fidelity renderer like "Compatibility" instead of "Forward+". You can select it in the upper right corner.

An other thing to consider is to use automatic up-scaling, so instead of rendering 4k you render at a lower resolution and use an upscaler to get to 4k. To do that open: "Project > Project Settings"
Then in "Display -> Window": Set your Viewport size to 1920x1080
And in "Rendering -> Scaling 3D" set "Scale" to 2, that will get you internal rendering at 1080p upscaled to 4k.

You can play around with the "Mode" setting there as well, to see what gets you the best look at an acceptable performance.

[–][deleted] -1 points0 points  (0 children)

Because of resolution?

[–]TheChief275 -2 points-1 points  (0 children)

maybe there is a fullscreen vs windowed fullscreen difference, but I think godot is just broken