split post due to too many links
The caveats are that for best results you need a 100% opaque brush and disable some settings such as anti-aliasing, etc (anything that uses non-linear blending). Despite this, the brushes you can make are extremely useful since the “smudge” setting can effectively stand-in for opacity in a lot of ways. So, mapping smudge to pressure is a pretty good option. I have a lot of images and videos on my site demonstrate these.
Although Scott’s work talks a lot about Subtractive mixing, it finally clicked with me that this would work for normal blending too (or additive, etc); it’s exactly the same concept as RGB but a lot more lights. So, my MyPaint patch can be a cool learning tool since you can slide the sliders to switch from RGB to Spectral simultaneously while switching from Normal to Subtractive mode. By preventing absolute 0 there isn’t much issue with Subtractive’s multiply method.
There are a few other settings that aren’t as exciting; I allow tweaking the blend result chroma and luma via HCY space depending on the hue angle difference of the two colors. This was an attempt to increase the saturation cost when blending dissimilar hues, but since I can reverse that process it becomes more interesting (create surprising flares of pure saturated colors, for instance).
Another cool feature extends the usefulness of a patch by Anna TImm that provides us with brush offset settings. Anna’s patch allows creating wide flat brushes since the dabs can be offset by some pattern to the either side of our path. I’ve added a settings called “smudge buckets” that adds 10 additional smudge states. So when you offset dabs into, say, 11 “bristles”, via a stepped-waveform graph on a random number input source , you can apply that same exact pattern to control which smudge bucket is used for those offset dabs (correlating particular dabs to a particular smudge bucket/state). The result? Each “bristle” picks up its own unique color from the canvas and smears that along its own path. This is in contrast to the default singular smudge state that averages everything into one bucket, muddies the colors and causes major problems when blending near the edges of objects (merely nicking the edge of a colored object could instantly affect the color of the entire brush instead of that one particular bristle).
Another project I’m working on (with some coaching by Troy S is getting OpenColorIO integration within MyPaint, and allowing scene-referred painting as well as the obvious benefit of display color management. Initial patch is here, which does the basics of transforming the drawing canvas and just about all the UI from sRGB TRC to your particular display via your provided 3DLUT. The next step is to get the internal reference a numpy32 float array and allow selecting you color space. Also, switching cairo to use RGB30 for the display GUI should help prevent issues with wider gamuts.
I would love any feedback or support of these endeavors, fork my code, fix the stuff, etc