Performance issues and subdiv modifiers

Hot rundown of my situation. After armature parenting the mesh to the DEF bones, I rotated the shoulder bone and the performance started lacking while in pose mode (and object mode). The armature mod is above the subdiv mod.

The subdiv levels of all objects are either 1 or 2, aside from the hair scrunchy which has 4. I changed the simplify settings in the render performance tab to be a max of 2 which did little to performance. Lowing it incrementaly made it better, and reducing it to 0 made it super smooth. If I'm not mistaken, Wayne didn't make any adjustments to subdiv levels, other than making sure the armature mod is above.

A few Q's: And if it makes any difference, I have an RTX 3080 Ti, and an AMD Ryzen 9 5900X in my pc setup - and I've checked for cpu bottlenecking (To my best understanding), and I have the render engine set to cycles with gpu for device. The undo steps in system prefs is set to 16, and I believe I have followed all the steps Wayne has made including being in material preview mode.

- What could I do in Blender do to improve performance if I weren't to adjust my subdiv levels?

- Is there anything that I could do outside of Blender? (I'm not a computer wizard so I'd have to learn about how to change my cpu and gpu settings etc etc)

- Is it standard practice to change subdiv levels when rigging? - Would this have a negative affect when it comes to weight painting in regards to seeing how things should normally behave when the subdiv is at its intended value? Ie Would it be difficult to tell what is being manipulated if the subdiv is essentially disabled?

For the time being, until I can find a fix, I have quick favourited the simplify check box and will swap back and fourth when making big moves.

If anyone has any thoughts or advice that'd be great! Cheers!

1 love
Reply
  • Dwayne Savage(dillenbata3) replied

    Are you talking about rigging or animating? Rigging is usually done in solid shading mode(Z->Solid). As long as the subdivide Surface modifier is after the armature modifier then there isn't any impact on weight painting. 

    As for things outside of Blender, make sure there isn't any other programs running in the background. make sure there isn't anything using a lot of resources. Like bit tracker extension for chrome. For some reason this takes up a lot of RAM when I open chrome. 

    1 love
  • Martin Bergwerf replied

    Yeah, I'd definitely not use Material Preview for this!

    The performance might also (partly) be a Blender Version issue; in 4.2, for instance, EEVEE is 'new-born'  and Material Preview uses EEVEE...

    And Simplify has different Settings for Viewport and Render; Render affects only actual Renders! Everything else (including Material Preview and Render Preview) falls under Viewport.

    But also, if only the scrunchy has Subdiv Level 4 and the rest is not higher than Level 2, setting Simplify to a Max Level of 2 won't have much effect.

    2 loves
  • Harris Clook(Yeehawcowboyletsgo) replied

    Yeah, I am referring to rigging - I think I've just been working with my head down so much lately that I'd overlooked the fact that material or render preview would definitely chew up some of the performance. 

    Martin what do you mean by Eevee being new-born?


    1 love
  • Martin Bergwerf replied

    EEVEE in 4.2 has been re-written; it is what was called EEVEE Next (working title) and still has some performance issues, compared to EEVEE in 4.1 or before, although they are being taken care of rather quickly, it seems (4.2.1 is already much better than 4.2.0).

    2 loves
  • Wayne Dixon replied

    Hey Harris, 
    Yeah you don't need to be in Material View to rig.  Solid is fine.  This will speed things up a lot.
    But usually the biggest computational costs are the modifiers....especially the sub surfs.

    Quick favouriting the simplfy is a what I do too ;)

    Always make sure it is after the armature modifier (like you mentioned), and it is ok to disable it when you need.
    When you're weight painting you aren't painting those "verts" that the modifier creates, you only paint the real vertices.
    But for some areas, for example eye lids , you will need to make sure it looks correct with the subsurfs ON.  That's because it will move surface of the mesh.
    The eyes might look closed, but then when you turn the sub surf back on, the character is squinting and can never get those lids shut.

    The Surface Deform modifier on the thigh armour adds a bit of lag too.  You can temporary disable this, but don't forget to turn it back on when you're "finished".

    Your system has better specs than mine so it should be handling it ok. I hope most of the issues are resolved if you switch to solid view.
    (I think I recorded almost all of the the course in Material View purely because Luna looks cooler)



    2 loves
  • Dwayne Savage(dillenbata3) replied

    Oh, right EEVEE Next. This might effect cycles also, but I'm not sure and I can't find the post that I learned this from. CTRL+comma or F4/Edit menu->Preferences. Then click System. Under Memory & Limits towards the bottom, change Max Shader Compilation Subprocesses to something other than 0. I'm using 4(My max thread for my CPU). This is a game changer when working on a low spec system. You shouldn't set this higher than the maximum number of threads your CPU has. I haven't found any documentation for it. I'm going base off the tool tip and only found out about it because a post. I'm not sure if it was here or at gamedev.tv.  Either way it has majorly changed the time it takes for EEVEE to calculate my materials. Like from a Minute to seconds. 

    1 love
  • Harris Clook(Yeehawcowboyletsgo) replied

    The lag only occured when I was rotating bones to get better angles while painting, but not actually while painting - which weren't super huge leg spinning movements but it was noticable. At least it wasn't like the lag I was being punished with while texture painting oh lord. But yes, changing to solid shading made huge improvements, and turning simplify on and off was a great tactic. Also re eyelids, I think you (wayne), or maybe it was pierrick on youtube, said to have them closed when modeling as it makes things easier (I'll keep it in mind when I go to give someone some lids).

    And regarding the shader compilation subprocesses, I asked chatgpt what it means and does. Dwayne if you're interested, here's what it gave me:


    What does it do?

    The "Max Shader Compilation Subprocesses" setting controls how many separate subprocesses Blender uses to compile shaders. When rendering complex scenes, especially with materials involving procedural textures, SSS, or other shader-intensive features, these shaders need to be compiled before rendering.


    Increasing the value: More subprocesses will run simultaneously, which can speed up shader compilation during rendering. However, it will also use more CPU resources. On a system with multiple cores (like yours with the Ryzen 9 5900X), increasing this number can help reduce the time it takes to compile shaders for your scenes.


    Decreasing the value: Fewer subprocesses mean less CPU usage during shader compilation, but it might increase the total time needed before rendering starts, especially in shader-heavy scenes.


    How to choose the right value:

    Since your CPU has 12 cores, setting this number close to your core count (or slightly below) should give you a good balance between performance and CPU resource management. You could experiment with a value around 8-12 for your system, depending on your scene complexity and other tasks running in the background.

    You said:

    what is the default value in blender 4.2.1?

    ChatGPT said:


    In Blender, the setting "Max Shader Compilation Subprocesses" controls the number of parallel processes used for compiling shaders. This can improve performance, especially when working in modes like LookDev or rendering with engines such as Eevee, which heavily rely on shaders. Increasing this value allows Blender to utilize more CPU threads for shader compilation, reducing the time it takes to compile complex shaders.


    In Blender 4.2.1, the default value for "Max Shader Compilation Subprocesses" is 0, which lets Blender automatically manage the number of processes based on your system's hardware. You can manually change this setting in the Preferences under the System tab if you want more control over shader compilation behavior​(Developer Forum)​(Blender Projects).


    If you notice long compilation times or system slowdown, experimenting with different values might help, but be mindful of your system’s capabilities to avoid excessive CPU load.



    **

    Anywho, cheers for the help guys! Rigging luna has been a bit of a hair pulling process, but I deleted everything and started over and got it right the second time through!


    1 love