Here's a relatively simple way...
You could probably do it much more elegantly with an svg image that has a 'cutout' filled with a gradient. Then you could just bind the gradient stop points to some value. If I have time I'll try to throw something together as an example.