Hi everyone!
I keep running into hitches in my project packaged in Unreal Engine 5.8.3 while in true fullscreen mode (even in a clean Third Person Template project).
PC specs:
Processor: 13th Gen Intel(R) Core™ i9-13900K 3.00 GHz
Installed RAM: 128 GB (128 GB usable)
Storage: 954 GB SSD ADATA SU800, 894 GB SSD ADATA SU650, 894 GB SSD KINGSTON SA400S37960G, 1.86 TB SSD XPG GAMMIX S11 Pro, 894 GB SSD ADATA SU650
Graphics Card: NVIDIA GeForce RTX 4090 (24 GB), Intel(R) UHD Graphics 770 (128 MB)
Windows 10
3 monitors at 75Hz (I only tested the game on one of them)
Things I tested that didn’t work:
r.D3D12.UseAllowTearing=1
r.D3D12.PresentOnSubmissionThread=1
t.MaxFPS=72
rhi.SyncSlackMS=0
r.FullScreenMode=2
r.AllowOcclusionQueries=0
r.HZBOcclusion=1
r.ParallelInitViews=0
r.PostProcessing.AsyncBlur=0
r.PostProcessing.PreferCompute=0
r.TextureStreaming=0
r.GTSyncType=0
rhi.SyncSlackMS=0
Nvidia Control Panel:
Vsync - Fast
Max frame time: 75
Disable fullscreen optimizations
Note: These spikes/hitches occur even when I’m just standing still.
Name Count Incl Excl
GPU 446 0.4781108 0.1921744
Frame - %d 4 0.1921732 0.0003041
RenderGraphExecute- %s 8 0.1071871 0.0845249
EndDrawingViewport 2 0.0825404 0.0825404
SceneRender- %s 4 0.025416 0.0020574
Scene 4 0.0222702 0.0014257
PostProcessing 4 0.003587 0.0003837
TemporalSuperResolution(sg.AntiAliasingQuality=%d%s) %dx%d → %dx%d 4 0.0028324 0.0028324
DiffuseIndirectAndAO 2 0.0026971 0.0000152
PrepareImageBasedVRS 2 0.002473 0.0000103
ContrastAdaptiveShading 2 0.0024627 0.0024627
LumenScreenProbeGather 2 0.0022897 0.0013672
Nanite::DrawGeometry 6 0.0020103 0.0002268
ShadowDepths 2 0.0017357 0.0000081
LumenSceneLighting%s 2 0.0012442 0.0000093
Name Count Incl Excl
CPU 7889 1.4844701 0.4517807
Frame - %d 258 0.2137272 0.0008016
RHI_Translate 152 0.1113073 0.0003951
FEngineLoop::Tick 1 0.0961694 0
Frame 1 0.0961694 0.0000264
IDXGIOutput::WaitForVBlank_NoBusyWait 2 0.0961686 0.0961686
Sync_RenderingThread 1 0.0931653 0.0000094
GameThreadWaitForTask 1 0.093152 0.093152
WaitForTasks 40 0.0900343 0.0900343
EndDrawingViewport 5 0.0898506 0.0000541
End_Rendering 1 0.0897888 0.0000388
D3D12_Present 1 0.0896004 0.0896004
ExecuteForegroundTask 526 0.0527773 0.0035186
SceneRender- %s 244 0.0354017 0.0002509
Scene 218 0.0308622 0.0012792
RenderGraphExecute- %s 212 0.0297069 0.0010773
ParallelFor Task 43 0.010046 0.0100435
Nanite::DrawGeometry 66 0.007166 0.0004593
TaskWorkerIsLookingForWork 392 0.0070463 0.0070463
ParallelExecute (Async) 88 0.0058221 0.0000729
ShadowDepths 34 0.0055375 0.0000486
FDeferredShadingSceneRenderer_Render 1 0.0053553 0.0001736
RenderVirtualShadowMaps - (Nanite) 31 0.0041127 0.0001618
DiffuseIndirectAndAO 22 0.0041008 0.0002027
SubmissionQueue_Process 56 0.0036219 0.0006025
RenderDeferredLighting 14 0.0032011 0.0000259
LumenScreenProbeGather 11 0.0030581 0.0016904
MainPass 29 0.0028976 0.0019284
PostPass 26 0.0028683 0.0019536
Nanite::VisBuffer 32 0.0028439 0.0000668
Tick_Engine 1 0.002537 0.0000684
FD3D12Queue::ExecuteCommandLists 88 0.0024783 0.0024783
InterruptQueue_Process 160 0.0023127 0.0018364
UWorld_Tick 1 0.0020994 0.0001657
ParallelDraw - (Index: %d, Num: %d) 27 0.0019996 0.0019996
PostProcessing 8 0.0017181 0.0003035
LumenSceneLighting%s 7 0.001675 0.0000118
ParallelFor 19 0.001673 0.0001445
BasePass 21 0.0016551 0.0000975
DirectLighting 8 0.0015137 0.0001627
RHI_CloseChain 97 0.0014931 0.0014906
TickCompletionEvents 7 0.0014533 0.0000041
ProcessUntilTasksComplete 7 0.0014492 0.000227
CharacterMesh0 4 0.0014397 0.000708
FDeferredShadingSceneRenderer_BeginUpdateLumenSceneTasks 1 0.0013619 0.0000934
FRDGBuilder::CollectResources 4 0.00129 0.0002662
FTaskBase::WaitImpl_StateChangeEvent_WaitFor 10 0.001249 0.001249
FAudioRenderScheduler::RenderBlock 5 0.0012386 0.0000244
SubsurfaceScattering - (ViewId=%d) 4 0.0012189 0.0000654
SubsurfaceScattering 4 0.0011535 0.0011453
UpdateWorldRadianceCaches 7 0.0011192 0.0011172
LumenSceneUpdate: - %u card captures %.3fM texels 7 0.001087 0.0001965
LumenReflections 11 0.0010554 0.0010518
FRDGBuilder::AllocateTransientResources 4 0.0010006 0.0010006
ChenDong
(ChenDong)
October 6, 2026, 10:45am
3
Your CPU profile already shows the hitch is not a game-thread spike. IDXGIOutput::WaitForVBlank_NoBusyWait is about 96 ms of the 148 ms CPU frame, and D3D12_Present is almost the same. That is the swap chain waiting on a vblank while the GPU is idle, which is what you get when the game is fullscreen on a display that is not the one the engine is presenting to, or when the frame rate and the monitor are fighting.
You are on Windows 10 with three monitors at 75 Hz and you only tested on one of them. Try r.D3D12.AllowFullscreenMode=1 and r.D3D12.AllowTearing=1 together, and also r.D3D12.UseAllowTearing=1 which you already tried alone. Without both fullscreen mode and tearing, Present still waits for vblank even if the game is rendering faster than 75 fps. In the NVIDIA control panel, set the game to the specific monitor (not “auto-select”), and set VSync to off for that monitor, not Fast. Fast vsync still inserts a wait when the engine presents on the wrong output.
Also set r.VSync=0 and rhi.SyncSlackMS=0, and make sure the packaged game is not using the editor’s windowed mode. In Project Settings, Engine > General Settings, set Default Window Mode to Fullscreen and Default Window Width/Height to the resolution you actually want, so it does not fullscreen onto a different display. If the hitch disappears when you run the packaged build with only one monitor enabled, it is the multi-monitor present path, not Lumen or Nanite. The GPU numbers in that same capture are under 0.5 ms on the GPU and 1.5 ms on the CPU, so those console variables that zero out streaming and occlusion are not the cause of these spikes.
1 Like
Thank you for your reply!
Vsync is already disabled in both Unreal Engine and the Nvidia Control Panel.
I tested the commands you suggested, but the result is the same.
Also, these settings do not exist here: Project Settings, Engine > General Settings, set Default Window Mode to Fullscreen and Default Window Width/Height.
I tested with a single monitor (I disconnected the other two), but the result was the same.
Name Count Incl Excl
GPU 380 0.446499 0.1801459
Frame - %d 5 0.180143 0.000666
RenderGraphExecute- %s 7 0.1007429 0.0801186
EndDrawingViewport 1 0.0772779 0.0772779
SceneRender- %s 5 0.0224169 0.0013832
Scene 4 0.0203211 0.0010234
PostProcessing 4 0.0041226 0.0004035
TemporalSuperResolution(sg.AntiAliasingQuality=%d%s) %dx%d → %dx%d 4 0.003328 0.003328
DiffuseIndirectAndAO 2 0.0026655 0.0000164
LumenScreenProbeGather 2 0.0022651 0.0012012
ShadowDepths 2 0.0019599 0.0000226
Nanite::DrawGeometry 4 0.001625 0.0001499
LumenSceneLighting%s 2 0.0013774 0.0000062
RayTracingDynamicGeometry 4 0.001167 0.000012
RenderVirtualShadowMaps - (Nanite) 2 0.0010895 0.0000471
PrepareImageBasedVRS 1 0.0010874 0.0000081
ContrastAdaptiveShading 1 0.0010793 0.0010793
RayTracingDynamicGeometryUpdate 4 0.0010368 0.0010368
Name Count Incl Excl
CPU 9318 2.3175737 0.5958258
Frame - %d 282 0.2008611 0.0007478
WaitForTasks 51 0.1676145 0.1676145
ExecuteForegroundTask 482 0.1353276 0.00305
SceneRender- %s 264 0.1168051 0.0003435
Scene 223 0.1127188 0.0011476
RenderGraphExecute- %s 231 0.1108519 0.0011488
RHI_Translate 229 0.1085176 0.0007064
FEngineLoop::Tick 2 0.0901701 0.0000042
IDXGIOutput::WaitForVBlank_NoBusyWait 3 0.0901682 0.0901682
Frame 2 0.0901647 0.0000452
SubmissionQueue_Process 23 0.0890288 0.0011016
Present_SubmissionThread 2 0.0821799 0.0000193
D3D12_Present 2 0.0821606 0.0821606
PostProcessing 8 0.0816818 0.00028
FTaskBase::WaitImpl_StateChangeEvent_WaitFor 7 0.0807413 0.0011646
FEngineLoop_PumpMessages 2 0.0807173 0.0807114
FTaskBase::WaitWithNamedThreadsSupport 2 0.0800335 0.0000044
Oversubscription 6 0.0800282 0.0800156
PostProcessMaterial %dx%d Material=%s 8 0.07996 0.0003694
FD3D12Viewport::GetBackBuffer_RHIThread 6 0.0795871 0.0000058
PresentEvent_Wait Frame 1 0.0795807 0.0000003
ParallelFor Task 59 0.0110244 0.0110199
TaskWorkerIsLookingForWork 412 0.0078127 0.0078127
Nanite::DrawGeometry 58 0.0075063 0.0007404
ShadowDepths 34 0.0067171 0.0000491
Tick_Engine 2 0.0058015 0.0001814
FDeferredShadingSceneRenderer_Render 1 0.0055547 0.0001503
RenderVirtualShadowMaps - (Nanite) 31 0.0048381 0.0002548
FD3D12Queue::ExecuteCommandLists 133 0.0047812 0.0047812
UWorld_Tick 2 0.0046204 0.0004452
DiffuseIndirectAndAO 22 0.0038116 0.0002108
RenderDeferredLighting 14 0.0032479 0.0000246
TickCompletionEvents 14 0.002952 0.0000107
ProcessUntilTasksComplete 14 0.0029413 0.0004488
MainPass 25 0.002782 0.0015851
CharacterMesh0 8 0.002756 0.0014754
ParallelExecute (Async) 44 0.0027437 0.0000297
PostPass 23 0.0027243 0.0017864
Sync_RenderingThread 2 0.0026218 0.0000178
GameThreadWaitForTask 1 0.0025971 0.0025971
LumenScreenProbeGather 11 0.0024524 0.0013513
Nanite::VisBuffer 23 0.0022791 0.0000117
ParallelDraw - (Index: %d, Num: %d) 25 0.0022481 0.0022481
RHI_CloseChain 150 0.0021384 0.0021202
WorldTick 3 0.0020177 0.0000422
BasePass 26 0.00177 0.0001365
LumenSceneUpdate: - %u card captures %.3fM texels 7 0.0015774 0.0003286
InterruptQueue_Process 77 0.0015677 0.0013975
ParallelFor 22 0.0015638 0.0001742
LumenSceneLighting%s 7 0.0015072 0.0000101
DirectLighting 8 0.001432 0.0001951
SubsurfaceScattering - (ViewId=%d) 4 0.0011516 0.0001515
FDeferredShadingSceneRenderer_BeginUpdateLumenSceneTasks 1 0.0011384 0.000078
NodeAndClusterCull 18 0.0010757 0.0010691
LumenReflections 11 0.0010456 0.0010382
SubsurfaceScattering 4 0.0010001 0.0009888