Open revisionfx opened 1 year ago
This comment only addresses "White Balance, Tint" from the Issue title.
In OpenEXR 3.2 (which will be part of the CY2024 VFX reference platform) we distinguish between camera settings for white balance and tint, and what the color balance actually is. This is to accommodate difference in, e.g., tint semantics across camera manufacturers (ARRI: # of CC035 G or M filters; Sony: thousandths of delta uv on isotherm for a particular CCT) as well as the ill-defined isotherms when camera manufacturers switch from a Planckian radiator-based locus to a CIE daylight locus. The recorded camera settings let you go back and do a pickup shot (or at least, they help you try...) and the color balance lets you do color math when needed.
Camera color processing is so enormously complicated that it takes at least OpenColorIO and then perhaps the ACES Metadata File on top to express what someone evaluating the image should see.
There is working/render space and there is the color transform from a colorspace to another and yes color between cameras don't match exactly.
Most CG renders are performed internally linear (32b float or 16b float in some cases) tone wise e.g. ACES AP1 and with some CIE triangle coords like rec709/sRGB), the only typical variant is white point (D60 or D65) and tristimulus values. It's not really useful I think to work (process pixels) in camera space unless you are the file reader. I understand some elements in ray-tracing might benefit when averaging samples to work in spectral space but for camera matching eventually the camera has color filter mosaic and is essentially RGB, so spectrum modeling is sort of out of scope here I think.
This is more about Looks (parametrized with something like CDL or LUT - shaper or 3D). https://www.arri.com/en/learn-help/learn-help-camera-system/image-science/look-files
Seems CDL would be more useful when shooting raw as DP intent adding white balance as: Temperature and Tint (not explicit e.e 6300K) just normalized sliders.
Temperature (- towards Blue, + towards Yellow) - colder/warmer Tint (-towards Green, + towards Magenta)
How does one derive EV -1 etc - shooting 1 or 2 stops down to avoid too much noise in capture in dark places etc from that parameter set? (the intent is not what is shot).
Also, AE on many cameras allow to set a time interval e.g. 3-5-7 sec... to avoid flickering (so there is a hysteresis - cumulation/average over a time interval - lag) -- I know AE is very little used in scripted studio shoots but it's still a thing.
That said, this might be related to looks. Perhaps CDL could increment and become a 4X4 color matrix to support color temperature (AWB), white point NITS... I think CDL was initially designed around cineon/dpx type log. It might be a good idea to have option to have a gamma model (1, 2.2, 2.4... ) as working space for looks. Camera space color is really complicated if the purpose is to ship to VFX something comprehensible.
Another note here is when people record YUV (Y Cb Cr) 422 10 bit etc, the actual range in RGB can be under 0 and over 1 and some color space and transform are not agile outside of 0-1. I once tested if we did gamma over 1.0 like others, and I tried 3 apps and none of the 3 was producing the same values over 1 applying gamma.