I think raytracing is the only way to do it. Cast a ray per pixel of the video onto the first screen, see where it hits/reflects and cast another ray onto the final screen from that point. I imagine it could be done on opengl 4.x where you have image store, on older hardware things get tricky - the only idea I have is to use a lot of tiny, instanced quads