Bug 407251

Summary: Converting animation color space from 16bit to 8bit creates artifacts in onion skin
Product: [Applications] krita Reporter: Tiar <tamtamy.tymona>
Component: Color modelsAssignee: Krita Bugs <krita-bugs-null>
Status: RESOLVED FIXED    
Severity: normal CC: ghevan
Priority: NOR    
Version: nightly build (please specify the git hash!)   
Target Milestone: ---   
Platform: Microsoft Windows   
OS: Microsoft Windows   
Latest Commit: Version Fixed In:
Attachments: Animation test file before converting to 8bit
Screenshot of visible artifacts

Description Tiar 2019-05-05 18:58:44 UTC
Created attachment 119858 [details]
Animation test file before converting to 8bit

SUMMARY
If you convert animation from higher bit depth than 8bit, it will show artifacts on onion skin.


STEPS TO REPRODUCE
1. Make an animation in, let's say, 16bit/float color space (can be the default one).
2. Turn on onion skin.
3. Convert image color space to 8bit int color space (can be the default one).
4. Switch time to another keyframe.

OBSERVED RESULT
Onion skin is full of weird artifacts. Frames are both red and green in the same time.

EXPECTED RESULT
Onion skin colors the keyframes in consistent manner.

NOTES
If you turn on and off onion skin, it doesn't start working correctly, the artifacts are still visible.

If you undo convert color space, the artifacts are still visible until you switch the keyframe.

If you reopen the image (save, then open the saved image), onion skin looks correct.


Possible duplicate: bug 405753
Reason to not include the bug there: bugs mentioned in bug report 405753 are all a result of a correct application of the composition mode used to paint onion skin, while this bug report shows a problem in the composition mode code itself. Change in the method of compositing onion skin would only hide the problem.

Possible duplicate: bug 404133
Why: the artifacts looks very similar
Reason to create a new bug report: the bug report 404133 mentions problems on 32bit images that were not reproducible on 16bit float images. The problem described in this bug report doesn't (need to) involve 32bit float color space at all. Also the problem mentioned in this bug report was also present in 4.1.7, while bug 404133 is a regression between 4.1.7 and unreleased yet 4.2.0.



OS INFORMATION
Krita

 Version: 4.2.0-pre-alpha (git fb08951)
 Languages: pl, en_US
 Hidpi: true

Qt

  Version (compiled): 5.12.2
  Version (loaded): 5.12.2

OS Information

  Build ABI: x86_64-little_endian-llp64
  Build CPU: x86_64
  CPU: x86_64
  Kernel Type: winnt
  Kernel Version: 10.0.17134
  Pretty Productname: Windows 10 (10.0)
  Product Type: windows
  Product Version: 10


Hardware Information

  GPU Acceleration: auto
  Memory: 16191 Mb
  Number of Cores: 12
  Swap Location: C:/Users/Agata/AppData/Local/Temp

OpenGL Info
 
  Vendor:  "Google Inc." 
  Renderer:  "ANGLE (Intel(R) UHD Graphics 630 Direct3D11 vs_5_0 ps_5_0)" 
  Version:  "OpenGL ES 3.0 (ANGLE 2.1.0.57ea533f79a7)" 
  Shading language:  "OpenGL ES GLSL ES 3.00 (ANGLE 2.1.0.57ea533f79a7)" 
  Requested format:  QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize 10, greenBufferSize 10, blueBufferSize 10, alphaBufferSize 2, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QSurfaceFormat::bt2020PQColorSpace, profile  QSurfaceFormat::CompatibilityProfile) 
  Current format:    QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 10, greenBufferSize 10, blueBufferSize 10, alphaBufferSize 2, stencilBufferSize 8, samples 0, swapBehavior QSurfaceFormat::DefaultSwapBehavior, swapInterval 0, colorSpace QSurfaceFormat::bt2020PQColorSpace, profile  QSurfaceFormat::NoProfile) 
     Version: 3.0
     Supports deprecated functions false 
     is OpenGL ES: true
Comment 1 Tiar 2019-05-05 18:59:18 UTC
Created attachment 119859 [details]
Screenshot of visible artifacts
Comment 2 vanyossi 2019-05-08 04:04:23 UTC
Artifacts are shown if bitdepth is changed in a document.

There are no artifacts if the image is created as 16bit and we kee that color space. If we change to other bit depth, artifacts appear.

In the same way, working on a created 8 bit image works well, but if colorspace is changed to 16bit, artifacts are shown.

NOTE: artifacts will only show after converting colorspace and selecting another active animation frame, this forces re-rendering of onion skin frames.

Artifacts dissapear if colorspace is converted back to the color space/bit depth used when the image was created.


WORKAROUND:
- Close and reopen image after changing image colorspace.

Confirming this.
Comment 3 Dmitry Kazakov 2019-11-18 15:22:28 UTC
Git commit 1ba0a6baf17237bdd68959155db944d23a0abb58 by Dmitry Kazakov.
Committed on 18/11/2019 at 15:22.
Pushed by dkazakov into branch 'master'.

Fix color space of onion skins cache device

M  +8    -1    libs/image/kis_onion_skin_cache.cpp

https://invent.kde.org/kde/krita/commit/1ba0a6baf17237bdd68959155db944d23a0abb58
Comment 4 Dmitry Kazakov 2019-11-18 15:23:41 UTC
Git commit 1e4b0878ec1c4d4be6f89a57c1856e3a1496012e by Dmitry Kazakov.
Committed on 18/11/2019 at 15:22.
Pushed by dkazakov into branch 'krita/4.2'.

Fix color space of onion skins cache device

M  +8    -1    libs/image/kis_onion_skin_cache.cpp

https://invent.kde.org/kde/krita/commit/1e4b0878ec1c4d4be6f89a57c1856e3a1496012e