Blender 3.0 OpenSubdiv development

finally its look blender 3.1 will come with a fast animation playback

New builds available:

Linux
Mac OS ARM
Mac OS Intel
Windows

Since I put it aside for a while, I am not sure what are the main changes from a user perspective. But the main ones are support for custom attribute rendering (from geometry nodes) and a revision of the way the CPU side mesh is generated which should make the system a bit more robust, and avoid some performance problems when a subdivision mesh is used in elsewhere (e.g. in some boolean modifier).

19 Likes

Hello @KWD , glad to hear you’re still on it! Unfortunately it seems broken at this point for me. If you still have the test files I’ve sent you, you can check it out. Here performances are even worst than Blender 3.0 master. Haven’t compared with Blender 3.1 alpha though. Not sure it’s necessary to establish a full report with fps value, basically I get 3-10 fps. Previous build still gives 60fps with the same files.

1 Like

Excerpt from today’s render and viewport meeting.

Eevee & Viewport

  • Opensubdiv D12406 getting close it needs a review and a patch to fix a regression. (Kevin)

The new feature cutoff is in three weeks, that should be enough time, right?

7 Likes

Interesting. I tested this Windows build with the flying dragon file, and with 2 subd levels I get 6 frames per second in the current official R3 release.

I loaded the same file in the Windows build posted here, and it plays at 51/52 fps. A marked improvement. Increasing to 3 subd levels and it still plays at 22fps. In R3 it plays at 2.42fps.

Really looking forward to R3.1 - I hope this makes it in the 3.1.

And my machine’s temperature runs 14 degrees hotter in R3…

1 Like

The issue appears to be that the modifier is not enabled for final render, which in the code is always used for checking if the modifier is enabled. This is fixed now, some new builds should be on the way unless there is some compilation problem.

1 Like

New builds available:

Linux
Mac OS ARM
Mac OS Intel
Windows

8 Likes

Really exciting to soon finally get some acceptable performance when using subdivision modifiers, a long awaited improvement for sure. Thanks for all the fantastic work you are doing!

Noticed some problems with the latest build. Moving around vertex point on suzanne with a subdivide modifier with 5 subdivisions is noticeably slower in the latest builds.

In the build from september 20 I get around 28 fps, whereas in the latest build I get around 14 fps, is this a known regresion? Can anyone else confirm? It’s still noticeably faster than regular 3.0 (5fps), but if there is any way to get back to the old performance it would be even better!

Specs: GTX 1060 6GB, Ryzen 2700x, 48 GB Ram and Samsung 970 EVO 500 GB M.2.

2 Likes

Thanks for the update, it’s reassuring that it’s “only” a small fix and doesn’t require to rewrite the whole thing. That brought back performances of earlier builds with my test files here, congrats.
Although I can reproduce the slight performance regression as mentioned by @Dangry , here 19fps with latest build with Suzanne subdiv 5 and moving a vertex, while 55fps in september build.

2 Likes

Wow, a 300% performance regression I wouldn’t call slight
Still I’m enthusiastic that this patch is looking closer and closer to maturity

1 Like

@Hadriscus Hey it’s been a while :slight_smile: To moderate your statement, it happens only with subsurf level 5 on Suzanne. Below that level, the regression is less noticeable, for example subsurf level 3 gives same 60fps. Here with another character, subsurf level2, it’s only a 33% drop (30 vs 20 fps, while Blender 3.0 gives 10 fps). Would be still nice to bring back initial performances though.

1 Like

Hi ! :wink: Alright, I don’t use subdiv 5 all that often so I’m not too worried. I usually model with subdiv turned off anyway. I’d just like to be able to pose and playback in realtime, which is what most people want I assume.

I just ran the executable though a profiler and this regression appears to only affect edit mode. Basically, we need to recompute some data in order to render correctly edit mode data. The only fix would be to make caching more agressive and only recompute if the selection changes, which might be error prone (the regression is because I fixed a bug for missing updates), but I’ll try to figure something. I don’t want to spend too much time on this for the sake of merging in master. We can still improve after the fact.

13 Likes

Very poor performance in edit mode with subs on…Its sad

Not that poor, a suzanne subdivided a few times + subsurf level level 2:
Blender 3.1: 3 fps
Kevin latest build 3.1: 14 fps
Kevin september build 3.0: 38 fps

Then yes definitely slower than the september build, but still way faster than official Blender. And what’s not sad is he said he will have a look at this later.

However, when comparing with Blender 2.79, it’s 9 fps. Then indeed, it’s not that much faster, and we can easily blame Blender 3.1 to be way slower than Blender 2.79. But wait and see is all we can do.

8 Likes

I actually thought 2.79 was still faster with OSD. I’m very glad to be proven wrong ! (It’s been a while since I have done any sort of comparison) I still remember the Sintel dragon demo by Sergey… I wonder how that one would fare with Kévin’s latest patch.

Nope, it’s about Edit mode actually, Blender 2.79 doesn’t support OSD in Edit mode.

1 Like

Haaaaa ok the details were lost on me. Thanks for clarifying ! So it’s indeed a net positive. What a bright future

1 Like

I tried the dragon_adult_flycycle.blend in both 2.79b and the above posted 3.1 build. Here I am merely pushing the play button

2.79b: 60fps @ 3 subd levels (OpenSubsiv activated in subd modifier)
3.1 build (Keven latest): 20fps @ 3subd levels

So 2.79b is 300% faster to play this animation with subd turned on.

BUT! This only applies to animations playing in object mode. 2.79b’s OpenSubdiv does not work in Edit mode, and is turned off while editing the mesh.

Selecting a face and translating it in edit mode results in a very different result:

2.79b: 1.2fps @ 3 subd levels (OpenSubsiv activated in subd modifier)
3.1 build (Keven latest): 20fps @ 3subd levels

Blender 3.1 outperforms 2.79b by a factor of almost 1700% (17 times faster) in this case.

(And my rig runs 18 degrees hotter while dragging a single polygon around in edit mode in 2.79b!)

That depends. I haven’t tested this thoroughly yet, but an initial test with the dragon object in Cinema4D results in a faster and smoother edit mode experience in Kevin’s latest build than Cinema4D. Editing a level 3d subdivided dragon mesh is quite a bit smoother in B3.1 than in C4D.

And this with OpenSubdiv turned on in C4D. But I am unsure if this is supported while mesh editing, so more testing is required.

I will test this with LightWave, Max, Maya, Houdini, and Cinema4D next week when I have time.

7 Likes

Thanks for doing the investigation and providing the numbers. What about pose mode, though ? I assume same as object mode ?