How do I create Light Bending Shaders

I was curious if anyone could point me toward some resources for creating light bending shaders. I did some minor hunting around, but did not find any that provided the knowledge I was looking for.

I have in the past using OpenGL (Long since forgotten exactly how) gotten the vector between the eye point and a vertex then manipulated it to change what was being visualized. (Reflecting it + Raycasting to make real time mirrors)

What I would like to do in Unity3d is something similar in which one of 3 things happens:
1 - Light Reflection (Reflection based off the view angle) - Mirror
2 - Light Refraction (What is always directly behind it, or 30 degrees off of the view angle) - FalseCamo, or Lens
3 - Light Teleportation (Think something similar to the portals from the game Portal) - Portal

Each of these Ideas slightly builds off the previous (Making a mirror is no different than light building, just a slightly different function to calculate the reflected/refracted angle). This is all purely academic as I do not currently have any projects that would use them, I just noticed a surprisingly small amount of example shaders that did vector manipulation. (Perhaps Unity Doesn’t Allow for it?)

If you know the view vector, the normal and position of the surface, it’s easy enough to compute any of those vectors. The main problem is, what to do next with that information? If Unity used a raytracing renderer, it would be easy enough - you just compute the incoming light from that direction. But Unity is a rasterization based renderer, so it draws object one by one. That quite complicates things like this. A good way to achieve this is to render a Cubemap at some point, which captures incoming light from all directions. Then you can just look it up inside the shader, using either a reflected or refracted vector. There are plenty of reflection and refraction shaders around the forums and the wiki.

Thanks for the reply… I had not realized that Unity was a Rasterization based renderer. It explains why I did not find many examples doing what I expected.

So using a Cubemap, I would not have the ability to have an “Infinite Mirror”… Is this correct? (The two mirrors continually reflect light off each other) I would guess this is so because of some circular logic in which each mirror requires that the other already be rendered.