Created attachment 127487 [details] Example image of artifacts SUMMARY This happens for versions 4.2.0 onwards but does not happen in version 4.1.7. If a simple painted shape has any blur filter applied then artifacts are created in the RGB content and these can be revealed by splitting the alpha out into a mask. A .png file is attached (blur-artifacts-revealed.png) that shows an example. Here is a .kra file with further examples for convenience of investigation: https://www.dropbox.com/s/8ipsb35hsrgeet7/Sample-Blur-Artifacts.kra?dl=1 This was made using the 5.0.0 pre-alpha appimage 08-Apr git 78d1d45 STEPS TO REPRODUCE 1. On a new paint layer, paint a simple shape then apply any blur filter. 2. Do Layer - Split - Split Alpha Into Mask on that layer 3. Turn off the mask to reveal the artifacts. 4. Note that trying this with a filled rectangle of any size or aspect ratio does not give artifacts. 5. Note the 'tile' structure of the artifacts and that this is not 512 x 512 and seems to vary in size. 6. Note that varying the type of blur filter or the parameters of the blur filter does not make significant changes to the nature of the artifacts. 7. Having revealed the artifacts by alpha splitting, flatten the layer to combine the alpha with the image then reapply a split alpha into mask. Note that the artifacts are now gone. (Rendered away by the flattening?). 8. After the blur filter is applied to a layer, turn off the background layer and export the layer as a .png with alpha preserved. Then open that .png file and split the alpha out to a mask. Note that there are no artifacts. OBSERVED RESULT See Steps To reproduce EXPECTED RESULT No artifacts SOFTWARE/OS VERSIONS Krita Version: 5.0.0-prealpha (git 78d1d45) Languages: en_GB, en, en, en_GB, en Hidpi: true Qt Version (compiled): 5.12.7 Version (loaded): 5.12.7 OS Information Build ABI: x86_64-little_endian-lp64 Build CPU: x86_64 CPU: x86_64 Kernel Type: linux Kernel Version: 4.19.0-8-amd64 Pretty Productname: Debian GNU/Linux 10 (buster) Product Type: debian Product Version: 10 Desktop: MATE OpenGL Info Vendor: "NVIDIA Corporation" Renderer: "GeForce GTX 750 Ti/PCIe/SSE2" Version: "4.6.0 NVIDIA 418.74" Shading language: "4.60 NVIDIA" Requested format: QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QSurfaceFormat::DefaultColorSpace, profile QSurfaceFormat::CompatibilityProfile) Current format: QSurfaceFormat(version 4.6, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QSurfaceFormat::DefaultColorSpace, profile QSurfaceFormat::CompatibilityProfile) Version: 4.6 Supports deprecated functions true is OpenGL ES: false QPA OpenGL Detection Info supportsDesktopGL: true supportsOpenGLES: true isQtPreferOpenGLES: false Hardware Information GPU Acceleration: auto Memory: 16039 Mb Number of Cores: 8 Swap Location: /tmp Current Settings Current Swap Location: /tmp Current Swap Location writable: true Undo Enabled: true Undo Stack Limit: 18 Use OpenGL: true Use OpenGL Texture Buffer: true Use AMD Vectorization Workaround: false Canvas State: OPENGL_SUCCESS Autosave Interval: 60 Use Backup Files: true Number of Backups Kept: 1 Backup File Suffix: ~ Backup Location: Same Folder as the File Backup Location writable: false Use Win8 Pointer Input: false Use RightMiddleTabletButton Workaround: false Levels of Detail Enabled: false Use Zip64: false Display Information Number of screens: 2 Screen: 0 Name: DVI-D-1 Depth: 24 Scale: 1 Resolution in pixels: 1280x1024 Manufacturer: Dell Inc. Model: DELL 1704FPV- Refresh Rate: 60 Screen: 1 Name: DVI-D-0 Depth: 24 Scale: 1 Resolution in pixels: 1280x1024 Manufacturer: Dell Inc. Model: DELL 1704FPV- Refresh Rate: 75
Indeed it does... I think what is going on is that those paintdevices aren't being initialized fully before anything is drawn on them.
Git commit fd0e0ff83d0c3b3d5e18de96d3c56a53544b6291 by Dmitry Kazakov. Committed on 28/08/2020 at 11:13. Pushed by dkazakov into branch 'krita/4.3'. Fix artifacts when doing Split Alpha after Gaussian Blur filter After applying gaussian we should not write color values into the destination device if alpha channel is null. There had already been such check, but it checked for null in 'double' space, not in the space of the destination device (which is usually 'quint8') M +29 -7 libs/image/kis_convolution_worker_fft.h M +52 -0 libs/image/kis_math_toolbox.cpp M +2 -0 libs/image/kis_math_toolbox.h https://invent.kde.org/graphics/krita/commit/fd0e0ff83d0c3b3d5e18de96d3c56a53544b6291
Git commit a3b71748b5c3a3ce57345568617e511598d6ea62 by Dmitry Kazakov. Committed on 28/08/2020 at 11:34. Pushed by dkazakov into branch 'master'. Fix artifacts when doing Split Alpha after Gaussian Blur filter After applying gaussian we should not write color values into the destination device if alpha channel is null. There had already been such check, but it checked for null in 'double' space, not in the space of the destination device (which is usually 'quint8') M +29 -7 libs/image/kis_convolution_worker_fft.h M +52 -0 libs/image/kis_math_toolbox.cpp M +2 -0 libs/image/kis_math_toolbox.h https://invent.kde.org/graphics/krita/commit/a3b71748b5c3a3ce57345568617e511598d6ea62