Windows 10 1809
GTX 980 Ti
2.80, 4ef09cf937f2, blender2.8, 2019-02-02
Short description of error
I'm trying to use a Cycles procedural noise to drive both the displacement and blending between two shaders on an object, with the goal of the displaced areas having one shader, and the undisplaced areas another shader. However,the displacement does not match up 1:1 with the mixed shaders, despite using the same noise to drive both.
You can see the shader blend is close to matching the displacement, but is off in several places.
Example file and render uses a standard subdivision modifier on the sphere, the same mismatch error is present when using adaptive displacement as well.
I figured out what is happening. Despite being driven from the same noise, the noise seems to be generated/sampled twice - Once on the undisplaced mesh to generate the displacement, then again once the geometry is displaced. Because the displaced geometry now occupies a different location than the undisplaced geometry, the noise generates differently.
Increasing the amount of the displacement increases the amount of mismatch-
So now I wonder if this is expected behavior, or if it would be desired to "freeze" the generated noise before displacement and use that result through the whole shader chain?
Exact steps for others to reproduce the error
Open the attached .blend file, and render.