Motion Blur half-res and quarter-res output are incorrect on platforms that supports wave intrinsics

We have noticed that with high bloom (quality 5), there was a strange aliasing around the objects that the bloom would impact.

It turns out that this comes from the output of the motion blur pass, which produces a half-resolution buffer used by the bloom filter when quality is 5.

This half-res output is produced using wave intrinsics, and the code assumes that GetWaveLaneIndex() matches GroupThreadIndex (modulo GetWaveLaneCount()), which is not the case for a 2D workgroup.

Using the altenative path without wave operation fixes the issue, but is more expensive (and seems to be missing some memory barriers). Alternatively, using a 1D workgroup also fixes the issue, since it forces the Lane Index and Group Thread Index to match.

Any other suggestions, or concerns?

Thanks

[Attachment Removed]

Steps to Reproduce
Load any map and scatter some objects

Activate Motion Blur

Input the command vis MotionBlur.SceneColor.HalfRes UV2

Move the camera

Notice strong aliasing in the visualized texture

[Attachment Removed]

Hi Olivier,

I think you solved the problem. Using a 1D workgroup should be the fix.

Tiantian

[Attachment Removed]