Bug 459530

Summary: Animated transform masks use low-quality bilinear interpolation when doing final rendering
Product: [Applications] krita Reporter: ramskullsart
Component: Tools/TransformAssignee: Dmitry Kazakov <dimula73>
Status: CONFIRMED ---    
Severity: normal CC: dimula73, griffinvalley, tomtomtomreportingin
Priority: NOR Keywords: triaged
Version: 5.1.1   
Target Milestone: ---   
Platform: Microsoft Windows   
OS: Microsoft Windows   
Latest Commit: Version Fixed In:
Attachments: left is observed result, right is expected result

Description ramskullsart 2022-09-22 14:29:18 UTC
Created attachment 152337 [details]
left is observed result, right is expected result

SUMMARY
Trying to use a transform mask on an image with nearest neighbor setting does not respect the setting when trying to use it with animation curves. It works with regular transform mask. While it takes some time to show the result it DOES render eventually. I've tried waiting quite a while for animated transform and it shows the desired result but as soon as I move to the next frame that disappears.

STEPS TO REPRODUCE
1. Add a transform mask to a layer
2. Set filter to "nearest neighbor"
3. Use animation curves to perform any transformation (skew, shear, rotate, scale, perspective)
4. Wait for the transform to render
5. Go to another frame
6. Go back to last frame

OBSERVED RESULT
Result comes out blurry

EXPECTED RESULT
Not blurry

SOFTWARE/OS VERSIONS
Windows: 11
Comment 1 wolthera 2023-01-16 14:48:57 UTC
Hi, thank you for your report.

I can confirm with the Krita Version: 5.2.0-prealpha (git 5c98a72) Appimage with Qt 5.15.7
Comment 2 tomtomtomreportingin 2023-04-30 15:55:30 UTC
By extension this bug also applies to clone layers with transform masks. It even occurs when simplying mirroring horizontally.
Comment 3 Dmitry Kazakov 2023-10-16 15:30:25 UTC
The problem is a bit more complicated than just "use nearest neighbour".

We have two ways of rendering the animation masks, one for quick on-the-fly rendering, and the other one is final high-quality render. Currently, animated transform masks can do high-quality rendering only for the "current frame" (and that high-quality render will use NN-settigns). But when rendering a transform mask into video file or cache, the mask will always use bilinear  method. That is kind of "not implemented" kind of thing.