Blender 3.0 OpenSubdiv development

Sorry no, the Red Nelb has nothing to do with the crashes I mention.

I am talking about the rigs here: https://cloud.blender.org/films/settlers/5e8f16fd9e1df355918c30e9/

I cannot open these in the opensubdiv branch without crashing. They open fine in the general 3.0 alpha. I am certain there are more rigs that crash these just happen to be the latest ones im playing with.

These rigs are fairly complex so I don’t really know what aspect makes these crash everytime compared to say Red Nelb. I’d need some time to find what aspect causes the crashing exactly (assuming I can find it).

1 Like

It would appear that the crashes come from drawing the armature/opening the file in pose mode, I fixed it. I still have the Reb Nelb to do.

2 Likes

An amazing job, it becomes a pleasure to work in production.
And there is a question here:
Why is the" slide " of the vertex recalculated much longer than the grab or scale operation, for the subdividing of surfaces, the slide is very important?
Will there be a fix?
don’t take it as a claim)
and thank you again

Awesome to hear you got one bug down. If I save one of the settler rigs outside of pose mode I am able to open it in the current OSD branch but it will crash as soon as I go into pose mode.

With Red Nelb I did not understand what you were talking about so I used the link I supplied myself to download it and… it crashes in the subdiv branch :frowning:

I was not aware of this at all! I’ve made quite a few changes to that rig locally before making that walk cycle and apparently, whatever issues that file has were solved in that process because I could open it and experience the benefits in the subdiv branch just fine.

I’ve just rewritten this post a bit. Sorry about the confusion. The Red Nelb trouble kinda came out of left field for me. I had no idea the original file before my edits was exhibiting this behavior.

Small display bug. In object mode with X-ray enabled the outline around the selected object is not drawn correctly if the object has a subd modifier on it.

image

Steps to reproduce:

  • Select the default cube when opening a new scene
  • Press Ctrl - 1 to assign a subd modifier with level 1
  • Press Alt - Z to enable X-ray

version: 3.0.0 Alpha, branch: subdivision_work, commit date: 2021-07-14 10:33, hash: 2fc6fc5236fb

Thanks for the update!
UVs now work, nice. Going for another round of testing then, if you need feedback on it.
Unfortunately I got mixed results for character animation.

[Subdivided Cube, 4 bones]

  • Blender 3.0: 2 fps
  • Subdiv Branch: 29 fps

This first test went obviously very well with huge speed up (x14).

Other rigged characters don’t crash on file opening now. Here are two cases.

[Rigged Character 1]
Blender 3.0:

  • Solid preview: 29 fps
  • Material preview (textured): 16 fps

Subdiv branch:

  • Solid preview: 22 fps (-7)
  • Material preview (textured): 17 fps (+1)

This second test did not go so well unfortunately.
Tested with another computer just in case, but got similar results.

[Rigged Character 2]
Blender 3.0:

  • Solid preview: 13 fps
  • Material preview: 8 fps

Subdiv branch:

  • Solid preview: 7 fps (-6)
  • Material preview (textured): 6 fps (-2)

Similar performance regression to character 1 unfortunately.

Other issues found:

  • Faces are always shaded flat, not smooth if “Use Limit Surface” is disabled
  • The Wireframe overlay doesn’t display properly

I can send test files your way if you need, let me know.

I would be curious about one of your testfiles Lucky.

From looking at that wireframe the topology looks very random. It looks more like a game model then a model that is supposed to be subdivided. OSD works best with quad based topology. That might explain the performance difference you are experiencing.

3 Likes

yea, topology is a mess , it is not model for animations with OSD, as @3dioot told, more like a game model , never seen some one use it with subdiv :slight_smile:

I also noticed what Lucky said about smooth shading failing when “use limit surface” is not enabled. Here is a screenshot to illustrate the issue clearly.

Here is the file:

shading_bug.blend (929.6 KB)

That is indeed a game model full of triangles, however your point is not relevant.
Same issue with quad based meshes:

@regis3d The second character case is this one above. Then it doesn’t matter if it’s quad based topology, same performance issues. Before making assumptions, you can test yourself.

Thanks for clarifying Lucky! :slight_smile: I guess you just used it to illustrate the wireframe overlay not working properly. Better safe then sorry in cases like this right? :+1:

I am testing things myself. The rigs I’m testing with are probably less complex so I see more benefit. No ill intentions from my side here.

1 Like

I know, the message was mainly targetting @regis3d. It’s always disappointing when taking the time to test features properly, establishing a clear report to be helpful, and seeing such messages thrown by users who don’t know what they’re talking about, without even taking the time to verify their statement.
My point is, on the contrary, it’s important to test both case, triangles and quad based model, to check there’s no performances regression in both of them, and hope for the best!

I am not see much point of testing half implemented features by my self, better to wait when it will be in master. Brunches is closed for bug reports. Developers usually have in mind most of problems in unfinished patches. I believe Kevin take care of it.

Then why are you commenting this thread?
Read the first post:

I am sharing some builds for anyone who would like to try it out, test it, and make sure it’s all working good.

I’m stopping the debate here, it’s polluting Kevin’s thread.

3 Likes

In regards to the wireframe overlay its actually the drawing of the wireframe in general for a model with a subdivision modifier on it. Just to clarify it a little bit.

  • When enabling wireframe through overlay settings
  • Through object settings > viewport display > wireframe
  • By going into wireframe mode

This makes perfect sense since its probably all the same code but just thought I’d mention it.

Its also regardless of “optimal display” being on or off

Its easily reproducible by assigning a subdivision modifier to the default cube with Ctrl + 1 and going into wireframe mode.

image

I wrote about my self, not about other people. Read comment more carefully. It is always good when someone help with testing. I wrote because I saw bad topology for testing. Just wanted to save time for developers to not worry much about topology with almost no use cases.
P.S. Saying ,I am " do not know what I am talking about " is pretty rude.

2 Likes

Thanks for the testing and reports.

I don’t know, I can look into it and see what is happening.

The crash is caused by a subsurf modifier which is on some armature object. I don’t know how it got there, but it is not supported. This has nothing with the branch, but still should be fixed I guess.

It’s always a good things to share files, then I can also run them in a profiler.

The goal of this thread is to test this feature before going to code review/master, so we don’t end up in a situation where there is some design issues that prevents it to be merged, or forces it to be reverted. It’s ok not to test though.

Even if the topology is bad I would only expect a slow down when the data is initialized. After that we only sample points using precomputed weights. The only way to know is to have the file and profile what the code is doing.

5 Likes

While the performance is better than the CPU that we had to deal with for the past years but it’s nowhere near 2.7x yet especially for viewport playback as the others have mentioned.
Hopefully it’ll get better since this is WIP, but it looks like there is no option ,so does that mean it’ll use the GPU automatically?.

I am currently looking into performance so hopefully the situation will be a lot better next update. And yes, we automatically use the GPU, as long as the modifier is the last in the stack.

12 Likes

You may not be directly involved with this as it is mostly UI (as I understand it), but any idea what happened to making subdivision an object property ?

And excellent news on OSD integration !

Cheers,

Hadrien