Non-destructive colour space conversion and tone mapping as a special group

Hello there. This is my second post. I want to experiment with a workflow that I feel most intuitive that combines strengths of various colour spaces, where I can:

  1. pick colour and paint textures (plus perhaps light) in perceptual spaces like Oklab;
  2. blend, add and multiply light and textures, and apply photographic filters in linear spaces like XYZ or linear sRGB, as described in Scene Linear Painting.
  3. tonemap the blended result with adjustable exposure;
  4. go back to the stage 1 and make tweaks in Oklab, while having live preview the blended result;

Currently in Krita, two features are wanting for it to be possible:

  1. Oklab support, which is discussed in another thread here.
  2. A non-destructive method to convert colour spaces of certain layers, which is what this request is about.
  3. (Optional) have a nits slider somewhere when blending lights.

My idea is to have a special group, or a property of group that toggles conversion of layers underneath it. It can reuse the interface of the Convert Layer Colour Space dialogue as well as the OpenColorIO docker.

The tonemap group could be redundant in this specific workflow in favour of existing color management features, but currently it has all sorts of weird glitches on an SDR display and I might write a separate bug report later.


In addition, here is what the layer structure of my intended workflow might look like. Oklab denotes colour space, [Addition] denotes blend modes other than Normal:

  • Tonemap Group XYZ -> Oklab
    • Group A [Addition]
      • Conversion Group Texture A XYZ [Multiply]
        • Texture A Oklab
      • Conversion Group Light A Color XYZ [Multiply]
        • Light A Middle Grey Hue & Chroma Oklab
      • Conversion Group Light A Intensity XYZ
        • Light A Intensity Oklab
    • Group B [Addition]
      • Conversion Group Texture B XYZ [Multiply]
        • …
      • Conversion Group Light B XYZ
        • …
    • Group C [Addition]
      • …

I have experience and interest in coding, just unfamiliar with the Krita codebase. So I am posting to ask for advice, as well as opinions about the idea. Cheers.

Personally, I don’t think this is a bad idea at all, but it’s way too specialized for this forum I think. You would use it mostly for editing pictures, and that’s a no to most people here as most view Krita as for painting only here. I view Krita as more of a general purpose content creation tool geared toward creative fields (painting, game works, etc), and reinterpretation of photographs in creative manners too. I can see some niche usage for painting where you do want to change the color space interpretation and switch to LAB to modify coloring a bit with filter mask/layers. I’ll vote for this because I like having more options in Krita as always.

I probably didn’t make it clear. I am not specifically aiming at editing photo raws or cg renders, so much as painting the lights itself with artistic stylization.

In my opinion perceptual colour spaces are intuitive for artists to design, but linear physical spaces are great for naturalistic rendering. With a proper tonemapper it would take care many of the rendering nitty gritty, for instance addition of light, desaturation and hue shift (Helmholtz–Kohlrausch effect/Bezold–Brücke shift and Abney effect, or even Purkinje Effect), also introducing another layer of stylization with camera filters, a technique not uncommon in the industry albeit mostly used naively in srgb.

I wrote down my specific vision, but there are obviously more to each colour space than what I wrote or need. It do be niche for now, obviously because nobody else asked, but there has to a first, and the idea of linear painting or oklab are not unheard of either.

1 Like