Skip to content

Conversation

@michdolan
Copy link
Collaborator

Signed-off-by: Michael Dolan michdolan@gmail.com

Signed-off-by: Michael Dolan <michdolan@gmail.com>
Copy link
Collaborator

@zachlewis zachlewis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks Michael. As always, your notes are absolutely riveting and spellbinding.

@zachlewis
Copy link
Collaborator

I've been messing around with the existing BuiltinTransforms and the the various new display-oriented conventions -- here's some general feedback / notes that I'd be happy to migrate elsewhere:

  • The current BuiltinTransforms include:
    • Utility matrices:
      • AP0-to-XYZ-D65
      • AP0-to-AP1,
      • AP1-to-Rec709,
      • XYZ-D65-to-Rec709
    • A shaper ACEScct transform (i.e. a single-channel LogCameraTransform)
    • Academy ACES 1.x IDTs -- ADX10, ADX16, ACESproxy10i, ACEScc, ACEScct
    • Several Camera-to-ACES2065-1 transforms spanning the ACES OCIO config and CLF library:
      • ARRI ALEXA LogC v3 EI800 (ALEXA Wide Gamut)
      • RED Log3G10, Log3G12, RedLogFilm (REDWideGamutRGB)
      • Sony SLog3 (SGamut3, SGamut3.Cine)
      • Panasonic V-Log (V-Gamut)
      • Canon Log 2, Canon Log 3 (Cinema Gamut)
  • For a self-contained ACES-1 OCIO-2.0 config, we'd need builtins for:
    • PQ (half-domain)
    • RRT spline, ODT splines
    • ACES-1.2 OutputTransform splines?
    • (I think there's hermite-based highlight compression in ACES-1.2 SSTS somewhere too)
    • ACES-2.0: Gamut-compressed IDT variants (eventually)?
  • It would be helpful (in general) to have builtins for:
    • Matrices for P3-D65, DCI-P3, Rec2020, XYZ-D60
    • SLog3 - VENICE SGamut3, SLog3 - VENICE SGamut3.Cine
    • ACES-1.0, ACES-0.7 RRT sweeteners
    • Maybe something similar to SynColor add-camera-black / remove-camera-black?

* Time change:
- Michael: All daylight savings shifts are now done and Thomas is unable to
attend. Can we shift one hour earlier next time?
- All ok with this. We will try to not change time mid-daylight savings
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, as discussed with Michael yesterday, it seems like the most sensible thing to do, i.e. wait for the month and half of daylight savings dust to settle.

we could handle them as if they went from ACES to device.
- Mark: At moment, generator doesn't parse CTL code, just looks at URN in
header of files, so no way to track transforms or chains between functions.
- Doug: We know anything that expects OCES as input wants to include RRT.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Exactly, because it is systematic, it is trivial to account for.

for transforms with OCES input, go from ACES to OCES.
- Mark: Not sure benefit to tracking CTL to get these relationships if we
need to implement transforms. Maybe skip checking of CTL and
programmatically build transforms.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hang-on, we are talking about the ACES Reference config, CTL is still, AFAIK, the reference implementation, why not building against it? It has the benefits of:

  • Producing a config that matches exactly the reference implementation
  • Facilitates the Logo Program
  • Surfaces any errors back promptly because it is automated
  • The Academy can run it easily to check themselves!

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There was, as you see, discussion around whether the actual config generation should come from code with more manual intervention, to allow a human touch in designing how the reference implementation utilizes OCIO features. Particularly for the output transform side of things there were some expressed concerns that being strictly upstream automated may be problematic. Even in that case though there would be clear value in using the upstream graphing code to validate what is designed, gathering the named transforms which define ACES and trying to run them with image comparison against the config. Please do discuss though, @doug-walker , @Shootfast and others. I can always capture the discussion from this PR and append it to the notes for a clearer record if that's beneficial. I'm hesitant to encourage having this discussion in Slack since it will vanish eventually (though admittedly I was suggesting that in these notes...). We could also wait until the next meeting when @doug-walker has an example of the output transforms.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just to be clear nothing says everything has to be a strict translation of the CTL structure. I think there is a virtue to it because we get a faithful representation of what is happening upstream and this is what developers tend to implement when they implement ACES on their end. The benefit should be obvious for anyone who has implemented ACES in another language, e.g. HLSL, GLSL: it requires much less work to maintain parity when changes occur in aces-dev. Whether you like or not the design, this is the reference implementation and straying out of it too much might cause more harm than good from a maintenance standpoint.

Something worth mentioning, that might have been overlooked and forgotten (because not a lot of people actually used the code) is that the current ACES config is partially generated by introspecting CTL, it does less than the current repo but it was doing most of that and THEN, on top of the discovered stuff, it was adding the extra elements, manually. Experience as shown that it was invaluable to maintain the config and see what changed between ACES releases, especially between 1.0.3 and 1.1.

In any case, if we want to diverge from the upstream structure for a "good" reason, I'm not sure what is the concern from an implementation standpoint. We add a case for it and call it a day... AFAIK, the current code has been written by human intervention, so again what is the concern? :)

I'm hesitant to encourage having this discussion in Slack since it will vanish eventually (though admittedly I was suggesting that in these notes...).

Slack is the place where information vanishes into the Void thus here seems like a good place to me!

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agree that there is value in being able to introspect the aces-dev repo CTL and pull the transform IDs, particularly as new ACES versions come out. Thomas clearly has a lot of experience in doing these updates and knows how much work is involved and the value of automated tools.

need to implement transforms. Maybe skip checking of CTL and
programmatically build transforms.
- Michael: Could use generator for testing if not for config generation. To
do image comparison etc.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The intent of that generator is really to generate the Reference config as close as possible to the Book, i.e. CTL, we always talked about two configs, the Reference and the Studio one, the latter could build ontop of the former ideally.

structure easier to follow.
- Michael: That would then be a point of divergence in the code. The
current code for testing against upstream ACES, and a new generator for
a config itself.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep, whether the Studio config generator uses the graph remains to be assessed but at best it was always intended to be a building block.


* ACES reference config goal
- Michael: Shall we set a goal to have the reference config done by OCIO
v2 (non-RC) release? Would be good to ship an example if possible.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That would be a good idea and quite coincidentally: https://lists.aswf.io/g/ocio-dev/message/2037

@KelSolaar
Copy link
Contributor

Added a bunch of comments, seems like it would have been useful to have me around :)

