configData['colorSpaces'] = []
# Matrix converting ACES AP1 primaries to AP0
- acesAP1toAP0 = [0.6954522414, 0.1406786965, 0.1638690622,
- 0.0447945634, 0.8596711185, 0.0955343182,
+ acesAP1toAP0 = [ 0.6954522414, 0.1406786965, 0.1638690622,
+ 0.0447945634, 0.8596711185, 0.0955343182,
-0.0055258826, 0.0040252103, 1.0015006723]
+ # Matrix converting ACES AP0 primaries to XYZ
+ acesAP0toXYZ = [0.9525523959, 0.0000000000, 0.0000936786,
+ 0.3439664498, 0.7281660966, -0.0721325464,
+ 0.0000000000, 0.0000000000, 1.0088251844]
+
#
# ACEScc
#
ctls = [
'%s/ACEScc/ACEScsc.ACEScc_to_ACES.a1.0.0.ctl' % acesCTLReleaseDir,
# This transform gets back to the AP1 primaries
- # Useful to the 1d LUT is only covering the transfer function
+ # Useful as the 1d LUT is only covering the transfer function
# The primaries switch is covered by the matrix below
'%s/ACEScg/ACEScsc.ACES_to_ACEScg.a1.0.0.ctl' % acesCTLReleaseDir
]
ctls = [
'%s/ACESproxy/ACEScsc.ACESproxy10i_to_ACES.a1.0.0.ctl' % acesCTLReleaseDir,
# This transform gets back to the AP1 primaries
- # Useful to the 1d LUT is only covering the transfer function
+ # Useful as the 1d LUT is only covering the transfer function
# The primaries switch is covered by the matrix below
'%s/ACEScg/ACEScsc.ACES_to_ACEScg.a1.0.0.ctl' % acesCTLReleaseDir
]
if gamut == 'DRAGONcolor':
cs.toReferenceTransforms.append( {
'type':'matrix',
- 'matrix':mat44FromMat33([0.532279, 0.376648, 0.091073,
- 0.046344, 0.974513, -0.020860,
+ 'matrix':mat44FromMat33([0.532279, 0.376648, 0.091073,
+ 0.046344, 0.974513, -0.020860,
-0.053976, -0.000320, 1.054267]),
'direction':'forward'
})
- elif gamut == 'REDcolor3':
+ elif gamut == 'DRAGONcolor2':
cs.toReferenceTransforms.append( {
'type':'matrix',
- 'matrix':mat44FromMat33([0.512136, 0.360370, 0.127494,
- 0.070377, 0.903884, 0.025737,
- -0.020824, 0.017671, 1.003123]),
+ 'matrix':mat44FromMat33([0.468452, 0.331484, 0.200064,
+ 0.040787, 0.857658, 0.101553,
+ -0.047504, -0.000282, 1.047756]),
'direction':'forward'
})
elif gamut == 'REDcolor2':
-0.105257, 0.025320, 1.079907]),
'direction':'forward'
})
+ elif gamut == 'REDcolor3':
+ cs.toReferenceTransforms.append( {
+ 'type':'matrix',
+ 'matrix':mat44FromMat33([0.512136, 0.360370, 0.127494,
+ 0.070377, 0.903884, 0.025737,
+ -0.020824, 0.017671, 1.003123]),
+ 'direction':'forward'
+ })
+ elif gamut == 'REDcolor4':
+ cs.toReferenceTransforms.append( {
+ 'type':'matrix',
+ 'matrix':mat44FromMat33([0.474202, 0.333677, 0.192121,
+ 0.065164, 0.836932, 0.097901,
+ -0.019281, 0.016362, 1.002889]),
+ 'direction':'forward'
+ })
cs.fromReferenceTransforms = []
return cs
REDlogFilmDRAGON = createREDlogFilm("DRAGONcolor", "REDlogFilm", name="REDlogFilm")
configData['colorSpaces'].append(REDlogFilmDRAGON)
+ REDlogFilmDRAGON2 = createREDlogFilm("DRAGONcolor2", "REDlogFilm", name="REDlogFilm")
+ configData['colorSpaces'].append(REDlogFilmDRAGON2)
+
REDlogFilmREDcolor2 = createREDlogFilm("REDcolor2", "REDlogFilm", name="REDlogFilm")
configData['colorSpaces'].append(REDlogFilmREDcolor2)
REDlogFilmREDcolor3 = createREDlogFilm("REDcolor3", "REDlogFilm", name="REDlogFilm")
configData['colorSpaces'].append(REDlogFilmREDcolor3)
+ REDlogFilmREDcolor4 = createREDlogFilm("REDcolor4", "REDlogFilm", name="REDlogFilm")
+ configData['colorSpaces'].append(REDlogFilmREDcolor4)
+
# Linearization only
REDlogFilmDRAGON = createREDlogFilm("", "REDlogFilm", name="REDlogFilm")
configData['colorSpaces'].append(REDlogFilmDRAGON)
REDlogFilmDRAGON = createREDlogFilm("DRAGONcolor", "", name="REDlogFilm")
configData['colorSpaces'].append(REDlogFilmDRAGON)
+ REDlogFilmDRAGON2 = createREDlogFilm("DRAGONcolor2", "", name="REDlogFilm")
+ configData['colorSpaces'].append(REDlogFilmDRAGON2)
+
REDlogFilmREDcolor2 = createREDlogFilm("REDcolor2", "", name="REDlogFilm")
configData['colorSpaces'].append(REDlogFilmREDcolor2)
REDlogFilmREDcolor3 = createREDlogFilm("REDcolor3", "", name="REDlogFilm")
configData['colorSpaces'].append(REDlogFilmREDcolor3)
+ REDlogFilmREDcolor4 = createREDlogFilm("REDcolor4", "", name="REDlogFilm")
+ configData['colorSpaces'].append(REDlogFilmREDcolor4)
+
#
# Canon-Log to ACES
#
lmtLutResolution3d = max(65, lutResolution3d)
# Log 2 shaper
- lmtShaperName = 'lmtShaper'
+ lmtShaperName = 'LMT Shaper'
lmtParams = {
'middleGrey' : 0.18,
'minExposure' : -10.0,
middleGrey=log2Params['middleGrey'],
minExposure=log2Params['minExposure'],
maxExposure=log2Params['maxExposure'])
- log2ShaperAP1.name = "%s AP1" % log2ShaperAP1.name
+ log2ShaperAP1.name = "%s - AP1" % log2ShaperAP1.name
# AP1 primaries to AP0 primaries
log2ShaperAP1.toReferenceTransforms.append( {
'type':'matrix',
'Log':ACEScc,
'Output Transform':csFull }
+ #
+ # Generic Matrix transform
+ #
+ def createGenericMatrix(name='matrix',
+ fromReferenceValues=[],
+ toReferenceValues=[]):
+ cs = ColorSpace(name)
+ cs.description = "The %s color space" % name
+ cs.equalityGroup = name
+ cs.family = 'Utility'
+ cs.isData=False
+
+ cs.toReferenceTransforms = []
+ if toReferenceValues != []:
+ for matrix in toReferenceValues:
+ cs.toReferenceTransforms.append( {
+ 'type':'matrix',
+ 'matrix':mat44FromMat33(matrix),
+ 'direction':'forward'
+ })
+
+ cs.fromReferenceTransforms = []
+ if fromReferenceValues != []:
+ for matrix in fromReferenceValues:
+ cs.fromReferenceTransforms.append( {
+ 'type':'matrix',
+ 'matrix':mat44FromMat33(matrix),
+ 'direction':'forward'
+ })
+
+ return cs
+
+ cs = createGenericMatrix('XYZ', fromReferenceValues=[acesAP0toXYZ])
+ configData['colorSpaces'].append(cs)
+
+ cs = createGenericMatrix('Linear - AP1', toReferenceValues=[acesAP1toAP0])
+ configData['colorSpaces'].append(cs)
+
+ # ACES to Linear, P3D60 primaries
+ xyzToP3D60 = [ 2.4027414142, -0.8974841639, -0.3880533700,
+ -0.8325796487, 1.7692317536, 0.0237127115,
+ 0.0388233815, -0.0824996856, 1.0363685997]
+
+ cs = createGenericMatrix('Linear - P3-D60', fromReferenceValues=[acesAP0toXYZ, xyzToP3D60])
+ configData['colorSpaces'].append(cs)
+
+ # ACES to Linear, P3D60 primaries
+ xyzToP3DCI = [ 2.7253940305, -1.0180030062, -0.4401631952,
+ -0.7951680258, 1.6897320548, 0.0226471906,
+ 0.0412418914, -0.0876390192, 1.1009293786]
+
+ cs = createGenericMatrix('Linear - P3-DCI', fromReferenceValues=[acesAP0toXYZ, xyzToP3DCI])
+ configData['colorSpaces'].append(cs)
+
+ # ACES to Linear, Rec 709 primaries
+ xyzToRec709 = [ 3.2409699419, -1.5373831776, -0.4986107603,
+ -0.9692436363, 1.8759675015, 0.0415550574,
+ 0.0556300797, -0.2039769589, 1.0569715142]
+
+ cs = createGenericMatrix('Linear - Rec.709', fromReferenceValues=[acesAP0toXYZ, xyzToRec709])
+ configData['colorSpaces'].append(cs)
+
+ # ACES to Linear, Rec 2020 primaries
+ xyzToRec2020 = [ 1.7166511880, -0.3556707838, -0.2533662814,
+ -0.6666843518, 1.6164812366, 0.0157685458,
+ 0.0176398574, -0.0427706133, 0.9421031212]
+
+ cs = createGenericMatrix('Linear - Rec.2020', fromReferenceValues=[acesAP0toXYZ, xyzToRec2020])
+ configData['colorSpaces'].append(cs)
print( "generateLUTs - end" )
return configData
args += ["--outputspace", "%s" % odtName ]
args += ["--description", "%s - %s for %s data" % (odtPrefix, odtName, inputspace) ]
if inputspace == 'ACEScg':
- linShaperName = "%s AP1" % shaperName
+ linShaperName = "%s - AP1" % shaperName
else:
linShaperName = shaperName
args += ["--shaperspace", linShaperName, "--shapersize", str(lutResolutionShaper) ]
# Generate config data and LUTs for different transforms
lutDir = "%s/luts" % configDir
- shaperName = 'outputShaper'
+ shaperName = 'Output Shaper'
configData = generateLUTs(odtInfo, lmtInfo, shaperName, acesCTLReleaseDir, lutDir, lutResolution1d, lutResolution3d, cleanup)
# Create the config using the generated LUTs