Getting a material to only display on the XZ plane

I’m trying to make a ice / frost material that can temporarily be applied to all sorts of meshes. I’m trying to do this via niagara at the moment and its almost working. The material works for the XY and YZ planes, but it doesn’t work well for the XZ plane and I’m not sure why. The only difference between the materials is the component masks, so it has something to do with those. I’ve tinkered with it but have had no luck yet, anyone have any ideas?

If someone knows a better method for applying a frost texture to complex meshes (character meshes, etc.), please let me know!

Example of the materials on different planes, the XZ plane is square and I don’t know why. I think there is some interaction between radial gradient exponential and the RB component mask.

Here’s a screen shot of the material blueprint:

Have you tried the WorldAlignedTexture node? It replaces the TextureSample node and can use generated UVs that look good on any mesh at any angle. It’s great for terrain.
Hope this helps!