This the artifact appears when there is a big difference between the
restored vertex and the no restored one because we are only tagging the
normal to update in one of those vertices. This is the most
straightforward fix. The other solution could be also tagging to update
the neighbor vertices using the topology iterators, but I think that is
going to be much slower.
Details
Diff Detail
- Repository
- rB Blender
- Branch
- T66312 (branched from master)
- Build Status
Buildable 5096 Build 5096: arc lint + arc unit
Event Timeline
This fixes the topology but not the visual preview of the undo:
anyhow I think we can live with that :)
@Tonatiuh de San Julián (Tonatiuh) how did you run into this?
@Pablo Dobarro (pablodp606) did you run into this in your tests?
This optimization was introduced in rB2c2d52c2dea1: Optimize sculpt undo, avoid redundant updates. That commit fixes a more serious issue where GPU buffers for all nodes where updated on undo.
This kind of more fine grained tests to update only a subset of vertices within a node is not important, and so the patch looks fine to me.
But someone should verify that painting on a small part of the mesh and then undoing only does normal and GPU buffer updates for a few nodes and not all of them.
Seems to work ok.
Noticed some room for further optimization and added to T68873: Highpoly mesh sculpting performance. We are pushing more nodes for undo that really necessary, which means more memory usage and slower undo.
