Last but not least, the 'motion smearing' effect came from thinking how to get dynamic strokes or custom motion blur in realtime.
I started by experimenting using the SceneTexture Velocity input directly from a Post Process Material and figuring out the controls for the noise, UV mapping, etc.
That was a good starting point, however it caused a lot of headaches due to the lack of control across frames. The stepped animation made things even worse—the velocity buffer only captured information on keyframes, resulting in a snappy effect, not persisting on frames where there is no movement at all. Plus, it didn’t show up at all when using sub-samples because of the frame accumulation.
Then I looked into the PostProcessMaterial chain plugin, Scene Capture (ew, horrible choice), before finally landing on Niagara. As said on my first post, being able to access the GBuffer and capture velocity inside a Niagara Emitter was a game-changer. It gave me full control over how to handle that data and when to write it to the Render Target.
The shader then just remaps it according to thresholds and parameters, uses it as UVs for 2 different noises, and gets applied on top, either distorting the scene texture UVs (for the smears) or applying a color overlay. I used 3 layers, one for surface smears, one offset smears (using scaled screen UVs as input), and one offset color overlay (for the black strokes).