Creating a custom window with behind black transparent/opacity/blurred background to block input causing FPS Drop

Godot Version

Godot 4.1.1

Question

So, i made a custom window (Reason because using the prebuild window on godot caused fps drop a lot, maybe because it’s creating a separate viewport, hence laggy), but as all we know a window will not be complete without that black transparent background to make it feels like focus switched to that window.

But just putting a transparent background (about 2k x 2k px resolution) behind the window content using panel or just image texture or color rect caused the fps drop from 220 to 161 ish. Without transparency/opacity on color rect, it still drop to 180 fps. It really seems like using a big texture/ a lot of it will cause significant frame drop.

For Background, i also have tried using shader to blur a piece of a color rect node by taking screen_texture and apply the blur. Also as expected, just by taking the screen_texture will also caused fps drop.

Is this a bug? or there is a way to work around it?

For pc, the game work kind of fine, no noticeable super lag, but for android phone, especially the old ones, the fps will drop for sure.

Can you take a screenshot of the window and upload it here if possible?

Also, what graphics card model are you using? Are you on a laptop with hybrid graphics? Which rendering method are you using in the project?

I will provide more information of the pc i’m using once i got to the pc in the office im working at.
It’s a PC, but i don’t remember the graphic card model.

The rendering method should be compatibility mode (setting it via project settings), but It’s “mobile” on top right, because switching it to compatibility mode caused the textures on editor became all gray. Also, i much more care about android/mobile platform due to it being fps drop sensitive. hence why it’s in “mobile” rendering mode, making it easier to just export to android to test.

As for the custom window screenshot, will also need to wait until i got back to the office. Also, idk if i’m allowed to leak what we are working in the office, i might just change textures of it later.

graphic card model
image

no window about 220~fps:

window open but no content (only colorRect with transparent black bg 2k x 2k pixel) about 150fps:

the custom window’s (option window) scene tree:
image

window no content with blurring using shader, about 140 fps:

The ColorRect is likely causing you to be more fillrate-bound than you previously were. Vega 8 are integrated graphics, so their memory bandwidth is pretty limited compared to a dedicated GPU.

If you resize the window to a very small size and notice FPS going up, it’s because you’re fillrate-bound or shader-bound (as opposed to draw call-bound).

I suggest going through the GPU optimization documentation.

1 Like