If you are using a runtime virtual texture, you can change your material dynamically by updating and reading a value from a Material Parameter Collection and trigger a global refresh of the runtime virtual texture using Invalidate function targeting the RVT Component and retrieving your RVT volume bounds (this work at runtime/in-game).
You could also re-assign a new material to all proxies but this has greater impact when swapping.