Motion blur is affected by time dilation in UE 4.25

I got an email from Epic saying that the bug is now marked as Unresolved again: Unreal Engine Issues and Bug Tracker (UE-46172) I gave them a link to this thread so they can see all of the workarounds and that I’m not the only one affected by it.
The issue page says that the target fix is 4.27, though. =\ Hopefully there’s a chance it’ll be fixed in 4.26 still.

Just chiming in to say that I’m still seeing the bug in 4.25.4. Sounds like we won’t get a fix any-time soon, so the workarounds in this thread are helpful!

Hey guys, we recently upgraded a project to UE4.25 and ran into this issue. Thanks to some hints in this thread we were able to find a change in the engine source code that causes these effects.
To fix it you must change the Engine source:

In SceneVisiblity.cpp

FSceneViewState::UpdateMotionBlurTimeScale

change

float DeltaWorldTime = FMath::Max(View.Family->DeltaWorldTime, SMALL_NUMBER);

either to this:

	float TimeDilation = View.Family->Scene->GetWorld()->GetWorldSettings()->TimeDilation;
	float DeltaWorldTime = FMath::Max(View.Family->DeltaWorldTime / TimeDilation, SMALL_NUMBER);

or to the original 4.23 implementation, which just clamps the DeltaWorldTime to 1 / 120

float DeltaWorldTime = FMath::Max(View.Family->DeltaWorldTime, 1.0f / 120.0f);

Clamping the deltatime or inverting the timedilation should prevent huge motion vectors that cause weird glitches.

We noticed that with inverting the time dilation we still get some high values for 1 or 2 frames sometimes, so that might not be the perfect solution. Just putting it out there in case anyone wants to look at it :slight_smile:

2 Likes

thank you very much