Some modules allow per-channel masks. exposure is one of them.
At @priort said, you can drag an instance of exposure whereever you want it. You can do the following:
- enable the exposure instance with neutral settings (exposure: 0 EV, compensate camera exposure disabled, black level correction: 0). Enable its parametric mask. Select the desired channel, and create a ramp (this will give you the contents of that channel as the mask value); use boost factor to include highlights, if needed; apply feathering if needed. For example, this is now set to mask based on the B (blue) channel (show mask is enabled):
- add another module, and make it use the exposure instance created above as the source of its raster mask. In this silly example (really, pretty bad, but I’m too lazy to find another image), I applied color balance rgb to desaturate the image, and then used the raster mask created using the dummy exposure instance to limit desaturation to the areas where the B channel has a high value (on the left: without the mask; on the right: with the mask):
I believe what you are after is a node-based editor (but I’m not sure I got that right). Try:
Node-based image editing (Cascade)
Gimel Studio: cross-platform, non-destructive (node-based) image editor (Gimel Studio)