-
Notifications
You must be signed in to change notification settings - Fork 36
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add ARRI contributions to OCIO-ACES CLFs #54
Add ARRI contributions to OCIO-ACES CLFs #54
Conversation
I thank you for thinking of me when it comes to pedantic, compulsive review:
The EI check at line 64 is done differently then the unsupported EI error message at line 65.
Do IDEs that help the user on hover of a function call put up everything in the Python comment, or only the function parameters? If there are cases when it might be the latter, then the EI restriction should be expressed not in the main body of the comment, but as part of the documentation of the ei argument on line 50.
Taken in isolation line 45 could imply that you can use any EI value ≤ 1280, but in fact you can’t have an EI < 160.
Why clutter someone’s debug variable pane with values that aren’t used? Turn lines 94 and 95 into comments, if those values aren’t used. Similarly comment out lines 104 and 105 in the debug output.
You leave the ei argument to the generate_logc3 function in place on line 38, and on line 45 you imply it can be one of several values, as you do in line 50. In line 65 you provide for putting the supplied EI into the error message. But when you generate the clf_id on line 142, you hardcode EI 800. The same can be sed for the contents of the Description and InputDescriptor child elements you create on lines 146 and 147. You do the right thing on line 157 when forming the frame; you should do the same for the above cases.
Supports continuous range of EIs but the camera does not generate a continuous range. Worth noting what the supported ones are, so that no one makes one that corresponds to something the camera doesn’t produce.
If the prior LogC3 IDT generator handled EIs 1600, 1280 and 3200 the ‘right way’, with more complex math generating 1D LUTs, then I would find the last tagged release that included that code, and put in a comment referring anyone who wanted to generate IDTs for those EIs to that code — but just for those EIs. For EIs < 1600, they should use the code you’re providing here.
In general, though, looks great. Thanks for the work.
… On Jun 2, 2022, at 12:47, Sean Cooper ***@***.***> wrote:
This PR supplies the inital ARRI CLFs for the ACES config. This includes:
ARRI LogC3 (EI800)
ARRI LogC4
Points of conversation/review:
Success in compliance with CLF recommended practice
Plan for inclusion of further LogC3 transforms
Code organization and generation of cameraLogToLin parameters
OCIO Transform IDs and naming conventions
Special thanks to @doug-walker <https://github.com/doug-walker> for his assistance.
Tagging @JGoldstone <https://github.com/JGoldstone> for visibility and his helpful input.
This will also be a test of the CLA system on ARRI's side which may need some tweaks.
You can view, comment on, or merge this pull request online at:
#54 <#54>
Commit Summary
765bf40 <765bf40> add ARRI contributions to OCIO-ACES CLFs
File Changes (3 files <https://github.com/AcademySoftwareFoundation/OpenColorIO-Config-ACES/pull/54/files>)
A opencolorio_config_aces/clf/transforms/arri/generate.py <https://github.com/AcademySoftwareFoundation/OpenColorIO-Config-ACES/pull/54/files#diff-141e076f755146d4b151fe28756fcc16484fb6733738660483d80a044feddba2> (263)
A opencolorio_config_aces/clf/transforms/arri/input/ARRI.LogC3_EI800_to_ACES2065-1.clf <https://github.com/AcademySoftwareFoundation/OpenColorIO-Config-ACES/pull/54/files#diff-53dc7a819ad5dfbcdca7e569cdf0cdfeade994c52812e14343c9fa9ae0ed0dc1> (19)
A opencolorio_config_aces/clf/transforms/arri/input/ARRI.LogC4_to_ACES2065-1.clf <https://github.com/AcademySoftwareFoundation/OpenColorIO-Config-ACES/pull/54/files#diff-961404223b9c70dd17a9935a2108807db57f63bde7aa3e37a46fbffcfa1ab0f5> (19)
Patch Links:
https://github.com/AcademySoftwareFoundation/OpenColorIO-Config-ACES/pull/54.patch <https://github.com/AcademySoftwareFoundation/OpenColorIO-Config-ACES/pull/54.patch>
https://github.com/AcademySoftwareFoundation/OpenColorIO-Config-ACES/pull/54.diff <https://github.com/AcademySoftwareFoundation/OpenColorIO-Config-ACES/pull/54.diff>
—
Reply to this email directly, view it on GitHub <#54>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AAIVB7P5E7UOE5CMRJFD7I3VNEFWFANCNFSM5XWA7WRQ>.
You are receiving this because you were mentioned.
|
This is great, thanks Sean! The PR raises a number of points that we should probably discuss at our next working group meeting:
Thanks again for the PR! |
047901b
to
60693c7
Compare
There are separate reasons for LogC3 and LogC4. For LogC3, this is a legacy consistency issue. I presented the CLF in a manner which represents the current state of the aces-dev repo. If this is not the goal of ACES config, then there is a different conversation to have. For LogC4, you are correct we hold the primaries to be fully precise (by definition). Our internal matrix derivation and Thomas' code can both be validated against SMPTE RP 177, and both use CAT02, so I don't see the benefit of using external code to derive them. I would prefer float/double literals(decimal or hex), and not have the conversion vary based on intended/unintended changes of upstream software. If you need the values to be fully specified for double precision than I can provide this but will update the aces-dev PR and our White Paper to reflect this. I would like consistency across the public definitions of LogC4. If we can discuss what is the correct and proper way to communicate color space primaries and conversion matricies then I am open ears. The SMPTE RP 177 deserves an update in this respect, as it does not satisfy the current industry's precision requirements.
My understanding was that only including EI800 was a temporary measure to speed up creation of the configs. I think it is required to support all EI to enable correct linearization of LogC3 material. Clamping is available to ensure consistency with the aces-dev CTL, and as an informative note that this is the behavior of the aces-dev CTL.
This is because the fully qualified name of the color space is "ARRI LogC4", "LogC4" is the short-hand name.
Open ears here. Tell the convention you prefer and I will follow.
What was the source of the current float literals used in the Built-In-Transform? I present them in this way because I wanted to be able to derive the parameters from the code in the public aces-dev IDT, to connect both worlds. The precision is merely a result of the computation to derive them, becaues they are not implemented as float-literals in this form on our end. Higher precision would be preferred, but could be overridden by compatibilty concerns. Are the LogOps single precision, unlike the matrix?
Yes agreed, I can put forth a PR in the coming weeks.
No strong opinion here, provided results through either path are reasonably equivalent. |
Thanks for the comments, and catching the string formatting bug @JGoldstone. I've implemented most of your changes.
I will keep these for verboseness and education. Allows quick validation against White Paper values. |
303213d
to
3830c29
Compare
Thanks for the detailed reply Sean. I'll try to summarize where we stand on the seven points I raised above:
|
Hi @scoopxyz - hoping to get an update on this PR? I know we talked through several small changes last time we all spoke. We are planning on releasing the first version of the Studio config at SIGGRAPH in... a week and a half! Would be great to have this included. Please let us know if we can help! |
1d5fd18
to
a5256c7
Compare
@KelSolaar it looks like CI is failing because the remote Excel sheet has bumped to v0.2.0 but the local file on main is v0.1.0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the update Sean! I made some minor suggestions below but will approve now since I think it's close enough to be merged for beta testing the next version of the config.
The log transform values for LogC3 are very slightly different than what the OCIO BuiltinTransform uses, which will currently prevent adjacent fwd/inv transform pairs from being optimizing out. However, I intend to loosen the comparison on the OCIO side, so it will be ok.
The matrix transform values for AWG4 are very slightly different from what I think colour would give. But the difference is below what would prevent OCIO from optimizing out adjacent fwd/inv matrices, so it's ok.
opencolorio_config_aces/clf/transforms/arri/input/ARRI.Input.ARRI_LogC3_Curve_EI800.clf
Show resolved
Hide resolved
a4e1cc0
to
87e337d
Compare
87e337d
to
f898daa
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the updates Sean!
clf_transforms = {} | ||
clf_transforms = _generate_logc3_transforms( | ||
clf_transforms, output_directory, ei_list=[800] | ||
) | ||
clf_transforms = _generate_logc4_transforms( | ||
clf_transforms, output_directory | ||
) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a bit anti-pattern, following-up the entry-point, i.e. _main
, we get into this definition generate_clf_arri
, there we can see the _generate_logc3_transforms
and _generate_logc4_transforms
definition assigning to the same variable.
If you don't look in details at the signature of the _generate_logc*_transforms
definitions you would think that this is a mistake.
Ideally the definitions should either:
- Update the passed variable in place, in which case they should not return anything.
- Not take an argument and return the generated transforms.
My preference would be for 2 because:
- This makes the definitions pure.
- It makes the usage simpler: We could remove the weirdly name
transforms_set
argument which is actually not aset
but adict
. - It is similar to other CLF definitions.
Happy to merge and do those changes in a subsequent PR!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agreed. Simply didn't think of a nice way to merge dicts.
Fixed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Awesome, thank you!
5c08c21
to
b27fd3f
Compare
Signed-off-by: scoopxyz <sean@seancooper.xyz>
Signed-off-by: scoopxyz <sean@seancooper.xyz>
Signed-off-by: scoopxyz <sean@seancooper.xyz>
Signed-off-by: scoopxyz <sean@seancooper.xyz>
Signed-off-by: scoopxyz <sean@seancooper.xyz>
Signed-off-by: Sean Cooper <sean@seancooper.xyz>
Signed-off-by: Sean Cooper <sean@seancooper.xyz>
Signed-off-by: Sean Cooper <sean@seancooper.xyz>
Signed-off-by: Sean Cooper <sean@seancooper.xyz>
b27fd3f
to
b85f564
Compare
Signed-off-by: Sean Cooper <sean@seancooper.xyz>
@dp-arri for visibility. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM! Thanks al lot @scoopxyz!
This PR supplies the inital ARRI CLFs for the ACES config. This includes:
Points of conversation/review:
Special thanks to @doug-walker for his assistance.
Tagging @JGoldstone for visibility and his helpful input.
This will also be a test of the CLA system on ARRI's side which may need some tweaks.