Skip to content

Commit eb59486

Browse files
authored
Add CLF for RED Log3G10-RWG (#51)
* Add CLF for RED Log3G10-RWG Signed-off-by: Doug Walker <doug.walker@autodesk.com> * Update ACES TransformID Signed-off-by: Doug Walker <doug.walker@autodesk.com> * Apply Black formatting Signed-off-by: Doug Walker <doug.walker@autodesk.com> * Update transform ID Signed-off-by: Doug Walker <doug.walker@autodesk.com>
1 parent ec7d1cf commit eb59486

File tree

5 files changed

+89
-40
lines changed

5 files changed

+89
-40
lines changed

opencolorio_config_aces/clf/discover/classify.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@
9595
NAMESPACE_CLF : unicode
9696
"""
9797

98-
TRANSFORM_TYPES_CLF = ["Input", "Utility"]
98+
TRANSFORM_TYPES_CLF = ["", "Input", "Utility"]
9999
"""
100100
*CLF* transform types.
101101

opencolorio_config_aces/clf/transforms/ocio/generate.py

Lines changed: 51 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -24,18 +24,21 @@
2424
__email__ = "ocio-dev@lists.aswf.io"
2525
__status__ = "Production"
2626

27-
__all__ = ["generate_clf_input", "generate_clf_utility"]
27+
__all__ = [
28+
"generate_clf_ocio_input",
29+
"generate_clf_vendor_input",
30+
"generate_clf_utility",
31+
]
2832

2933
THIS_DIR = Path(__file__).parent.resolve()
3034

31-
TF_ID_PREFIX = "urn:aswf:ocio:transformId:1.0:OCIO:"
35+
TF_ID_PREFIX = "urn:aswf:ocio:transformId:1.0:"
3236
TF_ID_SUFFIX = ":1.0"
3337

34-
CLF_PREFIX = "OCIO."
3538
CLF_SUFFIX = ".clf"
3639

3740

38-
def generate_clf_input():
41+
def generate_clf_ocio_input():
3942
"""Generate OCIO Input CLF transforms."""
4043

4144
dest_dir = THIS_DIR / "input"
@@ -49,14 +52,36 @@ def generate_clf_input():
4952
create_gamma("sRGB"),
5053
]
5154
),
52-
TF_ID_PREFIX + "Input:AP0_to_Rec709-sRGB" + TF_ID_SUFFIX,
55+
TF_ID_PREFIX + "OCIO:Input:AP0_to_Rec709-sRGB" + TF_ID_SUFFIX,
5356
"AP0 to Rec.709 - sRGB",
54-
dest_dir / (CLF_PREFIX + "Input.AP0_to_Rec709-sRGB" + CLF_SUFFIX),
57+
dest_dir / ("OCIO.Input.AP0_to_Rec709-sRGB" + CLF_SUFFIX),
5558
"ACES2065-1",
5659
"sRGB",
5760
)
5861

5962

63+
def generate_clf_vendor_input():
64+
"""Generate Vendor Input CLF transforms."""
65+
66+
dest_dir = THIS_DIR / "input"
67+
if not dest_dir.exists():
68+
dest_dir.mkdir()
69+
70+
config = ocio.Config.CreateRaw()
71+
72+
generate_clf(
73+
config.getProcessor(
74+
ocio.BuiltinTransform(style="RED_LOG3G10-RWG_to_ACES2065-1")
75+
).createGroupTransform(),
76+
TF_ID_PREFIX + "RED:Input:Log3G10_RWG_to_ACES2065-1" + TF_ID_SUFFIX,
77+
"RED Log3G10 REDWideGamutRGB to ACES2065-1",
78+
dest_dir / ("RED.Log3G10_RWG_to_ACES2065-1" + CLF_SUFFIX),
79+
"RED Log3G10 REDWideGamutRGB",
80+
"ACES2065-1",
81+
"urn:ampas:aces:transformId:v1.5:IDT.RED.Log3G10_RWG.a1.v1",
82+
)
83+
84+
6085
def generate_clf_utility():
6186
"""Generate OCIO Utility CLF transforms."""
6287

@@ -66,18 +91,18 @@ def generate_clf_utility():
6691

