Unreal optimization

Finding the performance bottleneck (CPU vs GPU)

To properly test performance:

  • disable vsync (r.vsync 0)
  • and frame limiter (t.MaxFPS 0)
  • disable smooth framerate (Project > Engine > General Settings, disabled by default)

Unit stat

To turn on unit stat, click the three lines (top left corner three lines -> show stats)

When looking at the unit stat, the frame is total time of frame. But look at the next ones. The biggest number will hint that this is the bottleneck. In case of this screenshot, the bottlenect might be the game thread: CPU.

UnitGraph

There is a nice timing graph in unreal (bottom left of the corner):

To change the budget, use console command: “t.TargetFrameTimeThreshold <milliseconds>” and “t.UnacceptableFrameTimeThreshold <milliseconds>”

Here’s how to enable it:

Unreal insights

For finding bottlenecks, look for CPU wait for tasks and in GPU gaps. Those will tell you how much this specific hardware is waiting.

It’s not clearly visible here, but the game thread calculates a frame and in the next frame the rendering thread is rendering. So on the screen you see a frame that is already one frame old.

Useful things to do when profiling:

  • test GPU load – change screen resolution (r.screenpercentage 10)
  • test CPU load – pause the game (pause)
  • add more information to the profiling session: console command: “stat namedevents”
a console command “trace.screenshot <name>” can be used to create a screenshot bookmark in insights

There is a benchmark launch arguments to run a benchmark level right from windows

https://dev.epicgames.com/documentation/en-us/unreal-engine/unreal-engine-command-line-arguments-reference

Improving performance

Significance Manager is a tool to work on level of detail of actors.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *