Page MenuHome

Smooth brush is very slow while using MultiRes compared to other brushes
Open, Needs Information from UserPublic

Description

System Information
Operating system: Windows-10-10.0.18362 64 Bits
Graphics card: GeForce GTX 980/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 436.48

Blender Version
Broken: version: 2.81 (sub 14), branch: master, commit date: 2019-10-08 20:10, hash: rB6d3c34fe9d1e
Worked: Used to be faster earlier in the Alpha if I recall, but now it is barely usable even on lower subdivs.

Short description of error
Smoothing your sculpt with MultiRes on is not a very pleasant experience at the moment. Incredibly laggy when compared to all other brushes, especially with the latest patches that vastly improved brush speed and undo while using MultiRes. Since smoothing is such a common action to take while doing any sculpt work, it would be much appreciated if this was taken a look at.

Exact steps for others to reproduce the error

Details

Type
Bug

Related Objects

Event Timeline

I implemented the smooth brush using the sculpt mesh API in P1136 and it is still unusable slow. @Brecht Van Lommel (brecht) Could this be related to the latest multires changes?

Brecht Van Lommel (brecht) lowered the priority of this task from Needs Triage by Developer to Needs Information from User.EditedThu, Oct 10, 10:26 AM

My recent multires changes at least should not have affected smoothing performance, only new tools that did not support multires before. Please compare with 2.80 to check if this is actually a regression.

@Pablo Dobarro (pablodp606), the multires sculpt API is not particularly fast, there is room for optimization. So I wouldn't necessarily expect it to be faster, it could be slower too. There may be an unknown bottleneck here, use a profiler to figure out which part is actually slow.

multires_stitch_grids() may be part of the problem, it averages coordinates between grids. Since the neighbor iterator does look across grid boundaries averaging of coordinates should ideally not be needed. However smoothing does not make a proper distinction between new and old coordinates, so cracks will still appear.

Doing it once for all iterations may work. I guess ideally this should use old/new coordinates.

In the video strength is 3.0, which means it will do 12 iterations for every brush step, which is also just fundamentally a lot of work.

@Brecht Van Lommel (brecht) I can assure you, having the setting at 1.000 does not make a difference on my machine (I get a buttery smooth smoothing at 3.000 on non-MultiRes meshes at far higher polygons numbers than this). It is only around 0.600-0.700 when the brush behaves at acceptable levels of lag.

This is a regression from 2.79, but it is also slower than in 2.80.
2.79 -> 2.80 -> 2.81 (with TBB)