Blender Edit Mode Performance

if this make it to blender 2.83 will be amazing

Mesh: skip conversion from edit-mesh to mesh in edit-mode

This resolves a performance regression in 2.8x where every edit-mode
update performed an edit-mesh to mesh conversion.

Now the conversion will be lazily initialized if/when it’s required.

New BKE_mesh_wrapper_* functions abstract over mesh data access.
Currently only edit-mesh and regular meshes are supported.
In the future sub-surface meshes may be supported too.

10 Likes

Hi, Sergey (Core developer) create a new branch for OpenSubdiv devlopment.
opensubdiv_compare:
https://developer.blender.org/diffusion/B/browse/opensubdiv_compare/;315bdd201534e0e07421b5f1298e1086cfefbd5f

Cheers, mib

9 Likes

Which confirms our notion on what he was working on last week (when he was not helping with the new server given to the BF). :slight_smile:

Once the remaining areas are back up to 2.79 performance levels, I hope they quickly move to go beyond and cause Blender to become the app. that truly put the fun back into 3D, no matter how much complexity and detail you put in your scenes.

2 Likes

can someone build from this branch?!

I gave it a go, but weirdly there’s no performances improvement yet. Unless i’m missing an option when building.

1 Like

Hi, I can build but I am on Opensuse Linux and I guess my builds are not portable.
There are only cleanups and structure changes at moment, nothing really useful at moment.

Cheers mib
EDIT: @lucky, check -D WITH_OSD_FASTER=ON :slight_smile:

4 Likes

Sergey just dropped a huge bombshell of a commit (or rather 31 of them!):
https://developer.blender.org/diffusion/B/history/

I guess that contains the subdiv performance stuff. Fingers crossed.

EDIT: Yes! https://developer.blender.org/T76855

14 Likes

Ok, I have built Blender from master. On my machine the shared .blend file here:
https://developer.blender.org/T76855
Go from 7 fps to 57 fps with new master (smooth, keep corners selected in modifier). Great!
But apparently the performance improvement is only for some cases with certain geometries. I am not noticing performance improvements with other test files that I had.
I suppose it’s a good thing anyway, maybe new subsurf modifier is now at the same performance level as in 2.7x for all cases (comparing OpenSubdiv CPU in 2.9 vs default subsurf in 2.7x). Perhaps now with this fix the foundation has been built to start implementing GPU acceleration.

7 Likes

It seems to dramatically improve performances with meshes containing some non-manifold geometry such as the one given in the bug report, but here no performances improvement with rigged characters made of clean topology.

1 Like

Hmmmmm… :no_mouth:

For one of my Dragon models (which has a lot of polygons), OpenSubDiv performance has seen a definite and sizable increase in both editmode and deformation (from well less than 1 frame a second to about 3 frames, enough to make things a lot more usable). It is not all quads though (because of detailing) so I’m guessing it got an outsized boost from these commits.

1 Like

Impressive !!
is this for blender 2.83 or 2.9?

I think that new 2.90 builds from buildbot already contain the fix (at least for Windows and Linux), for those who want to test.

1 Like

Yes. There are suppression of unnecessary checks and memory footprint reduction.

But several commits are tagged as cleanup or refactor and some just insert TODO comment for future work.

So, that looks like a refactor to handle Auto Apply Base more than an universal performance improvement.
I remind that is planned, but not yet detailed, task to restore OpenSubdiv handling by GPU.

So, it does not look like it will happen, soon.

Perhaps because other features are lot more important for majority users.

Sergey very recently updated the MultiRes task where he checked off the “Always auto apply base when sculpting, instead of having a button for it” on the task list. Been trying to search for an actual patch which adds this, but couldn’t find anything. Anyway, something seems to be going on at least.

Anybody who isn’t rendering blocky minecraft scenes needs to use subdivision, and this is one of the most basic features they need to improve by an order of magnitude to get back the performance that was lost. Is everyone using Blender to edit videos?

There is many ways to model something, sculpting has become a standrad for characters or assets for some domains instead of using subdivision.
While i agree subdivision is great to quickly round shapes and add polygon resolution.

And yet to render those sculpted character with displacement maps you need to subdivide the mesh. It’s a integral part of most 3D workflows at this point.

Edit: And considering the performance of the armature modifier, pre subdividing your mesh isn’t a solution either.

1 Like