I started to re-design the rawproc curve tool to do something similar, until it dawned on me that the way I encoded the raw data left me with plenty of headroom to mangle the data before it had to blow past display white. So I shifted my attention to a data-bounded histogram mode, which I find to be a lot more useful. @Carmelo_DrRaw demostrated a nice implementation of such a few weeks ago in a thread here.
I still think there’s potential in increasing the working resolution of a curve tool at the low end.
With regard to working the image after gamma encoding, I’ve been thinking about this and I’m still not warm to it. The movie folk essentially do this with log-encoded raw, but they have considerations and constraints we still-image photographers don’t have to worry about. I’m experiencing the most success since I’ve started this whole workflow journey in working my images in linear, saving the display transform to the end, but looking at the result at the end of the toolchain as I work, including the display gamma transform. In rawproc, here’s what that looks like:
In the upper-left hand pane is the toolchain, starts with the raw at the top and works down, each tool applied to the result image of the previous tool. The selected tool’s parameters are presented in the lower-left pane, in this case a standard control-point tone curve. The checkbox designates which tool’s result is in the display. In this case I’ve checked the sharpen tool, at the end of the toolchain, for display. Of particular note to this discussion is that, whatever tool’s image is checked for display, that image is routed through the display profile.
So in this example, the display is of the final sharpen tool output, routed through the display transform with its primaries and (gamma) tone curve. Note the histogram, it’s of the checked tool (sharpen) image, before the display transform, decidedly linear.
That gamma transform is all about meeting the display needs. My display profile includes it, so I see no need to address it in my toolchain…
Oh, the curve tool depicted works the image between 0.0 and 1.0, but the spline algorithm provides relevant lookups well past either end. I can’t see what the curve looks like less than 0.0 or greater than 1.0, but I have an idea of it based on the spline behavior i know. Yes, not exactly user-friendly, but I’ve warmed to it…