Page MenuHome

Microdisplacement ignores freestyle lines
Closed, ArchivedPublic

Description

System Information
Windows 7, Gigabyte GTX 1070

Blender Version
Broken: 2.78
Worked: N/A

Short description of error
Microdisplacement creates a small problem when used along with freestyle line drawing; the lines will completely ignore the new silhouette created by the microdisplacement, therefore the lines will be drawn above the microdisplaced geometry.

Exact steps for others to reproduce the error
1- Make sure the new microdisplacement feat is ready to be used
2- Create a simple sphere and give it a Subdivision Surface modifier, set it up to be adaptive
3- Give your sphere a material and add some random (strong) displacement texture output to that
4- Make sure the sphere material settings has the "Displacement" mode set to True
5- Add a suzanne (or any mesh really) behind the sphere
6- Set freestyle lines configs
7- Position the camera in a way that the monkey is behind the microdisplaced geometry of the sphere
8- Render
9- The generated lines will ignore the sphere's new geometry


Event Timeline

Microdisplacement is an experimental feature of Cycles renderer.
Freestyle is a part of Blender Internal Renderer.
And Blender Internal does not support such microdisplacement.

So what happens when you render a Cycles scene with Freestyle lines ?
First, blender uses Cycles to render scene based on cycles settings.
Then, blender uses Blender Internal to create Freestyle lines.
Eventually, Blender Internal render is drawn on Top of Cycles one.

There is no bug, here. It is just a limitation of current system.

You can obtain contour lines from microdisplacement by using compositing nodes (IDmask, Filter) from a Cycles pass (Diffuse Color or Object Index).
You can try displace modifier supported by BI and Cycles.
But Freestyle or Cycles microdisplacement is not the right tool, in this case.

Sergey Sharybin (sergey) changed the task status from Unknown Status to Unknown Status.Jan 31 2017, 12:51 PM
Sergey Sharybin (sergey) claimed this task.

The way how Freestyle works is it tessellates edges and passes them to the render engine to be rendered. Surely such tessellation from outside of Cycles can't take displacement into account.

So as @ronan ducluzeau (zeauro), this is a known limitation of the system. Thanks for the report anyway.