Improve liquify performance
Open, NormalPublic

Description

See https://bugs.kde.org/show_bug.cgi?id=350394

We could perhaps improve the performance of liquify:

09:28:30 < Smjert> boud, dmitryK: well Liquify is "slow" for me too, as in.. everyone would expect 
somewhat realtime reaction when you drag the mouse.. that been said i don't have 
recent experience with other software that has liquify too, the closest thing i can 
think of is smudge
09:28:49 < dmitryK> boud: and yes, PS liquify works much faster. I might need to spend a couple of 
 days on trying to invent something
09:29:22 < boud> okay, that's a project for later then :-)
rempt created this task.Aug 11 2015, 7:32 AM
rempt updated the task description. (Show Details)
rempt raised the priority of this task from to Needs Triage.
rempt assigned this task to dkazakov.
rempt added a project: Krita.
rempt moved this task to Backlog on the Krita board.
rempt added a subscriber: rempt.
woltherav updated the task description. (Show Details)Aug 11 2015, 5:14 PM
woltherav triaged this task as Low priority.Aug 11 2015, 5:22 PM
woltherav added a subscriber: woltherav.

The interesting bits about this are that liquify speeds up when zoomed out, and when using a 'small' layer. So if you select an area and work on it, it's super fast and responsive. It probably has to do with the amount of points that need to be taken into acount. Like we're painting over some hyper-dense warp-mesh. (Not surprising given that it was based on the cage deform).

If the current technology doesn't work right, another possibility is to consider is the image-based deformation that Blender(and many 3d renderers) has. You take a picture and use that to drive the amount of translation going on per pixel, with the green channel driving the Y-deformation and red drives the X-deformation.

rempt raised the priority of this task from Low to Normal.Sep 26 2016, 2:16 PM
rempt edited projects, added Krita: Next Features; removed Krita: Stable bug fixes.

Possible solutions:

  1. Implement FPS compression like it is done in the Move Tool
  2. Implement ROI, which would cover changed areas only. Therefore only changed parts would have to be rerendered via the deformed mesh algorithm.