- Michael: Could cut off stuff not in aces-dev repo.
- Doug: Need some RED and Canon, and there are CSC transforms for those.
Maybe don't go beyond that. Some needed discussion around what those
transform are. Was hoping Thomas' work was to produce list of proposed
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is trivial to do!

@KelSolaar
Copy link
Contributor

KelSolaar commented Nov 4, 2020

To @doug-walker question just above, not documented but:

COLORSPACE_TO_CTL_TRANSFORM = {}
"""
Mapping between an *OpenColorIO* colorspace and an *ACES* *CTL* transform.

The mapping is filled by :func:`opencolorio_config_aces.\
ctl_transform_to_colorspace` definition.

COLORSPACE_TO_CTL_TRANSFORM : dict
"""

It is worth noting that some of the ACESTransformID are incorrect upstream and are patched here.

>>> import opencolorio_config_aces
>>> opencolorio_config_aces.generate_config_aces()
>>> for ctl_transform in opencolorio_config_aces.config.reference.generate.config.COLORSPACE_TO_CTL_TRANSFORM.values():
>>>     print(ctl_transform.aces_transform_id)
ACESTransformID('urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACEScc_to_ACES.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACEScct_to_ACES.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACEScg_to_ACES.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACESproxy10i_to_ACES.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACESproxy12i_to_ACES.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ADX10_to_ACES.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ADX16_to_ACES.a1.0.3')
ACESTransformID('ACEScsc.LogC_EI800_AWG_to_ACES.a1.v1')
ACESTransformID('ACEScsc.CLog2_CGamut_to_ACES.a1.v1')
ACESTransformID('ACEScsc.CLog3_CGamut_to_ACES.a1.v1')
ACESTransformID('ACEScsc.VLog_VGamut_to_ACES.a1.v1')
ACESTransformID('ACEScsc.Log3G10_RWG_to_ACES.a1.v1')
ACESTransformID('ACEScsc.SLog3_SGamut3Cine_to_ACES.a1.v1')
ACESTransformID('ACEScsc.SLog3_SGamut3_to_ACES.a1.v1')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT11000.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT2000.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT2100.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT2200.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT2400.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT2600.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT2900.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT3200.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT3500.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT3900.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT4300.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT4700.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT5100.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT5600.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT6500.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT7500.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT9000.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.Sony.SLog1_SGamut_10i.a1.v1')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.Sony.SLog1_SGamut_12i.a1.v1')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.Sony.SLog2_SGamut_Daylight_10i.a1.v1')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.Sony.SLog2_SGamut_Daylight_12i.a1.v1')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.Sony.SLog2_SGamut_Tungsten_10i.a1.v1')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.Sony.SLog2_SGamut_Tungsten_12i.a1.v1')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.Sony.Venice_SLog3_SGamut3.a1.v1')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.Sony.Venice_SLog3_SGamut3Cine.a1.v1')
ACESTransformID('urn:ampas:aces:transformId:v1.5:LMT.Academy.ACES_0_1_1.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:LMT.Academy.ACES_0_2_2.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:LMT.Academy.ACES_0_7_1.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:LMT.Academy.BlueLightArtifactFix.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.DCDM.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.DCDM_P3D60.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.DCDM_P3D65limited.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.P3D60_48nits.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.P3D65_48nits.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.P3D65_D60sim_48nits.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.P3D65_709limit_48nits.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.P3DCI_48nits.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.P3DCI_D65sim_48nits.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.Rec2020_100nits_dim.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.Rec2020_100nits.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.Rec2020_Rec709limited_100nits.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.Rec709_100nits_dim.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.Rec709_D60sim_100nits_dim.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.RGBmonitor_100nits_dim.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.RGBmonitor_D60sim_100nits_dim.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:RRTODT.Academy.P3D65_1000nits_15nits_ST2084.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:RRTODT.Academy.P3D65_108nits_7.2nits_ST2084.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:RRTODT.Academy.P3D65_2000nits_15nits_ST2084.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:RRTODT.Academy.P3D65_4000nits_15nits_ST2084.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:RRTODT.Academy.Rec2020_1000nits_15nits_HLG.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:RRTODT.Academy.Rec2020_1000nits_15nits_ST2084.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:RRTODT.Academy.Rec2020_2000nits_15nits_ST2084.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:RRTODT.Academy.Rec2020_4000nits_15nits_ST2084.a1.1.0')

