I was able to achieve this in a fairly straightforward manner using the Retainer Box Widget. Simply put, the Retainer Box has two functions. One, it allows you to set a custom tick for a widget, forcing it to update less than other widgets. Two, it allows you to force a widget through a material, allowing you to do all sorts of effects.
Simply set up your material in the “Effect” Category of the RetainerBox
Note the name of the “Texture Parameter” field in this case, it’s unhelpfully called “Texture”. Once you have added the material to the Retainer Box, make sure it’s a UI material with its blend mode set to “masked.” Then, make your material as per usual.
I wanted mine to just be a circular mask for a Diablo style health bar, so I did a little trick I know to get a circular mask, but as you can see, you could easily put any alpha masked texture in. NB: The name of the Texture Sample Parameter 2D is also “Texture.” In order to get the underlying texture of your widget, you need those two parameter names to match. Also, keep in mind that if your widget is non-square, you may have to do some warping to get it to look just right.
Here’s how mine looked in-game (just a plain ol’ progress bar)