I’m trying to find the performance bottleneck in my project. It seems like there is a problem with the graphics (GPU). I tried running the profiler to identify the problem but it didn’t make me any more wise. It doesn’t make sense that the graphics are the bottleneck since I have only a few mannequin’s and some cubes in my scenes.
I tried disabling everything in my scene (like lights, postprocessvolume, navmeshboundsvolume etc…) one by one but the ms for GPU stays the same.
I found something in the profiler that takes a lot of ms, but I have no clue what this means. It’s the Renderthread -> SlateDrawWindowsCommand -> Present Time -> RenderQuery Result (see screenshot)
I’m assuming that it’s your ui widgets. Check your code in them and make sure there aren’t variables/arrays exploding to infinity or something. That and make sure you don’t have 1000000 complex tasks running on tick. Always try to minimize the amount of work that widgets have to perform. Instead of something running on tick, set it to only update 5 or 10 times per second; especially when you have a lot of individual icons that are doing checks constant checks. Try to make things more event driven. If the icon’s cooldown is cleared, then make it stop trying to update the icon until the ability is on cooldown again.
thanks for the response but i don’t think that’s the problem. I’m only setting the icons in beginplay and only updating them whenever I use drag and drop. Don’t think i’m doing anything in tick for those. Also when I disable my entire HUD that contains all the UMG widgets except for a few labels like item labels and health bars above enemies heads, it doesn’t improve performance. And the labels stuff isn’t active when i just start the game, so that also can’t be the problem.
Draw and Game are running smooth, I assumed Draw is for UMG/UI stuff, Game is for CPU and blueprint code and GPU is for graphics stuff.
I also found something now about PostProcessing stuff that was taking a lot of ms, maybe it has something to do with postprocess stuff like rendering outlines around characters and interactable props. But I disabled PostProcessVolume entirely and it didn’t do anything about performance.
Is there anyone who knows what the “RenderQuery Results” in the profiler exactly means?
Well then the next question is are you running on a pc/laptop that has a dual card setup(integrated+discrete)? Like I know this laptop has issues and I have to manually right click the editor shortcut and run it with my nvidia gpu, even though it’s set to run with it in the nvidia settings, or else it will try to run with the intel hd graphics card.
I’m running on a 4 year old desktop PC. The GPU is a NVIDIA GeForce GT 620 1GB VRAM. Might be a bit hard to get good results, but still, running at 60 ms for the GPU is a bit to slow to my taste. I’ve also had a client of mine who bought the project say that he is also still experiencing performance issues. And he has a new high end pc with good graphics card.
On my better laptop the game has been running at 45 FPS since my last performance update that had to do with blueprint code/CPU, but now the bottleneck seems to be in the GPU/Graphics section
Sadly my better laptop is broken atm and can’t test on it as it automatically shuts itself down when trying to run UE
I’ve asked my client to do a little test, to see what his Frame/Game/Draw/GPU stats are. I’m waiting now for him to come online on skype. But if it appears that for him the GPU also is the slowest ms, then there’s definitly a problem with the GPU.
But anyway, i’m taking your advice and checking now if my icons for skills and inventory are doing anything in tick.
Because the now I see that the “RenderQuery Results” in the profiler is under the section SlateDrawWindowsCommand. So it might have something to do with Slate/UMG after all.
I do a lot of testing on this laptop and it only has a 540m in it. You’d be surprised how much it can handle and still get half decent fps(usually only work in 720p on here though). Try setting your engine scalability down to low and see if the problem persists. Also, in the standalone client, you’d need to edit it’s INI files to default to a different gfx level as well or you could just open the console and type “sg.” for the various commands like sg.EffectsQuality 0 for low. You’ll see them all in the list of things that start with sg.
I took out the entire HUD from the controller and the problem persists. Only item labels are rendered outside of the HUD so I might have to look at those
Also on Low engine scalability settings the problem persists, it’s a bit better but still not running smooth, it goes from 15-20 FPS to 28-30 FPS. And the ms for GPU goes from 60 ms to 33 ms
But still, Game runs at 20 ms and GPU at 33 ms, so GPU is still the bottleneck.
I found in the profiler that World Tick and Tick events take about 5ms each. which is what I’d expect, so running too much tick events doesn’t seem to be the problem. It’s the RenderQuery Results that makes the ms skyrocket.
I’m gonna do another profiler check running at low engine scalability setting, maybe it reveals something else. Because at medium setting my GPU obviously can’t handle it completely and the results might be inaccurate.
Ahh I see. Yeah it’s definitely starting to sound like an issue with that laptop then. You might want to open your task manager>go to performance>click resource monitor and watch the CPU page of it. Maybe there is something else eating up your CPU.