UE 5.1 Temporal Super Resolution ghosting

Can’t claim that I have spent long enough time to test it out, but I feel that the ghosting issue of tiny/thin objects which plagues us in UE 5.0 with Temporal Super Resolution AA is actually getting worse in 5.1.

“Responsive AA” in Material-Translucency-Advanced no longer works in 5.1, but then even in 5.0.3 it only works on translucent material. Tiny/thin opaque object without this option suffer the similar ghosting issue, albeit to a lesser degree.

UE 5.0.3:

UE 5.1.0:

Green: Niagara Default Sprite Material (additive, responsive AA);
Red: Similar additive material without responsive AA

I am kinda tempted to report this as a bug to Epic, but I’d like to hear from other’s like Niels if you know any fix or workaround.

3 Likes

I’m pretty sure they changed the velocity gather step cause they told me it’d get better. Maybe there’s still a small oversight though.

I’ll see if I can check later

1 Like

If you render After dof, which is where you’ll want to render the vast majority of your vfx anyway, tsr ghosting seems to have been resolved almost completely, so that’s super nice.

Before dof seems to unfortunately be a completely different story. Even with output velocity, small particles will still ghost when the range in which motion can be found is too small.

Masked seems to have improved a little bit. But super small particles will still create issues.

Changing material pass to ‘After Motion Blur’ instead of ‘After DoF’ seems to resolve all the new ghosting issues for me in 5.1

Actually Niagara Default Sprite Material is already using “After DoF” pass.
/Script/Engine.Material’/Niagara/DefaultAssets/DefaultSpriteMaterial.DefaultSpriteMaterial’
But the “UE 5.1” project video I recorded earlier is actually migrated from an originally UE 5.0.3 project. The ghosting doesn’t go away however I tried to change the DoF pass and Output Velocity settings.

After creating a new UE 5.1 project from scratch, the ghosting is gone when “Output Velocity” in Material - Translucency is disabled, otherwise you need to disable “Motion Vector Setting” in Niagara Renderer instead. “Responsive AA” is apparently doing nothing at all. The visible difference is too hard to tell.

IDK if something needs to be updated in the ini manually to enable the ghosting elimination when I just migrate my older project to 5.1.

One quirkiness in Epic’s Content Examples project opened in 5.1 is that if I use “After Motion Blur” pass, the brightness of the small particle is totally different, and the object ignores depth as if “Disable Depth Test” is enabled, even though it is actually disabled.

Edit: The unexpected ignore depth test is also true in a newly created 5.1 project. I assume this is indeed a bug?

Project Settings → Rendering → Translucency → Turn on Separate Translucency.
Material Details → Turn on Responsive AA and Translucency Pass set to After DOF.

I tried what everyone else suggested and it wasn’t working for me. It was only after turning on Separate Translucency that this worked.
Hope this helps

You can in fact control the Motion Blur being applied to particles on a per particle basis.

  • Enable after DOF and output Velocities in the material.
  • Then inside your Niagar System, change the Motion Blur settings to Approximate:
  • Create a vector parameter, in my case I called it ‘MotionBlur’. Set it to Velocity * custom float (in my case a User Parameter).
  • Replace the VelocityBinding in your Rendererer with the newly created MotionBlur parameter.
  • You can then control the amount of MotionBlur being applied by adjusting the parameter.

However, I have found this give mixed results. Without motion Blur/Velocities being applied, small particles just get lost, visually. It’s a trade-off and just doesn’t quite work perfectly most of the time. It will also depend on your background, e.g. noisy background will give worse results than clear sky.
You can always try to set the MotionBlur to ‘Disable’ as well.

On a side note, the newly ‘After MotionBlur’ pass is useless 99% of the time. As partices draw in weird sorting order compared to the rest of the scene. Not sure what this is meant to be used for in practice.

2 Likes

None of these solutions on this post worked for me. I just ended up sticking with TAA instead of TSR.