Keeping a material "upright"

If I understand your request correctly, you can solve it by using the WorldAlignedTexture node in your material. That aligns the textures to the world instead of the object.
Connect a Texture2D node to the WorldAlignedtexture and connect the WorldAlignedTexture output the diffuse input. Repeat for each texture you use, like normal, roughness etc.