Initially I thought I'd use the same basic code, but unfortunately the precision is an issue - the distortion is tweeked to get maximum precicion in a small area. Trying to do a mirror (which may be reflecting something on the other side of the screen) means the precision goes to hell and I get texturing artifacts everywhere. So reflection has to be something else.
So I knocked up a quick test scene, and basic reflection is simple - render flipped scene to texture, draw that back in the final image. Nice sharp reflections, but this time I'm after an icy reflection. Current progress looks something like this:
Basically this is a growable poisson disc blur, so reflections stay sharp at the feet but get blurrier as they get further away. Couple this with a gradual tint towards greyscale as the final step.
Unfortunately even with 16 samples the growable blur doesn't give very good quality. It's not terribly smooth and if you want it to be really blurry then you get all sorts of stair-steps and repeating artifacts. It's also not nearly as prominant as I'd like, I think just a regular separable blur would give much better results for less cost (although it's need two passes, and you don't get to have variable blur).
I'm not convinced on the greyscale tint either. I can't find a good middle ground between subtle and not visible and visible but too over the top.
I'm going to try another approach - a small, fixed blur combined with a small amount of distortion (probably something simple like a sine wave to start with). Then I might just blend an ice texture (if I can find one) over the top and see how that looks.