@KelSolaar
Copy link
Contributor

@Shootfast : This actually also fullfill the spreadsheet needs!

Signed-off-by: Michael Dolan <michdolan@gmail.com>
for transforms with OCES input, go from ACES to OCES.
- Mark: Not sure benefit to tracking CTL to get these relationships if we
need to implement transforms. Maybe skip checking of CTL and
programmatically build transforms.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agree that there is value in being able to introspect the aces-dev repo CTL and pull the transform IDs, particularly as new ACES versions come out. Thomas clearly has a lot of experience in doing these updates and knows how much work is involved and the value of automated tools.

@doug-walker
Copy link
Collaborator

Thank you @KelSolaar for pasting the list of Transform IDs! This would make a good start to the spreadsheet discussed at the meeting.

By the way, I notice that the "non Venice" S-Log3/S-Gamut3 IDT seems to be missing. The rest of the list seems to match up to the CTL in aces-dev (with the understanding that the script only includes the v3 EI800 Alexa transforms).

As discussed at the meeting, aces-dev does not contain many of the Input Transforms (IDTs) in the current ACES config since many of the camera vendors are not adding their transforms. For continued discussion at the next meeting ...

KelSolaar added a commit to AcademySoftwareFoundation/OpenColorIO-Config-ACES that referenced this pull request Nov 5, 2020
References #AcademySoftwareFoundation/OpenColorIO#1193.

