Blender (Cycles) won't render the .blend file linked below with the new OpenSubdiv/Adaptive subsurface turned on.

In render preview, all is fine, I see "tesselating" pop by, it is done in no time at all. If I hit F12, Cycles goes into lockdown while it is tesselating. After about a minute, it comes up again with "out of memory error", with peak memory usage at about 0.05Mb. If I turn off the new feature, there's no problem (except I have to use the old subdiv modifier).

Would anyone know if there is a fix for this (yet), other than turning off Experimental features? (And yes, I know, it says "Experimental" :))



Blend file available here: https://www.dropbox.com/s/7tb31dm85hmw4rg/Hex%20Planet-tesselationerror.blend?dl=0


The linked blend file does not have anything connected to the displacement output, and the displacement mode is set to "bump". Are you sure you supplied the correct version of the file?

In any case, the most likely explanation is the preview vs render tessellation options. The default adaptive setting on the modifier is to subdivide until triangles are 1 pixel in size. In the geometry panel under render settings are some option to scale this setting:

cycles geometry settings

The preview setting is "8", which increases the target size of the triangles by a factor of 8. Meaning Cycles will subdivide only until it gets 8px triangles. The render time setting of 1, however, does not scale the target triangle size. Cycles will keep subdividing until it either gets those single pixel triangles, or hits the subdivision limit (12 by default). Or, in your case, until it runs out of memory and pukes.

You can adjust either the subdivision surface modifier or the render scale setting in the geometry panel to target a less dense mesh (say, 2px or 4px triangles). If you start loosing surface detail from this, you can change the displacement mode in the material settings from "true" to "both":

displacement type set to both

Choosing "both" will further adjust the surface normal to fit a theoretical perfectly subidivded mesh, rather than the limited mesh you actually have. This creates a bump mapping effect which fills in the missing detail. As long as the sillouhette of the mesh is basically correct, this can be quite convincing.


Your Answer

