Summary: | Smudge brushes have buggy interaction with Value option on 16-bit float and above color depths | ||
---|---|---|---|
Product: | [Applications] krita | Reporter: | tomtomtomreportingin |
Component: | Brush engines | Assignee: | Dmitry Kazakov <dimula73> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | dimula73, griffinvalley |
Priority: | NOR | Keywords: | regression |
Version: | 5.0.0-beta1 | ||
Target Milestone: | --- | ||
Platform: | Appimage | ||
OS: | Linux | ||
Latest Commit: | https://invent.kde.org/graphics/krita/commit/5dada1e5047d2194a473c611860996d32e0e0aaf | Version Fixed In: | |
Sentry Crash Report: |
Description
tomtomtomreportingin
2021-08-30 12:18:36 UTC
I don't think this is a duplicate of https://bugs.kde.org/show_bug.cgi?id=437430 as although disabling canvas acceleration relieves the problem, there are still subtle hints of blue, which don't accur in Krita 4. Ok, this is rather tricky. so the problem seems to be with the HSV transform itself. When checking where the color goes wrong, it is normal before the HSV transform is applied, and is completely borked afterwarts, complete with overflow. However, I can't for the life of me figure out why the color smudge is THAT much different than the pixel brush. The pixel brush IS also affected, but it's very minor in comparison. Similarly, the HSV filter seems to work as expected. Turning the compatibility mode on or off does not seem to make a difference. I think this is a clamping issue, but the obvious way to clamp did not work, and it seems the filter already implements clamping in places. My best guess is that it is in fact not the HSV transform, but rather the way we use it inside the color smudge. I already tried having it not read and write to the same paintColor.data(), but that didn't seem to make a difference. Another thing that might be related is the precisepaintdevice wrapper, though, that'd make the bug also appear in 4.4... I am at a loss... Git commit abd82cbc5f12e41a32b8d43d0ea33b802c6d492a by Dmitry Kazakov. Committed on 01/10/2021 at 11:39. Pushed by dkazakov into branch 'master'. Fix artifacts in Hue sensor in colorsmudge brush m_hsvTransform had been created before m_paintColor was converted into the correct color space. It meant tha m_hsvTransform manipulated pixels in a different colorspace (16i) instead of 16f or 32f :) M +14 -11 plugins/paintops/colorsmudge/kis_colorsmudgeop.cpp https://invent.kde.org/graphics/krita/commit/abd82cbc5f12e41a32b8d43d0ea33b802c6d492a Git commit 5dada1e5047d2194a473c611860996d32e0e0aaf by Dmitry Kazakov. Committed on 01/10/2021 at 11:41. Pushed by dkazakov into branch 'krita/5.0'. Fix artifacts in Hue sensor in colorsmudge brush m_hsvTransform had been created before m_paintColor was converted into the correct color space. It meant tha m_hsvTransform manipulated pixels in a different colorspace (16i) instead of 16f or 32f :) M +14 -11 plugins/paintops/colorsmudge/kis_colorsmudgeop.cpp https://invent.kde.org/graphics/krita/commit/5dada1e5047d2194a473c611860996d32e0e0aaf |