the solution is perfect for your problem, Instead of using refection vector , you have to generate them from texture co-ordinates something like this
Also for +z and -z, you have to use GR instead of RG for texture co-ordinates .