6792
generate_clf(
6893
ocio.GroupTransform(transforms=[create_gamma(2.4)]),
69-
TF_ID_PREFIX + "Utility:Linear_to_Rec1886" + TF_ID_SUFFIX,
94+
TF_ID_PREFIX + "OCIO:Utility:Linear_to_Rec1886" + TF_ID_SUFFIX,
7095
"Linear to Rec.1886",
71-
dest_dir / (CLF_PREFIX + "Utility.Linear_to_Rec1886" + CLF_SUFFIX),
96+
dest_dir / ("OCIO.Utility.Linear_to_Rec1886" + CLF_SUFFIX),
7297
"generic linear RGB",
7398
"generic gamma-corrected RGB",
7499
)
75100

76101
generate_clf(
77102
ocio.GroupTransform(transforms=[create_gamma("sRGB")]),
78-
TF_ID_PREFIX + "Utility:Linear_to_sRGB" + TF_ID_SUFFIX,
103+
TF_ID_PREFIX + "OCIO:Utility:Linear_to_sRGB" + TF_ID_SUFFIX,
79104
"Linear to sRGB",
80-
dest_dir / (CLF_PREFIX + "Utility.Linear_to_sRGB" + CLF_SUFFIX),
105+
dest_dir / ("OCIO.Utility.Linear_to_sRGB" + CLF_SUFFIX),
81106
"generic linear RGB",
82107
"generic gamma-corrected RGB",
83108
)
@@ -86,9 +111,9 @@ def generate_clf_utility():
86111
ocio.GroupTransform(
87112
transforms=[create_conversion_matrix("ACES2065-1", "P3-D65")]
88113
),
89-
TF_ID_PREFIX + "Utility:AP0_to_P3-D65-Linear" + TF_ID_SUFFIX,
114+
TF_ID_PREFIX + "OCIO:Utility:AP0_to_P3-D65-Linear" + TF_ID_SUFFIX,
90115
"AP0 to P3-D65 - Linear",
91-
dest_dir / (CLF_PREFIX + "Utility.AP0_to_P3-D65-Linear" + CLF_SUFFIX),
116+
dest_dir / ("OCIO.Utility.AP0_to_P3-D65-Linear" + CLF_SUFFIX),
92117
"ACES2065-1",
93118
"linear P3 primaries, D65 white point",
94119
)
@@ -99,9 +124,9 @@ def generate_clf_utility():
99124
create_conversion_matrix("ACES2065-1", "ITU-R BT.2020")
100125
]
101126
),
102-
TF_ID_PREFIX + "Utility:AP0_to_Rec2020-Linear" + TF_ID_SUFFIX,
127+
TF_ID_PREFIX + "OCIO:Utility:AP0_to_Rec2020-Linear" + TF_ID_SUFFIX,
103128
"AP0 to Rec.2020 - Linear",
104-
dest_dir / (CLF_PREFIX + "Utility.AP0_to_Rec2020-Linear" + CLF_SUFFIX),
129+
dest_dir / ("OCIO.Utility.AP0_to_Rec2020-Linear" + CLF_SUFFIX),
105130
"ACES2065-1",
106131
"linear Rec.2020 primaries, D65 white point",
107132
)
@@ -110,9 +135,9 @@ def generate_clf_utility():
110135
ocio.GroupTransform(
111136
transforms=[create_conversion_matrix("ACES2065-1", "ITU-R BT.709")]
112137
),
113-
TF_ID_PREFIX + "Utility:AP0_to_Rec709-Linear" + TF_ID_SUFFIX,
138+
TF_ID_PREFIX + "OCIO:Utility:AP0_to_Rec709-Linear" + TF_ID_SUFFIX,
114139
"AP0 to Rec.709 - Linear",
115-
dest_dir / (CLF_PREFIX + "Utility.AP0_to_Rec709-Linear" + CLF_SUFFIX),
140+
dest_dir / ("OCIO.Utility.AP0_to_Rec709-Linear" + CLF_SUFFIX),
116141
"ACES2065-1",
117142
"linear Rec.709 primaries, D65 white point",
118143
)
@@ -124,10 +149,9 @@ def generate_clf_utility():
124149
create_gamma(1.8),
125150
]
126151
),
127-
TF_ID_PREFIX + "Utility:AP0_to_Rec709-Gamma1.8" + TF_ID_SUFFIX,
152+
TF_ID_PREFIX + "OCIO:Utility:AP0_to_Rec709-Gamma1.8" + TF_ID_SUFFIX,
128153
"AP0 to Rec.709 - Gamma 1.8",
129-
dest_dir
130-
/ (CLF_PREFIX + "Utility.AP0_to_Rec709-Gamma1.8" + CLF_SUFFIX),
154+
dest_dir / ("OCIO.Utility.AP0_to_Rec709-Gamma1.8" + CLF_SUFFIX),
131155
"ACES2065-1",
132156
"1.8 gamma-corrected Rec.709 primaries, D65 white point",
133157
)
@@ -139,10 +163,9 @@ def generate_clf_utility():
139163
create_gamma(2.2),
140164
]
141165
),
142-
TF_ID_PREFIX + "Utility:AP0_to_Rec709-Gamma2.2" + TF_ID_SUFFIX,
166+
TF_ID_PREFIX + "OCIO:Utility:AP0_to_Rec709-Gamma2.2" + TF_ID_SUFFIX,
143167
"AP0 to Rec.709 - Gamma 2.2",
144-
dest_dir
145-
/ (CLF_PREFIX + "Utility.AP0_to_Rec709-Gamma2.2" + CLF_SUFFIX),
168+
dest_dir / ("OCIO.Utility.AP0_to_Rec709-Gamma2.2" + CLF_SUFFIX),
146169
"ACES2065-1",
147170
"2.2 gamma-corrected Rec.709 primaries, D65 white point",
148171
)
@@ -154,10 +177,9 @@ def generate_clf_utility():
154177
create_gamma(2.4),
155178
]
156179
),
157-
TF_ID_PREFIX + "Utility:AP0_to_Rec709-Gamma2.4" + TF_ID_SUFFIX,
180+
TF_ID_PREFIX + "OCIO:Utility:AP0_to_Rec709-Gamma2.4" + TF_ID_SUFFIX,
158181
"AP0 to Rec.709 - Gamma 2.4",
159-
dest_dir
160-
/ (CLF_PREFIX + "Utility.AP0_to_Rec709-Gamma2.4" + CLF_SUFFIX),
182+
dest_dir / ("OCIO.Utility.AP0_to_Rec709-Gamma2.4" + CLF_SUFFIX),
161183
"ACES2065-1",
162184
"2.4 gamma-corrected Rec.709 primaries, D65 white point",
163185
)
@@ -169,14 +191,15 @@ def generate_clf_utility():
169191
create_gamma(2.2),
170192
]
171193
),
172-
TF_ID_PREFIX + "Utility:AP0_to_AP1-Gamma2.2" + TF_ID_SUFFIX,
194+
TF_ID_PREFIX + "OCIO:Utility:AP0_to_AP1-Gamma2.2" + TF_ID_SUFFIX,
173195
"AP0 to AP1 - Gamma 2.2",
174-
dest_dir / (CLF_PREFIX + "Utility.AP0_to_AP1-Gamma2.2" + CLF_SUFFIX),
196+
dest_dir / ("OCIO.Utility.AP0_to_AP1-Gamma2.2" + CLF_SUFFIX),
175197
"ACES2065-1",
176198
"2.2 gamma-corrected AP1 primaries, D60 white point",
177199
)
178200

