https://bugs.kde.org/show_bug.cgi?id=495329

            Bug ID: 495329
           Summary: Incorrect gradient map behavior at high color depth
                    with linear RGB
    Classification: Applications
           Product: krita
           Version: 5.2.6
          Platform: Manjaro
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: Filters
          Assignee: krita-bugs-n...@kde.org
          Reporter: valerie.k.he...@gmail.com
  Target Milestone: ---

Created attachment 175209
  --> https://bugs.kde.org/attachment.cgi?id=175209&action=edit
The Krita file containing figures A, B, and C (see report).

Attached is a Krita document containing several example images. The document is
RGBA, but the example images are grayscale, to make it easier to illustrate
this bug. You'll have to open this file up in Krita and follow along to
reproduce.

The paint layer containing FIGURE A has a GRADIENT MAP applied as a filter
mask. This gradient map is a simple two-stop gradient from BLACK at 0% to WHITE
at 100%. Because the layer is already grayscale, applying this gradient map to
FIGURE A results in no visible change. This is good! That's the expected
behavior.

Now go to IMAGE->CONVERT IMAGE COLOR SPACE. Set the DEPTH to "16-bit
integer/channel" and the PROFILE to "sRGB-elle-V2-g10.icc" (this should be
selected automatically when increasing the bit depth). Click OK.

EXPECTED BEHAVIOR: 
FIGURE A should appear completely unchanged, as in FIGURE B.

OBSERVED BEHAVIOR: 
FIGURE A appears altered with what seems to be an incorrect GAMMA CURVE, as in
FIGURE C.

ADDITIONAL INFO:
Try toggling the gradient map off. You'll see that the underlying image has
been correctly converted to the linear RGB color space. In other words, the
problem is somewhere in the gradient map filter: it seems like it's failing to
correctly map the input values onto the interpolated output values (if I may
guess).

Now, try setting the bit depth back to "8-bit integer/channel", but set the
profile to "sRGB-elle-V2-g10.icc". Note how the gradient map works as intended,
despite the linear RGB color profile!

Next, set the bit depth back to "16-bit integer/channel", but set the profile
to "sRGB-elle-V2-srgbtrc.icc". Note how the gradient map works as intended,
despite the high bit-depth!

In other words, the problem appears to be with the COMBINATION of high
bit-depth and linear RGB. To summarize:

8-bit, sRGB: Gradient map works as expected.
8-bit, linear RGB: Gradient map works as expected.
16-bit+, sRGB: Gradient map works as expected.
16-bit+, linear RGB: Gradient map misbehaves!

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to