4 import generateLUT as genlut
7 # RED color spaces to ACES
9 def createREDlogFilm(gamut, transferFunction, name, lutDir, lutResolution1d):
10 name = "%s - %s" % (transferFunction, gamut)
11 if transferFunction == "":
12 name = "Linear - %s" % gamut
14 name = "%s" % transferFunction
22 def cineonToLinear(codeValue):
26 codeValueToDensity = 0.002
28 blackLinear = pow(10.0, (blackPoint - whitePoint) * (codeValueToDensity / nGamma))
29 codeLinear = pow(10.0, (codeValue - whitePoint) * (codeValueToDensity / nGamma))
31 return (codeLinear - blackLinear)/(1.0 - blackLinear)
33 cs.toReferenceTransforms = []
35 if transferFunction == 'REDlogFilm':
36 data = array.array('f', "\0" * lutResolution1d * 4)
37 for c in range(lutResolution1d):
38 data[c] = cineonToLinear(1023.0*c/(lutResolution1d-1))
40 lut = "CineonLog_to_linear.spi1d"
41 genlut.writeSPI1D(lutDir + "/" + lut, 0.0, 1.0, data, lutResolution1d, 1)
43 cs.toReferenceTransforms.append( {
46 'interpolation':'linear',
50 if gamut == 'DRAGONcolor':
51 cs.toReferenceTransforms.append( {
53 'matrix':mat44FromMat33([0.532279, 0.376648, 0.091073,
54 0.046344, 0.974513, -0.020860,
55 -0.053976, -0.000320, 1.054267]),
58 elif gamut == 'DRAGONcolor2':
59 cs.toReferenceTransforms.append( {
61 'matrix':mat44FromMat33([0.468452, 0.331484, 0.200064,
62 0.040787, 0.857658, 0.101553,
63 -0.047504, -0.000282, 1.047756]),
66 elif gamut == 'REDcolor2':
67 cs.toReferenceTransforms.append( {
69 'matrix':mat44FromMat33([0.480997, 0.402289, 0.116714,
70 -0.004938, 1.000154, 0.004781,
71 -0.105257, 0.025320, 1.079907]),
74 elif gamut == 'REDcolor3':
75 cs.toReferenceTransforms.append( {
77 'matrix':mat44FromMat33([0.512136, 0.360370, 0.127494,
78 0.070377, 0.903884, 0.025737,
79 -0.020824, 0.017671, 1.003123]),
82 elif gamut == 'REDcolor4':
83 cs.toReferenceTransforms.append( {
85 'matrix':mat44FromMat33([0.474202, 0.333677, 0.192121,
86 0.065164, 0.836932, 0.097901,
87 -0.019281, 0.016362, 1.002889]),
91 cs.fromReferenceTransforms = []
94 # Generate all color spaces conversion
95 def createColorSpaces(lutDir, lutResolution1d):
99 REDlogFilmDRAGON = createREDlogFilm("DRAGONcolor", "REDlogFilm", "REDlogFilm", lutDir, lutResolution1d)
100 colorspaces.append(REDlogFilmDRAGON)
102 REDlogFilmDRAGON2 = createREDlogFilm("DRAGONcolor2", "REDlogFilm", "REDlogFilm", lutDir, lutResolution1d)
103 colorspaces.append(REDlogFilmDRAGON2)
105 REDlogFilmREDcolor2 = createREDlogFilm("REDcolor2", "REDlogFilm", "REDlogFilm", lutDir, lutResolution1d)
106 colorspaces.append(REDlogFilmREDcolor2)
108 REDlogFilmREDcolor3 = createREDlogFilm("REDcolor3", "REDlogFilm", "REDlogFilm", lutDir, lutResolution1d)
109 colorspaces.append(REDlogFilmREDcolor3)
111 REDlogFilmREDcolor4 = createREDlogFilm("REDcolor4", "REDlogFilm", "REDlogFilm", lutDir, lutResolution1d)
112 colorspaces.append(REDlogFilmREDcolor4)
115 REDlogFilmDRAGON = createREDlogFilm("", "REDlogFilm", "REDlogFilm", lutDir, lutResolution1d)
116 colorspaces.append(REDlogFilmDRAGON)
119 REDlogFilmDRAGON = createREDlogFilm("DRAGONcolor", "", "REDlogFilm", lutDir, lutResolution1d)
120 colorspaces.append(REDlogFilmDRAGON)
122 REDlogFilmDRAGON2 = createREDlogFilm("DRAGONcolor2", "", "REDlogFilm", lutDir, lutResolution1d)
123 colorspaces.append(REDlogFilmDRAGON2)
125 REDlogFilmREDcolor2 = createREDlogFilm("REDcolor2", "", "REDlogFilm", lutDir, lutResolution1d)
126 colorspaces.append(REDlogFilmREDcolor2)
128 REDlogFilmREDcolor3 = createREDlogFilm("REDcolor3", "", "REDlogFilm", lutDir, lutResolution1d)
129 colorspaces.append(REDlogFilmREDcolor3)
131 REDlogFilmREDcolor4 = createREDlogFilm("REDcolor4", "", "REDlogFilm", lutDir, lutResolution1d)
132 colorspaces.append(REDlogFilmREDcolor4)