I'm in search of a practical and orthogonal solution that preferably:

  • Affect any blending mode.
  • Can produce the most correct possible additive mixing.
  • Produce the less posterization possible on mixing and possible over-mixing even in really low intensity values.


Working in a linear and/or high precision is not perfect.

  • It turns operations more propense to posterization, (dark values suffer the most), for example, left canvas is a mix over 16 bit XYZ, right one is 8 bits over linear sRGB, both visualized perceptually in nonlinear sRBG:

It would be great to work in 8 bits, it would result in a more performant canvas.

  • It will not produce absolutely real additive color math as you will not get a constant intensity value, for example:

enter image description here The expected blend is in the small gradient on top, zero intensity variation.

  • Mix tends to lighter values, for example nonlinear sRGB tends to darker values, this is an advantage in nonlinear, we are more aware low intensity changes and it plays nice in terms of contrast construction, the left one is linear color mix and right one is non linear, both, top smudge without pressure variation from left to right and reverse on bottom also without pressure change:

enter image description here

working on bigger colors spaces than linear with high precision turns mixing better but still don't give much more benefit. For sure linear is not as bad as nonlinear mixing but it would be great to get something better.

Im totaly open for programs that automatically linearize or do any auto-trick if it expose any real advantage in terms of mix quality or performance.

Apart from that, even memory footprint is not of my interest.It is just that, in fact, behind the scene it is just doing the same, calculating in a linear RGB high precision internal stack, and maybe worst, adding round precision errors and making me more confuse about some possible problem in painting process, another point is, I'm better served if I understand it.

The nearest I've got from something really interesting in terms of color mixing was with CIE XYZ working color space mixing, as I've got results like:

enter image description here

Until you get hitten by CIE XYZ weirdness:

enter image description here

So, I'm still open to new processes, as always I can gain something in artistic terms from it, I'm still examining working in CIE XYZ with limited color selectors. Or any suggestion given here.

And if there is some wrong perception of mine going somewhere I would appreciate a lot.

1 Answer 1


I do not fully understand your question.

But at the end, the posterization is not produced by "mixing". Is the result of "displaying".

If you have on one zone a value of r255g128b0 and an adjacent zone of r255g129b0 and it shows some posterization there is nothing you can do about it. You simply have the nearest possible values and no way to put a middle ground color. It does not matter how they mixed together.

The only way overcome this limitation, to my knowledge, is to "dither" the transition. This is, making a random pattern of pixels into the next zone.

Posterization is also a perceptual effect, not only a technical one. If you do not have distractors, like in a blue sky you could notice more than in a picture of a forest. So it depends on the area and the relationship in values.

This can depend on the quality of the display, the contrast, the brightness, the ambient light, or even the mood of the observer.

But yes, the RGB model is not linear in its components, it is logarithmic, and the values change depending on the channel.

Here are some RGB colors but arranged as HSB circles.

enter image description here

In theory, they have the same "brightness" but total brightness on a blue channel is not the same as 100% brightness on the green channel.

When converted to greyscale we can see obvious differences. The R+G produces yellow that obviously, it is more bright than blue.

enter image description here

There is a color solid that tries to address this perceptual brightness. The Munsell color system https://en.wikipedia.org/wiki/Munsell_color_system

where, in theory, each level represents similar values. But probably the conversion needs to be made with a specific matrix of values.

I am not a programmer, but in my opinion, I would look for a curve to be adapted to each R+G+B channel separately, It could be applying different gamma values https://en.wikipedia.org/wiki/Gamma_correction to each channel for example, or looking for a different logarithmic curve.

  • Sure but it have its part in the process, it can be a precision problem, you will not want to math on CIE XYZ with 8 bits, or any big color space like Aces, you will end getting huge posterization visually when bringing the working space back to nonlinear sRGB (monitor). The intent of the question is finding a smaller burden in terms of performance or better quality, as linear sRGB will not produce very correct colors mixing too, will add some extra info on the question Commented Apr 11, 2018 at 3:30
  • I like near perceptual color lightens uniform spaces for color selection in some cases, like luma weighted by rec 709 coefficients but I believe it wouldn't be a good idea to mix in such a space as we have too wide contrasts variations especially at extremities of the lightness range. Commented Apr 11, 2018 at 5:29
  • The 8bit rgb space does not magically get more resolution, wether you dither in 8bits or use 16 bits then dither on conversion to 8bits does not do any difference. the difference really is in dithering nothing else. wether you do it up front or not does not matter, @RomuloPBenedetti. You dither or have mach lines. Also there is no correct way to blend.
    – joojaa
    Commented Apr 11, 2018 at 5:59
  • It is not a built gradient with gradient tools, its about artistic brushes smudging, duling and so doing repetitive math operations over it, and most probably the repetitive smudging is the problem (unavoidable, traditional paint is about mixing), as in such case you can stretches the gradient too much to get good perceptual conversion to nonlinear sRGB capabilities... There is no intentional dithering running there, it is just smudge tool smudging 2 solid colors. Commented Apr 11, 2018 at 6:05
  • @RomuloPBenedetti You can not really generalize. It really depends on what application you use and how you use it. The exact algorithms it uses. There is no reason why smudging should do anything different in different working spaces. It literally depends on the way your application is implemented. Also smugding is not really the reasonable way to blend things.
    – joojaa
    Commented Apr 11, 2018 at 6:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.