If you are hunting down frame time spikes in games and your title runs on Unreal Engine 5, the symptom usually tells a very specific story. Unlike older engines where a spike often meant a single expensive draw call, UE5 spikes typically trace back to shader compilation at runtime, Nanite geometry streaming bursts, Lumen global illumination recalculations, or Virtual Shadow Map page faults. You will see a healthy 60 FPS average, but the 1% low craters to single digits every few seconds, producing a stutter that feels unrelated to your GPU clock speeds.
- Likely Causes
- Fix 1: Verify the Shader Cache Is Intact
- Fix 2: Switch from DirectX 12 to DirectX 11
- Fix 3: Reduce Nanite Streaming Pool Budget
- Fix 4: Lower Lumen Quality or Switch to Screen-Space GI
- Fix 5: Disable Virtual Shadow Maps
- Fix 6: Move the Game to a Faster Storage Volume
- Fix 7: Disable Windows Game Bar and Third-Party Overlays
- Fix 8: Update or Roll Back the Graphics Driver
- If Nothing Works
- FAQ
On NVIDIA hardware the pattern often correlates with the driver’s shader cache missing entries after a game update. On AMD hardware the same pattern shows up as PSO cache bloat in C:\Users\[name]\AppData\Local\[GameName]\Saved. Understanding which mechanism is firing matters because the fixes diverge quickly.
Likely Causes
| Cause | How to confirm | Fix difficulty |
|---|---|---|
| Runtime shader compilation (PSO cache miss) | Spikes cluster on first encounter of new areas or after a game patch; stat unit shows render thread stalling |
Low |
| Nanite streaming hitches | Spikes coincide with camera movement through dense foliage or architectural interiors; stat gpu shows high “Nanite Streaming” time |
Medium |
| Lumen GI recalculation bursts | Spikes happen when opening doors, lighting torches, or entering rooms with large windows; frame capture shows “Lumen” pass consuming >8 ms | Medium |
| Virtual Shadow Map page faults | Consistent 30-80 ms spikes when rotating the camera toward sunlit areas; stat shadow shows high “VSM Page Cache” misses |
Medium |
| DirectX 12 driver overhead / PSO serialization | Spikes on multi-core AMD CPUs or older NVIDIA cards; DX11 mode eliminates them entirely | Low |
| Disk read saturation (asset streaming) | Windows Resource Monitor shows 100% active time on the drive during spikes; spikes follow loading screens into open areas | High |
| Windows Game Bar / Overlay interference | Disabling overlays in the Epic Games Launcher and Windows Settings removes the pattern | Low |
Fix 1: Verify the Shader Cache Is Intact
How to check
Open NVIDIA Control Panel, go to Manage 3D Settings, and confirm “Shader Cache Size” is set to “Unlimited” or at least 10 GB. For AMD, check that “Shader Cache” is enabled in Adrenalin under Graphics > Advanced. Then inspect the folder %LOCALAPPDATA%\[GameName]\Saved\ShaderCache and confirm files have recent timestamps matching your last play session.
What to do
Delete the ShaderCache folder contents, launch the game, and let it recompile in a controlled fashion: load into a new game, spend ten minutes walking through an area you already know, then save and quit. This pre-populates the cache before you hit live content.
How to undo it
Nothing permanent was changed. If the spikes return, the cache simply was not the bottleneck and you can restore your previous Shader Cache Size setting.
Fix 2: Switch from DirectX 12 to DirectX 11
How to check
In the Epic Games Launcher, click the three dots next to the game name, select “Launch Options,” and check whether -d3d11 is present. If not, the game is defaulting to DX12.
What to do
Add -d3d11 to the launch options field. Restart the game. DX11 skips the PSO serialization pipeline entirely, which eliminates compilation hitches on systems with older CPU microcode. You may lose some advanced features like mesh shaders, so verify your game’s feature set still works.
How to undo it
Remove -d3d11 from the launch options and relaunch.
Fix 3: Reduce Nanite Streaming Pool Budget
How to check
Open the in-game console (tilde key by default in most UE5 builds, enabled via the launcher option -console). Type r.Nanite.Streaming.NumConcurrentUploads and note the value. The default is often 4-8. Now watch frame time during camera strafes through dense environments.
What to do
In ConsoleVariables.ini (found at [GameInstallFolder]\Engine\Config\ConsoleVariables.ini), add the line r.Nanite.Streaming.NumConcurrentUploads=2 and r.Nanite.Streaming.LimitPoolSizeToVRAM=1. This throttles how many Nanite geometry batches the streaming system pushes per frame, trading a small amount of initial pop-in for smoother delivery.
How to undo it
Delete the two lines you added from ConsoleVariables.ini. The file is plain text and does not auto-modify.
Fix 4: Lower Lumen Quality or Switch to Screen-Space GI
How to check
Open frame capture in RenderDoc or the in-game stat gpu overlay. If the Lumen pass consistently exceeds 6 ms, it is your spike source.
What to do
In the game’s Video Settings, set Global Illumination to “Medium” or switch from “Lumen” to “Screen Space” if the option exists. If the settings UI does not expose this toggle, edit [GameInstallFolder]\[ProjectName]\Config\DefaultEngine.ini and change r.DynamicGI=1 to r.DynamicGI=0. You lose dynamic light bounce but gain several milliseconds of headroom.
How to undo it
Reset the setting to its original value in the ini file or through the settings menu.
Fix 5: Disable Virtual Shadow Maps
How to check
Type r.Shadow.Virtual.Enable in the console. A value of 1 means VSMs are active. Observe whether spikes correlate with camera yaw rotations toward bright surfaces.
What to do
Add r.Shadow.Virtual.Enable=0 to ConsoleVariables.ini. This falls back to traditional CSM shadow rendering, which is more CPU expensive per frame but eliminates the page-cache faults that produce single-frame spikes. If CPU becomes the new bottleneck, reduce Shadow Quality by one tier to compensate.
How to undo it
Remove the line or set the value back to 1.
Fix 6: Move the Game to a Faster Storage Volume
How to check
Open Windows Resource Monitor, go to the Disk tab, and play for two minutes. If total disk activity spikes above 400 MB/s or the queue length exceeds 4 during your stutter events, asset streaming is saturating your storage controller.
What to do
Relocate the game folder to a Gen4 NVMe drive with at least 2 GB/s sustained sequential read. In the Epic Games Launcher, use “Manage Install” and “Move” rather than reinstalling. Ensure the drive is formatted NTFS and that the Windows paging file is not on the same volume.
How to undo it
Use the same Move option to transfer the installation back to its original drive.
Fix 7: Disable Windows Game Bar and Third-Party Overlays
How to check
Open Settings > Gaming > Xbox Game Bar and toggle it off. Then disable the Epic Online Services overlay in the launcher under Settings > “Epic Online Services.” Test frame times with all overlays disabled.
What to do
If spikes vanish, re-enable overlays one at a time to isolate the culprit. The Epic Online Services overlay is the most common offender because it injects a D3D hook that serializes draw calls during its own composition pass.
How to undo it
Re-enable the toggles in their respective settings panels.
Fix 8: Update or Roll Back the Graphics Driver
How to check
Note your current driver version. Search NVIDIA’s or AMD’s release notes for mentions of shader compilation fixes or PSO changes relevant to UE5 titles. If your driver is older than 30 days, an update may help. If the problem appeared after a recent update, a rollback may be faster.
What to do
For NVIDIA, use DDU in Safe Mode to clean the old driver, then install the newest Game Ready driver. For AMD, uninstall via the Adrenalin suite and install the latest WHQL build. Enable “Shader Cache” during the clean install if the option appears.
How to undo it
Repeat the DDU or uninstall process and install your previous driver version, which you can still download from the manufacturer’s archive page.
If Nothing Works
At this point the spike pattern is likely baked into the game’s shipping configuration. Check the developer’s known-issues page for engine-level patches. UE5.3 and 5.4 introduced streaming pool recalculation changes that some studios have not yet adopted. If the game ships with a modding framework, the community PSO warmer tool (often found on the game’s Nexus Mods or Mod.io page) can pre-generate cache entries that the shipping build misses. As a last resort, cap your frame rate two FPS below your observed stutter threshold using the launcher option -fpslimit=[value], which gives the GPU headroom to absorb spikes without violating your display’s scanout window.
FAQ
Do frame time spikes mean my hardware is failing?
Virtually never. Spikes indicate a software scheduling mismatch between asset delivery and frame composition. A failing GPU or SSD produces artifacts, crashes, or sustained low performance rather than periodic single-frame anomalies.
Will a 2026 hardware upgrade eliminate these spikes?
If the root cause is PSO serialization or Nanite streaming budget, a faster CPU or drive helps but does not resolve the underlying engine behavior. The spike pattern may soften into a micro-stutter that is harder to perceive, but the engine still allocates the same work.
Is there a difference between spikes and frame drops?
A spike is a single frame consuming 2-5x your average frame time, followed by an immediate recovery. A frame drop means sustained time above budget across multiple consecutive frames. Spikes point to one-time costs like compilation or allocation; drops point to sustained load exceeding hardware capacity.
Can I fix spikes without editing config files?
Yes, for the most common causes. Disabling overlays, switching to DX11 via launch options, and pre-warming the shader cache through a controlled play session resolve the pattern for a large share of reports without touching a single ini file.