How can I best implement fallback textures for low graphics levels?

I want a material to use a different texture when the player’s graphics quality is low.
Roblox already does this for Studs and other SurfaceTypes:
image

At quality 1 and 2, studs use a basic fallback texture with fake, “baked” lighting.

At quality 3+, studs use an unlit texture and a normal map to react to lighting. The texture is ugly on its own, but the normal map makes it work.

(You can actually see the flat texture in-game using a ViewportFrame!)
image

However, this behavior isn’t available for developers. MaterialVariants don’t have unique properties for “low textures”, and games can’t detect the player’s graphics quality in Automatic mode.

So if I want unique textures for low graphics quality, what do I do? I don’t want to make the player toggle textures manually with a “Low graphics mode” button. I want an automated solution that works with Roblox’s graphics levels, if possible.