How do I profile the GPU properly?

Hello,

I was wondering if anyone might know some next steps I can take on pinpointing my GPU issue.

My problem is when I look at certain places in the my game in VR Mode, shipping exe, development exe, etc, my FPS drops from 90 to 45, sometimes even lower. I’ve been trying to figure out what could be causing this, so I’ve tried many different ways to combat the problem through trial and error, like removing all the lights, and this problem still occurs. I know this is GPU based because when I use the console command “stat unit” my stats are all stable with my GPU at 11 ms, and then when I look at the problem areas, this load increases to 22 ms. I have tried using “stat startfile” and “stat stopfile”, opening that up in UE4’s “Session Frontend” profiling tool and looking for problems. CPU seems fine with Tick being the biggest contender and nothing out of the ordinary. When recording, I see this increase from 11 ms to 22 ms and can replicate it, but the “Session Frontend” profiling tool doesn’t seem to show any spikes in the GPU.

I further explored to find out if object draw occlusion was occurring or not with “r.visualizeOccludedPrimitives” and I found that most objects were indeed not being drawn so this is not the issue.

Using r.ScreenPercentage, I saw a measurable performance change, which means I am bound by something pixel related I’m fairly certain.

I took a snapshot of the game’s GPU (with “ctrl + shift + ,”) right when I peaked at 22 ms in the GPU but what it provided added up to 9 ms, which is not the 22 ms I was seeing with “stat unit” and nothing seemed out of the ordinary in this snap shot.

I’m open to any ideas. My current setup:

  • UE Engine: 4.15.0 VR Works

  • HMD: Oculus Rift

  • Online Platform: Steam.

  • Graphics card tested: 1080, 1060, 970, Titan X, R390, etc

Thanks,

I believe this is what you are looking for:

The GPU profiler helps figure out where your rendering time is going and then you can use that information to try to optimize the areas that will give the largest gain first. I have been trying to optimize my game where there is an entire 20km world visible all at once, and I have found it helpful to enable/disable certain rendering features to see how they affect performance, so I have a UMG window with checkboxes where I can turn rendering features on and off to see the FPS change. In the game I am working on we have fully dynamic lighting so shadows are our biggest cost and playing around with the distant field shadows and cascading shadows give us the largest fps increase (15 to 20). I was able to find that shadows were our largest cost using the GPU profiler I linked above.