Skip to content

Commit bb04951

Browse files
committed
Implement support for viewing rules.
Signed-off-by: Thomas Mansencal <[email protected]>
1 parent 6f218c5 commit bb04951

File tree

3 files changed

+132
-79
lines changed

3 files changed

+132
-79
lines changed

opencolorio_config_aces/config/generation/common.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -409,8 +409,7 @@ def generate_config(
409409

410410
if data.file_rules:
411411
file_rules = ocio.FileRules()
412-
rule_index = 0
413-
for file_rule in reversed(data.file_rules):
412+
for i, file_rule in enumerate(data.file_rules):
414413
name = file_rule["name"]
415414
colorspace = file_rule["colorspace"]
416415
regex = file_rule.get("regex")
@@ -431,8 +430,7 @@ def generate_config(
431430
regex,
432431
colorspace,
433432
)
434-
file_rules.insertRule(rule_index, name, colorspace, regex)
435-
rule_index += 1
433+
file_rules.insertRule(i, name, colorspace, regex)
436434
else:
437435
LOGGER.debug(
438436
'Adding "%s" file rule with "%s" pattern and "%s" '
@@ -442,15 +440,20 @@ def generate_config(
442440
extension,
443441
colorspace,
444442
)
445-
file_rules.insertRule(rule_index, name, colorspace, pattern, extension)
446-
rule_index += 1
443+
file_rules.insertRule(i, name, colorspace, pattern, extension)
447444
config.setFileRules(file_rules)
448445

449446
if data.viewing_rules:
450447
viewing_rules = ocio.ViewingRules()
451-
for _i, _viewing_rule in enumerate(reversed(data.viewing_rules)):
452-
LOGGER.warning("Inserting a viewing rule is not supported yet!")
453-
# viewing_rules.insertRule()
448+
for i, viewing_rule in enumerate(data.viewing_rules):
449+
name = viewing_rule["name"]
450+
encodings = viewing_rule["encodings"]
451+
LOGGER.debug(
452+
'Adding "%s" viewing rule with "%s" encodings.', name, encodings
453+
)
454+
viewing_rules.insertRule(i, name)
455+
for encoding in encodings:
456+
viewing_rules.addEncoding(i, encoding)
454457
config.setViewingRules(viewing_rules)
455458

456459
if data.default_view_transform is not None:

opencolorio_config_aces/config/reference/generate/config.py

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -916,6 +916,7 @@ def generate_config_aces(
916916
"builtin_transform_style",
917917
"linked_display_colorspace_style",
918918
"interface",
919+
"viewing_rule",
919920
"encoding",
920921
"categories",
921922
"aliases",
@@ -1119,6 +1120,7 @@ def generate_config_aces(
11191120
"display": display_name,
11201121
"view": view_transform_name,
11211122
"view_transform": view_transform_name,
1123+
"rule": transform_data["viewing_rule"],
11221124
}
11231125
if shared_view not in shared_views:
11241126
LOGGER.info(
@@ -1238,6 +1240,32 @@ def ordering(element: str) -> int:
12381240
"style": "UTILITY - ACES-AP0_to_CIE-XYZ-D65_BFD",
12391241
},
12401242
}
1243+
1244+
video_view_transform = {
1245+
"name": "Video (colorimetric)",
1246+
"from_reference": {
1247+
"transform_type": "MatrixTransform",
1248+
"matrix": [
1249+
1.0000000000,
1250+
0.0000000000,
1251+
0.0000000000,
1252+
0.0000000000,
1253+
0.0000000000,
1254+
1.0000000000,
1255+
0.0000000000,
1256+
0.0000000000,
1257+
0.0000000000,
1258+
0.0000000000,
1259+
1.0000000000,
1260+
0.0000000000,
1261+
0.0000000000,
1262+
0.0000000000,
1263+
0.0000000000,
1264+
1.0000000000,
1265+
],
1266+
},
1267+
}
1268+
12411269
for display_name in display_names:
12421270
untonemapped_shared_view = {
12431271
"display": display_name,
@@ -1253,6 +1281,20 @@ def ordering(element: str) -> int:
12531281
if untonemapped_shared_view not in shared_views:
12541282
shared_views.append(untonemapped_shared_view)
12551283

1284+
video_shared_view = {
1285+
"display": display_name,
1286+
"view": video_view_transform["name"],
1287+
"view_transform": video_view_transform["name"],
1288+
}
1289+
LOGGER.info(
1290+
'Adding "%s" shared view to "%s" display.',
1291+
video_shared_view["view"],
1292+
display_name,
1293+
)
1294+
1295+
if video_shared_view not in shared_views:
1296+
shared_views.append(video_shared_view)
1297+
12561298
raw_view = {
12571299
"display": display_name,
12581300
"view": "Raw",
@@ -1289,17 +1331,25 @@ def ordering(element: str) -> int:
12891331
},
12901332
colorspaces=colorspaces + displays,
12911333
looks=looks,
1292-
view_transforms=[*view_transforms, untonemapped_view_transform],
1334+
view_transforms=[
1335+
*view_transforms,
1336+
untonemapped_view_transform,
1337+
video_view_transform,
1338+
],
12931339
shared_views=shared_views,
12941340
views=shared_views + views,
12951341
active_displays=display_names,
1296-
active_views=[*active_views, "Un-tone-mapped", "Raw"],
1342+
active_views=[*active_views, "Un-tone-mapped", "Video (colorimetric)", "Raw"],
12971343
file_rules=[
12981344
{
12991345
"name": "Default",
13001346
"colorspace": scene_reference_colorspace["name"],
13011347
}
13021348
],
1349+
viewing_rules=[
1350+
{"name": "Any Scene-linear or Log", "encodings": ["log", "scene-linear"]},
1351+
{"name": "Any Video", "encodings": ["sdr-video", "hdr-video"]},
1352+
],
13031353
default_view_transform=untonemapped_view_transform["name"],
13041354
profile_version=build_configuration.ocio,
13051355
)

0 commit comments

Comments
 (0)