Microdisplacement rendering at an angle I have a simple setup, a plane with a subsurf modifier set to 1 level of subdivision and adaptive subdivision, with a basic node tree to get a microdisplacement effect.



Now what I would expect to get is this:



but what I get in reality is this:




The normals of the microdisplacement seem to be rotated -45 degrees in the x axis and then 45 degrees in the y axis, because I got the correct result by doing just that to the plane.

I did test this with various older builds and got exactly the same results.

Any why this is going on, and more importantly what the fix is?
Looks like you're using a nightly build of Blender with vector displacement support. In that case, you'll need to translate the map with the new "Displacement" (displace along normal) node. Add Node > Vector > Displacement. That node can also replace your math nodes if you like, use the "offset" value instead of the subtract node and the "scale" value instead of the multiply node. They do the same thing, just built-in functionality. Plug your displacement map itself into the "height" input.

See also: What value does the Displacement input of the Cycles Material Output node expect?