179201

180202
if __name__ == "__main__":
181-
generate_clf_input()
203+
generate_clf_ocio_input()
204+
generate_clf_vendor_input()
182205
generate_clf_utility()
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ProcessList compCLFversion="3" id="urn:aswf:ocio:transformId:1.0:RED:Input:Log3G10_RWG_to_ACES2065-1:1.0" name="RED Log3G10 REDWideGamutRGB to ACES2065-1">
3+
<InputDescriptor>RED Log3G10 REDWideGamutRGB</InputDescriptor>
4+
<OutputDescriptor>ACES2065-1</OutputDescriptor>
5+
<Info>
6+
<ACEStransformID>urn:ampas:aces:transformId:v1.5:IDT.RED.Log3G10_RWG.a1.v1</ACEStransformID>
7+
</Info>
8+
<Log inBitDepth="32f" outBitDepth="32f" style="cameraLogToLin">
9+
<LogParams base="10" linSideSlope="155.975327" linSideOffset="2.55975327" logSideSlope="0.224282" logSideOffset="0" linSideBreak="-0.01" />
10+
</Log>
11+
<Matrix inBitDepth="32f" outBitDepth="32f">
12+
<Array dim="3 3">
13+
0.785058804068093 0.0838587565440845 0.131082439387823
14+
0.0231738348454754 1.08789754919233 -0.111071384037807
15+
-0.0737604353682082 -0.314590072290208 1.38835050765842
16+
</Array>
17+
</Matrix>
18+
</ProcessList>