Signed-off-by: Thomas Mansencal <thomas.mansencal@gmail.com>
KelSolaar added a commit to AcademySoftwareFoundation/OpenColorIO-Config-ACES that referenced this pull request Nov 5, 2020
References #AcademySoftwareFoundation/OpenColorIO#1193.

Signed-off-by: Thomas Mansencal <thomas.mansencal@gmail.com>
@KelSolaar
Copy link
Contributor

KelSolaar commented Nov 5, 2020

@doug-walker : Good catch, thanks! This is fixed in the PR just above, updated list of ACESTransformID:

ACESTransformID('urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACEScc_to_ACES.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACEScct_to_ACES.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACEScg_to_ACES.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACESproxy10i_to_ACES.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACESproxy12i_to_ACES.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ADX10_to_ACES.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ADX16_to_ACES.a1.0.3')
ACESTransformID('ACEScsc.LogC_EI800_AWG_to_ACES.a1.v1')
ACESTransformID('ACEScsc.CLog2_CGamut_to_ACES.a1.v1')
ACESTransformID('ACEScsc.CLog3_CGamut_to_ACES.a1.v1')
ACESTransformID('ACEScsc.VLog_VGamut_to_ACES.a1.v1')
ACESTransformID('ACEScsc.Log3G10_RWG_to_ACES.a1.v1')
ACESTransformID('ACEScsc.SLog3_SGamut3Cine_to_ACES.a1.v1')
ACESTransformID('ACEScsc.SLog3_SGamut3_to_ACES.a1.v1')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT11000.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT2000.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT2100.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT2200.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT2400.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT2600.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT2900.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT3200.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT3500.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT3900.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT4300.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT4700.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT5100.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT5600.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT6500.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT7500.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-raw-EI800-CCT9000.a1.v2')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.Sony.SLog1_SGamut_10i.a1.v1')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.Sony.SLog1_SGamut_12i.a1.v1')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.Sony.SLog2_SGamut_Daylight_10i.a1.v1')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.Sony.SLog2_SGamut_Daylight_12i.a1.v1')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.Sony.SLog2_SGamut_Tungsten_10i.a1.v1')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.Sony.SLog2_SGamut_Tungsten_12i.a1.v1')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.Sony.SLog3_SGamut3.a1.v1')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.Sony.SLog3_SGamut3Cine.a1.v1')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.Sony.Venice_SLog3_SGamut3.a1.v1')
ACESTransformID('urn:ampas:aces:transformId:v1.5:IDT.Sony.Venice_SLog3_SGamut3Cine.a1.v1')
ACESTransformID('urn:ampas:aces:transformId:v1.5:LMT.Academy.ACES_0_1_1.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:LMT.Academy.ACES_0_2_2.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:LMT.Academy.ACES_0_7_1.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:LMT.Academy.BlueLightArtifactFix.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.DCDM.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.DCDM_P3D60.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.DCDM_P3D65limited.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.P3D60_48nits.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.P3D65_48nits.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.P3D65_D60sim_48nits.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.P3D65_709limit_48nits.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.P3DCI_48nits.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.P3DCI_D65sim_48nits.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.Rec2020_100nits_dim.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.Rec2020_100nits.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.Rec2020_Rec709limited_100nits.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.Rec709_100nits_dim.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.Rec709_D60sim_100nits_dim.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.RGBmonitor_100nits_dim.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:ODT.Academy.RGBmonitor_D60sim_100nits_dim.a1.0.3')
ACESTransformID('urn:ampas:aces:transformId:v1.5:RRTODT.Academy.P3D65_1000nits_15nits_ST2084.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:RRTODT.Academy.P3D65_108nits_7.2nits_ST2084.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:RRTODT.Academy.P3D65_2000nits_15nits_ST2084.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:RRTODT.Academy.P3D65_4000nits_15nits_ST2084.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:RRTODT.Academy.Rec2020_1000nits_15nits_HLG.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:RRTODT.Academy.Rec2020_1000nits_15nits_ST2084.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:RRTODT.Academy.Rec2020_2000nits_15nits_ST2084.a1.1.0')
ACESTransformID('urn:ampas:aces:transformId:v1.5:RRTODT.Academy.Rec2020_4000nits_15nits_ST2084.a1.1.0')

