Bug 473853 - Artifacts when dragging a layer under a filter that produces new pixels outside the paint layer contents rect
Summary: Artifacts when dragging a layer under a filter that produces new pixels outsi...
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: Filter Layers (show other bugs)
Version: git master (please specify the git hash!)
Platform: Manjaro Linux
: NOR normal
Target Milestone: ---
Assignee: Dmitry Kazakov
URL:
Keywords: regression
Depends on:
Blocks:
 
Reported: 2023-08-28 12:57 UTC by Deif Lou
Modified: 2024-02-28 18:09 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments
artifacts (136.50 KB, image/png)
2023-08-28 12:57 UTC, Deif Lou
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Deif Lou 2023-08-28 12:57:28 UTC
Created attachment 161239 [details]
artifacts

SUMMARY
If we put a filter layer on top of some other layers, some artifacts appear when moving those bottom layers if the filter produces new pixels and extends the contents rect (blur filters, phong bumpmap, pixelize, etc.)

STEPS TO REPRODUCE
1. open a 1 layer image
2. put a gaussian filter on top of the layer with, say, 50px radius
3. move the layer below with the move tool

OBSERVED RESULT
See atachment. some traces are left behind, not erased.

EXPECTED RESULT
No traces.

SOFTWARE/OS VERSIONS
Docker Image
Comment 1 Deif Lou 2023-08-30 19:37:18 UTC
Same thing seems to happen if I put to paint layers in a group and apply a filter mask to the group.
Comment 2 Dmitry Kazakov 2023-08-31 11:50:31 UTC
Git commit 67c02bc306dcb16165e2e8475239cc02c5e1a3cc by Dmitry Kazakov.
Committed on 31/08/2023 at 13:50.
Pushed by dkazakov into branch 'master'.

[not for 5.2.0] Fix artifacts when moving a layer under a blur adjustment layer

Basically, KisRefreshSubtreeWalker should explicitly reset change rect
**only** when used in standalone mode. Inside KisFullRefreshWalker
mode the change rect is calculated in advance by the parent walker.

M  +1    -1    libs/image/kis_full_refresh_walker.h
M  +5    -2    libs/image/kis_refresh_subtree_walker.h

https://invent.kde.org/graphics/krita/-/commit/67c02bc306dcb16165e2e8475239cc02c5e1a3cc
Comment 3 Dmitry Kazakov 2024-02-28 18:09:51 UTC
Git commit a0951dd434346fe96ef4f6afdfaa9d4d7bf41187 by Dmitry Kazakov.
Committed on 28/02/2024 at 12:37.
Pushed by dkazakov into branch 'kazakov/for-5.2'.

[not for 5.2.0] Fix artifacts when moving a layer under a blur adjustment layer

Basically, KisRefreshSubtreeWalker should explicitly reset change rect
**only** when used in standalone mode. Inside KisFullRefreshWalker
mode the change rect is calculated in advance by the parent walker.

M  +1    -1    libs/image/kis_full_refresh_walker.h
M  +5    -2    libs/image/kis_refresh_subtree_walker.h

https://invent.kde.org/graphics/krita/-/commit/a0951dd434346fe96ef4f6afdfaa9d4d7bf41187