The 2.8x OpenSubDiv implementation; Development thread

We are all surprised. This is not about hindsight. Somebody reviewed that patch and said “this is fine”.

Subsurfs are an indispensable, breadwinning core feature of any modern modelling package. Without it we are back in the early nineties.


Perhaps OSD should be activated only at rendertime, and with the old one improved upon and optimized for work like mesh editing and deformation with the modifier stack (like the addition of GPU processing).

OSD is still needed for high quality creases and microdisplacement in Cycles so it shouldn’t be ditched completely, but you do wonder where subsurf in Blender could’ve been as Sergey actually did look at optimizing the old code, that was until Pixar announced OSD would be compatible with the GPL. Perhaps the BF should’ve just rolled a custom solution after all, as it already works quite well for Blender’s UI and other areas.

Really, it’s needed for displacement ? or dicing maybe ? I had no idea, I thought they were separate things.

no it’s not

that’s correct and on top of that OSD is quite slow… (tessellating step in the beginning)

It is needed if you want adaptive dicing, and I see it as a very important feature because it allows for the addition of a ton of detail in a memory-efficient and in a completely non-destructive way (at least it’s far more efficient than multires sculpts, very high resolution modeling, or generally high subsurf values with the displacement modifier).

2.82 just made it even better with UDIM.

Tessellation could be optimized, but I’d rather deal with that than having to reduce detail because of RAM constraints.

It’s been known to bug out, but Max has 3 different sub-modifiers(OSD the latest) and a lot of users still use the Turbosmooth modifier over OSD, and there are even users who still use the ancient Meshsmooth mod(the most famous Max modeler that I know who definitely uses MS is Fausto DeMartini) personally I still use Turbosmooth myself(out of old habit) and while OSD has better handling of smooth uvs, is better for animated meshes, and is designed with creasing in mind, for pure tradtional sub-d modeling in Max I see no noticeable benefit to using OSD.

I didn’t use Blender before 2.80. So there was a native subdiv mod in 2.xx versions that’s since been removed? How well did it behave and how hard would it be for the devs to put it back in?


Ah yes I’ve stopped using max around the time turbosmooth was introduced, 7 or 8 iirc ? I’ve long wondered what the difference with regular smooth mod could be ? but I know pretty much everybody uses it over the regular one -well, as far as I’ve witnessed.
Yes, up until 2.76 ( Blender used its own implementation of catmullclark subdivision, with support for edge creasing but no vertex creasing like OSD supplies, and obviously none of the GPU computation and the alleged speed benefits…
It’s not mentioned anywhere that OSD would have worse performance than the Blender original in any set of conditions, so I’m not sure if it’s worth “putting it back in”. Don’t take my word for it though, I really have no idea what I’m talking about.

Oh and there was another potential inconvenience mentioned at some point by… Sergey, was it ? he said OSD did not support everything Blender does, such as loose edges (not connected to any faces), possibly ngons, and so on. So I’m not sure what he did to make them work together.

You can try the 2.79. It was much much better. It’s like night and day to the 2.8s.

1 Like

One think that is interesting is blender 2.8+ support by default cpu multi thread opensubdiv but it’s very slow even in multicore CPUs compared with 2.79

Well this sucks. I just upgraded my PC and was wondering why it’s still slow. So the only ‘fix’ for now is to apply the subdivision modifier?

add a triangulate modifier set to >5 faces before applying the subD modifier.

I have absolutely no interest in using Blender 2.7x :smiley: Not a viable option.


I cant use 2.7 anymore too, for a lot of reasons. Was just trying to tell that it was better before and subd needs a fix to allow good working with it again like in 2.79. But indeed i was thinking about to even switch back for some time for only this feature.

Well, I never used it before. Came from Max at 2.80, once that while right click select mess was sorted out.


Any news on the opensubDiv implementation? We’re at 2.83.3/2.9 and still subdividing a cylinder takes 20 seconds. Really guys?! Is it really that hard? This is really a joke.

It should be noted that OpenSubDiv’s algorithm in general does not like dealing with Ngons with dozens of sides (as a cylinder would have.

Delete the caps and grid-fill the ends with quads and see the performance difference. It should also be noted that OSD did see a notable optimization currently found in 2.90 (when Sergey fixed a problem with the topology refiner). However, the devs’ current goal is to get these areas back to the 2.79 performance level (even though they made an entire list of optimization subjects to look at).

I understand about massive ngons with multiple sides. In Blender subdividing a cylinder with 128 sides takes ages. I opened 3ds Max and subdivided a 200 side Cylinder using OpenSubdiv in 1 second. The n-gon problem is a tiny issue compared to what is actually needed to optimize openSubdiv.
I’ll download 2.90 and test the optimizations. Where can I find the list of optimizations to look at?

1 Like

It’s pretty much work in progress it seems. I don’t see a point of comparing it to 3DSMax at this stage.


1 Like

So basically opensubdiv it’s a 2.91 target ?! I hope they done because the animation playback it’s awful

Looks like it, but seeing how things are being pushed from one version to the next I’d say don’t get your hopes up. A lot of things happened the past year, just depends on who’s gonna tackle the task and how spread out he’s gonna be.