As discussed at the meeting, aces-dev does not contain many of the Input Transforms (IDTs) in the current ACES config since many of the camera vendors are not adding their transforms. For continued discussion at the next meeting ...

Yes, so is this the point where we start thinking about the Studio config?

@JGoldstone
Copy link
Contributor

JGoldstone commented Nov 6, 2020 via email

@KelSolaar
Copy link
Contributor

Those ‘raw’ transforms aren’t appropriate for anything but cameras with 3424 x 2202 ALEV III Rev B sensors, which is to say, nowhere near a majority of ALEXA / AMIRA cameras.

This is actually good to know and reinforce my feeling that they should probably be removed from aces-dev at some point. Certainly worth talking about that with @aforsythe and @scottdyer.

Is there any efficient way of soliciting information on who is still using the raw IDTs, presumably on captured imagery for which they are not appropriate?

We could ask on ACEScentral/Twitter but I would also tend to think that the majority of people is first and foremost using ARRIRAW SDK

Can we remove the raw IDTs from whatever mechanism we use TODAY for OCIO V1, and see who complains?

This is pretty much impossible as they are shipped in the config and part of the distributed (and already installed/packaged) software on a large number of systems.

I have no good answer to your other questions!

@zachlewis
Copy link
Collaborator

There is a separate question, perhaps not for this list, but I won’t stop you: what are the most important apps when it comes to automatically picking the correct EI-specific ALEXA curve? (And, looking forward slightly, what will be the most important apps when it comes to automatically picking a LogC V3 IDT for an Apple ProRes MXF file from current-generation cameras like the Mini LF, and a LogC V4 IDT for an Apple ProRes MXF file from next-generation cameras?) If this is not a good topic for discussion here, then where should I start a discussion?

For us, that would be Nuke, Flame, Resolve, RV, not necessarily in that order.

On a related note, @JGoldstone -- are there plans to include Log CLF parameter values as ARRI metadata? That would be a handy way of communicating several EI-specific data...

How complex are LogC V4 IDTs?

Signed-off-by: Michael Dolan <michdolan@gmail.com>
@JGoldstone
Copy link
Contributor

JGoldstone commented Nov 12, 2020 via email

@zachlewis
Copy link
Collaborator

I’m not sure what you mean. The LUTs will be embedded in .mxf as they have been in prior formats for quite some time now, and the idea of CLF support (as an external file) could be a possibility, but I can’t make any promises as I’m not in project management.

Sorry, I should have clarified -- in CLF, there's a Log node, which permits one to represent many camera log CCTFs parametrically; OCIO-2 has LogCameraTransform with the same parameterization. The math is the same as the simplified form of the LogC formula, at the end of the LogC white paper: x >= cut ? a * log10(c * x + d) + b : x * e + f I was suggesting that the per-EI formula coefficients that appear in the tables in the paper would be useful to have as metadata, in order to communicate information about the transfer curve in an unambiguous, mathematical way (which could be interpreted by pipelines, DCC applications, etc. in an automated fashion).

My question re: LogC v4 was rhetorical. LogC v2 and most LogC v3 variants can be represented with standard CLF nodes / OCIO LogCameraTransforms; but the additional complexity of the highlight compression when Log C v3 EI >= 1600 makes the generic formula increasingly less suitable. If LogC v4 is even more complex, then all of this becomes somewhat moot.

@michdolan michdolan merged commit 8feb1fa into AcademySoftwareFoundation:master Nov 23, 2020
@michdolan michdolan deleted the config_wg_02032020 branch July 26, 2023 22:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants