Hi again @jedsmith,
and thanks for your detailed comments!
Some answers below (and sorry in advance for the long text!)
Actually, you should be able to see the effects in the preview, provided things are set up correctly. Now, I fully acknowledge that this might involve tweaking multiple things in multiple places, but I found no better way (yet) given the constraints of the program (basically, we have to work with ICC profiles because that’s what the photography ecosystem is built around, and we would like to stay as cross-platform as possible). In a nutshell, ART always takes the output profile into account when displaying the preview. Therefore, the transform chain is not simply “working profile → display profile”, but rather “working profile → output profile → display profile”. This is IMHO more useful, and it more accurately represents the fact that the output profile is part of the image data.
However, for this to work properly, you need a display profile that can show you the differences. If you have a profile that, say, clips everything to sRGB, then I would expect no difference. But if you have a wide gamut screen with a suitable profile, you should be able to see some difference in some cases. A further complication here is in how different OSes do colour management. On Linux, you simply select the right profile from the dropdown menu at the bottom of the editor window in ART. On Windows, it should also be the same, though I recently learned about auto color management which might complicate things. Finally, macOS does colour management system-wide. In this case, you can select the display gamut that ART will assume under “Preferences → Color Management”.
I did notice one thing, which is that if you use the sRGB Output ICC Profile (Ugh…
ICC always makes me feel queasy), it is applying the sRGB Encoding function, not the sRGB Display EOTF. This results in the shadows being crushed undesireably in the resulting image.
This might just be my ignorance showing, but I thought this problem was about the display profile, not the output profile. In other words: shouldn’t the ICC toolchain simply undo the transfer function of the output profile, and then apply the selected display profile? In other words, the TRC of the output profile should not matter at all (well, except for encoding efficiency and avoiding banding artifacts when the output precision is limited, of course) in the output look, or am I wrong? If so, this is something that should be changed outside ART, by selecting a different display profile.
Though again super confusing that you need to crank up the display peak luminance, and clip the highlights massively only for it to be encoded properly in PQ at after you export… Something to get used to I guess.
Great that it’s working! I agree this is not optimal, but unfortunately getting this to work inside ART in a cross-platform way would be a non-negligible amount of work. Using custom processing profiles that are automatically applied on output as suggested here might help but I agree that it’s still suboptimal.
Just wanted to mention it in case it might be possible (Although I’m actually quite impressed at how fast and responsive it is processing on the CPU in ART so nice work on that!)
We use mostly the vanilla CTL interpreter from ACES. There are two optimizations that are applied and that are important:
- we parallelize computations based on the number of available CPUs
- we use 3dLUTs to speed up the generation of previews. (Note that there was a regression introduced recently about this, so you might want to pull from master if you built from source)