You're blocking ads, which pay for BlenderNation. Read about other ways to support us.

CMV Adaptive Subsurf Workaround


Reynante gives a cool demo of microdisplacements with the Cycles Material Vault.

With the latest awesome experimental feature of Blender 2.78—Adaptive Subsurf/Microdisplacement, I can't help but make a demo on CMV, using a workaround.

If you don't have CMV, don't worry, the concepts still apply. :)

Have fun and happy materializing!

About the Author

Reynante Martinez

Storyteller. 3D Artist. Yogi. Calisthenics Athlete. Gymnast. Teacher.


  1. Tangentially relevant to this cycles micropolygon displacement topic. Can anyone direct me to the right venue to inquire about such things as whether microdisplacement procedures can be programmed to work with OpenGL or scanline renderers and other equally esoteric questions? Anything from a FAQ page to a developer forum would help. My google searches are giving me goose-egg on this and other questions I want to research.

    • (To clarify, I'm nothing at all like a developer or a coder, which is a big part of why I don't know my way around either the community or the coding concepts. I don't like to spam, I prefer to be self-sufficient, and yet, I'm banging my noggin against a brick wall here trying to figure out how to even get started on indepently finding answers this one... or failing that, whether it's even reasonable for me to try to "sit at the big table" and ask the experts my questions on something like this.)

      • I find it funny that you put a whole post in parenthesis.

        They can kinda be done in OpenGL and Direct3D with programmable shaders on the per-pixel level (per-pixel displacement mapping). It's kinda of cheating to say it's a rasterizer displacement mapping algorithm because they code the shaders to raymarch - and it's computationally expensive.

        Or you could use a geometry or tesselation shader to tessellate/subdivide the geometry.

        Or if you don't care about speed, take your base model and dice it every frame from scratch on the CPU and then push that data to your graphics API.

  2. They brought the micropolygon dicer back!? I remember a few years ago when they added it in for a short while and then took it out ... t'was a dark day for me.

    • It's back and, as I understand it, still being tweaked in development. One difference I notice from the displace modifier stack is that there is currently no way to stack successive displacement maps in such a way that the adjusted normals of the first displacement are made available to the next displacement in line... only possible to "add" the two displacement maps together and apply them to the original undisplaced mesh, which gives a different result. -- Actually I don't really know if any other dicing engines support the caching of intermediate displacement normals information, given how new I am to this.

      • Rombout Versluijs on

        Your talking about stacking texture and thus mint plying them on each other. That's sort of what s can be done now. Totally depends on your workflow I guess

        • Not the same. Multiplying textures in a single displacement causes skewed results. A practical example will demonstrate this:

          Add a highly subdivided plane to the default scene and make a blend/gradient texture of some kind. Using the Displace Modifier in the modifiers stack, generate a hill by feeding this texture into the mesh. Now add a second Displace Modifier and use a brick pattern; with a high level of displacement to make the results easy to see.

          By using two separate displacement modifiers in the modifier stack, the bricks will properly point outwards from their places on the hill without any skewing of the angles between faces. If instead you were to combine the two maps and process the result through a single displacement modifier, the skew error is caused.

          That is exactly what happens when using the Cycles shader displacement: the displacement only occurs in the final step of outputting the shader, resulting in uniform displacement along the Z axis of the mesh, which causes the skewing.

          The only fix is for the coders to engineer a standalone displacement node. These nodes could then be "stacked" in the same way as using the multiple Displacement Modifiers in the modifier stack, preventing the skewed results.

          If the comments section allowed it, I would have included a demonstration PNG file.

Leave A Reply

To add a profile picture to your message, register your email address with To protect your email address, create an account on BlenderNation and log in when posting a message.