opencolorio_config_aces/clf/transforms/utilities.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,9 @@ def create_gamma(gamma):
142142
return exp_tf
143143

144144

145-
def generate_clf(group_tf, tf_id, tf_name, filename, input_desc, output_desc):
145+
def generate_clf(
146+
group_tf, tf_id, tf_name, filename, input_desc, output_desc, aces_id=None
147+
):
146148
"""
147149
Take a GroupTransform and some metadata and write a CLF file.
148150
@@ -160,13 +162,19 @@ def generate_clf(group_tf, tf_id, tf_name, filename, input_desc, output_desc):
160162
CLF input descriptor.
161163
output_desc : str
162164
CLF output descriptor.
165+
aces_id : str
166+
ACES TransformID (default is None).
163167
"""
164168

165169
metadata = group_tf.getFormatMetadata()
166170
metadata.setID(tf_id)
167171
metadata.setName(tf_name)
168172
metadata.addChildElement("InputDescriptor", input_desc)
169173
metadata.addChildElement("OutputDescriptor", output_desc)
174+
if aces_id is not None:
175+
metadata.addChildElement("Info", "")
176+
info = metadata.getChildElements()[2]
177+
info.addChildElement("ACEStransformID", aces_id)
170178

171179
group_tf.write(
172180
formatName="Academy/ASC Common LUT Format",

tasks.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
"tests",
3434
"preflight",
3535
"docs",
36-
"build_clf_utility",
36+
"build_clfs",
3737
"build_aces_conversion_graph",
3838
"build_config_common_tests",
3939
"build_config_reference_analytical",
@@ -44,7 +44,7 @@
4444
"docker_remove",
4545
"run_in_container",
4646
"docker_run_docs",
47-
"docker_run_build_clf_utility",
47+
"docker_run_build_clfs",
4848
"docker_run_build_aces_conversion_graph",
4949
"docker_run_build_config_common_tests",
5050
"docker_run_build_config_reference_analytical",
@@ -215,19 +215,19 @@ def docs(ctx: Context, html: bool = True, pdf: bool = True):
215215

216216

217217
@task
218-
def build_clf_utility(ctx: Context):
218+
def build_clfs(ctx: Context):
219219
"""
220-
Build the *CLF* utility transforms.
220+
Build the *CLF* transforms.
221221
222222
Parameters
223223
----------
224224
ctx
225225
Context.
226226
"""
227227

228-
message_box('Building the "CLF" utility transforms...')
229-
with ctx.cd("opencolorio_config_aces/clf/transforms"):
230-
ctx.run("python utility.py")
228+
message_box('Building the "CLF" transform files...')
229+
with ctx.cd("opencolorio_config_aces/clf/transforms/ocio"):
230+
ctx.run("python generate.py")
231231

232232

233233
@task
@@ -421,17 +421,17 @@ def docker_run_docs(ctx, html: bool = True, pdf: bool = True):
421421

422422

423423
@task
424-
def docker_run_build_clf_utility(ctx: Context):
424+
def docker_run_build_clfs(ctx: Context):
425425
"""
426-
Build the *CLF* utility transforms in the *docker* container.
426+
Build the *CLF* transforms in the *docker* container.
427427
428428
Parameters
429429
----------
430430
ctx
431431
Context.
432432
"""
433433

434-
run_in_container(ctx, "invoke build-clf-utility")
434+
run_in_container(ctx, "invoke build-clfs")
435435

436436

437437
@task

0 commit comments

Comments
 (0)