In Blender 2.78, there are two very cool features called Adaptive Subdivision surface and Microdisplacements. BlenderGuru has a great video on it.
If you don't have time to watch the video, here is a summary in lamens terms (written by me; just wanted the quote format to emphasize it):
Both of these features are Experimental features for Cycles render.
Adaptive Subdivision surface is an extension of the Subdivision surface modifier that calculates decreasing levels of subsurf the farther away the object is. It can even change the level across an object.
Image by BlenderGuru.Microdisplacements uses the Displacement input of the Material Output node. It generates extra geometry at the time of the render. It's like a Displace modifier that only displaces during the render and uses any combination of Cycles material nodes.
However, when I try to use these features on a plane and use a Separate XYZ > Z node in my node setup, it doesn't work. I am theorizing that this is because the plane does not have any Z depth before the render. Is there a way around this?