Strange WPO flickering bug coming from 4.27 to 5.0

I’ve just moved my project to UE5 and I’m having a major problem with one of my master materials that I wasn’t seeing before. It’s definitely an engine bug, not user error, but I don’t know how to fix it.

I use a texture multiplied by a scalar parameter to create certain vertex deformations on objects… and on objects with this material, there’s a constant “flicker” like there’s a resolution error on the WPO coordinates (in my case, it manifests as visible backfaces through the object)

I tried plugging in a 0 constant to the WPO output and the issue goes away. Curious, I tried taking the output of the texture multiply setup that I was feeding to WPO, and just hard-coding a multiply by 0 (which should, of course, ALWAYS return 0, even if for some reason the scalar parameter I’ve set to 0 was some tiny float) and the issue persists. If taking some complex set of math and multiplying the result by 0 isn’t returning 0 EVERY time, something is wrong on the back end. But I know this must be happening because if I just feed a 0 constant instead of a multiply-by-0, I don’t get the same result.

Noticed something similar - in my case a blueprint actor with several HLOD meshes had a WOP texture effect that took into account World Position and Object Position, in UE4 this behaved as expected, in UE5 the HLOD meshes were all treated by the Object Position node in the material editor as separate entities which broke the material. By contrast the same functions plugged into the emissive for debug showed the material was mapped correctly (just like in UE4), but as soon as the function was placed in the WPO pin it was mapped differently.
To fix this I ended up getting the Actor WS Position from the Blueprint and passing that on to a parameter in the material, this fixed the issue, though it looks like it might be a bit more performance intensive than the UE4 version that just worked :frowning: