The 2.8x OpenSubDiv implementation; Development thread

Only internal stuff for now, but Sergey has officially started work on making OpenSubDiv work again.

Apparently, the meeting minutes also talk about Blender’s custom subsurf code being removed, which suggests the implementation this time will be more complete than the same in 2.7x.

Hopefully, this means a full and proper display of OpenSubDiv in the viewport complete with tessellation and excellent creasing. :slight_smile:


Is this implementation supposed to work on more machines than the previous one? The 2.7x one never worked for me (literally wouldn’t give me the option to enable it).

1 Like

Great! The perfect ally for fast animation preview with Eevee. Thanks Sergey!

That’s right, in 2.7 * even to be able to use opensubdiv in CPU, it is necessary that the graphics card and its drivers meet some requirements for this to work. Basically it was working well only with nvidia proprietary drivers. Here more information:

I hope Sergey can reduce some of those limitations in the new implementation.

1 Like

So, currently, 2.79 settings are there but it is not supposed to work.
We have to wait next commits.

Well, while it’s being worked on, can we have a checkbox in the modifier that makes all open edges creased? That would be swell.

Also, it’s time to join this decade and support vertex creasing I think.


Note in 2.7x there was no support for using OpenSubdiv on the CPU at all, it was purely for viewport rendering as an option.

The idea here is to use OpenSubdiv for everything, which has some new challenges. There are things that Blender subdivision does better than OpenSubdiv, particularly dealing with non-manifold topology and UVs, and quickly updating on topology changes in edit mode.

Once the existing functionality is replaced well enough better creasing can be looked at.


Oh, I misunderstood what evaluation thing in CPU / OpenMP is explained in documentation then. Thanks for the clarification.

Does open subdiv work with displacement? Does it have any dynamic tesselation?

A lot of work on OpenSubDiv (as a complete replacement for Blender’s custom subsurf code) has been committed today.

It’s not officially enabled in 2.8 yet (so users right now are not going to see benefits). Don’t expect to see it in tonight’s builds.

for the technically illiterate, what are the differences between blender subdivision and opensubdiv?

  • Much better creasing
  • Overall better quality
  • Faster
  • Developed and backed by studios
  • Industry standard

Simply put, the code is just better overall.

Don’t forget, view based dynamic subdivision. That’s pretty huge.

but you can do some things in blender subdivs wich are not possible in opensubdiv, like subdividing a non polygonal edge loop, wich is very helpfull for modeling.

1 Like

Who says that’s not possible? OSD has had support for non-polygonal and non-manifold subdivision since v3 I believe. Dunno what some people talk about when they say it doesn’t.

@tischbein3 is right I think, OpenSubdiv does not support subdividing loose edges not part of any polygon. This could be done on the Blender side as a second step, but the result wouldn’t be the same as it is now.

The thing is once you start to treat those edges as curves you get a far better workflow than using curve based modeling approaches in other programs.

  1. You don’t have to deal with interpolated patches/loops between them, once you patch (or in blender grid fill) your edge cage , you get the geometry you have. (Keeps the polygon amount much lower, manageable and cleaner), and no guesswork is involved.
  2. Also since you don’t have a second entity, you can use all the tools on them. Thats leads to point 3:
  3. You can mix poly / box modeling with that worklfow seamlessly.

The only disadvantage is that the position of first and the last point of such an edge loop get too much interpolated due to subdivision, so you have to add an proxy edge at the end of it.
Don’t get me wrong its not the fastest workflow, but once you get used to it, you never want to loose it for subdivision modeling.

This is one of the things where the “industry standard” does greatly fail where the majority of the existing programs do not allow 2point polys / non connected edges at all.

1 Like

It does not have to be 100% accurate, and even slowdowns are accepteable. since (imho) you do this in a low poly stage. (Although for manual retopo its also quite usefull).
I’m aware that new versions break things… but this is a feature I would really miss.

1 Like

Loose elements can be now be subdivided (ie. edges not connected to a face).

Non-manifold geometry now works properly.

subsurf support for meshes without faces.

Vertex sharpness API (for future use, not supported yet on the user end).

Proper support for all UV layers.


It makes me think about something there is in Maya, the ability to change the type of subdivision for the UV. I don’t remember the names exactly, but you can subdivide without affecting the border edges, or the corners of the islands. Is it planned to add this ? Maybe instead of the toggle “subdivide UV”, have a drop down to choose between the different options ?

1 Like