I'm generating new blending modes for Krita

If you can implement softdodge and softburn, flatlight is just the piecewise combination of the two, split along the FG=BG diagonal. Since both softdodge and softburn are piecewise themselves about the other diagonal, there end up being four mask regions.

% conceptual 'flatlight'
topmask = FG>=BG;
R = softdodge(FG,BG).*topmask + softburn(FG,BG).*(1-topmask);

As far as performance in linear RGB, I really haven’t ever explored that.

The LCH/HuSL/HSY modes aren’t something I expect would translate well, or at least not in the same way I’ve implemented them. For example, IMBLEND uses some unconventional features of the LCH conversion tools due to the way IMBLEND is expected to be used. Specifically, IMBLEND’s inputs and outputs are always RGB of standard data range. It does chroma truncation in the polar model before converting back to RGB to keep everything in-gamut and limit hue/lightness distortion. This works sufficiently for a single conversion, but results in chroma compression with repeated use. Implementing these blends in an environment where non-destructive working methods are possible would probably render my code a poor reference.

The HuSL/HSY conversions don’t have the same problem, but I have a feeling that most people would find them superfluous.

As much as I think that the parameterization is a good feature, I don’t think I can reasonably expect it to catch on in existing software. While many of the modes unique to IMBLEND are designed around the flexibility, some do not necessarily require it. I might find it objectionable to use them without that flexibility, but I’m basically the only person on earth who has used them long enough to develop such expectations.

Modes like ‘flatlight’, ‘easydodge’, ‘easyburn’ can work well with defaults. Consider that I’ve parameterized my implementations of ‘overlay’ and ‘linear light’, and yet people use conventional versions of these blends every day. Others like ‘superlight’ might work sufficiently at some other non-default parameter value. It’s modes like ‘near’, ‘far’, ‘curves’ and the mesh modes that are the sort that are too dependent on their parameter to be useful without it.