Implements support for *Sony* colorspaces conversions and transfer functions.
"""
+from __future__ import division
+
import array
import os
+import PyOpenColorIO as ocio
+
import aces_ocio.generate_lut as genlut
from aces_ocio.utilities import ColorSpace, mat44_from_mat33
transfer_function,
name,
lut_directory,
- lut_resolution_1d):
+ lut_resolution_1d,
+ aliases):
"""
Object description.
cs = ColorSpace(name)
cs.description = name
+ cs.aliases = aliases
cs.equality_group = ''
cs.family = 'Sony'
cs.is_data = False
+ # A linear space needs allocation variables
+ if transfer_function == '':
+ cs.allocation_type = ocio.Constants.ALLOCATION_LG2
+ cs.allocation_vars = [-8, 5, 0.00390625]
+
def s_log1_to_linear(s_log):
b = 64.
ab = 90.
w = 940.
- if (s_log >= ab):
+ if s_log >= ab:
linear = ((pow(10.,
(((s_log - b) /
(w - b) - 0.616596 - 0.03) / 0.432699)) -
ab = 90.
w = 940.
- if (s_log >= ab):
+ if s_log >= ab:
linear = ((219. * (pow(10.,
(((s_log - b) /
(w - b) - 0.616596 - 0.03) / 0.432699)) -
def s_log3_to_linear(code_value):
if code_value >= 171.2102946929:
- linear = (pow(10.0, ((code_value - 420.0) / 261.5)) *
+ linear = (pow(10, ((code_value - 420) / 261.5)) *
(0.18 + 0.01) - 0.01)
else:
- linear = (code_value - 95.0) * 0.01125000 / (171.2102946929 - 95.0)
+ linear = (code_value - 95) * 0.01125000 / (171.2102946929 - 95)
return linear
if transfer_function == 'S-Log1':
data = array.array('f', '\0' * lut_resolution_1d * 4)
for c in range(lut_resolution_1d):
- data[c] = s_log1_to_linear(1023.0 * c / (lut_resolution_1d - 1))
+ data[c] = s_log1_to_linear(1023 * c / (lut_resolution_1d - 1))
lut = '%s_to_linear.spi1d' % transfer_function
genlut.write_SPI_1d(
os.path.join(lut_directory, lut),
- 0.0,
- 1.0,
+ 0,
+ 1,
data,
lut_resolution_1d,
1)
elif transfer_function == 'S-Log2':
data = array.array('f', '\0' * lut_resolution_1d * 4)
for c in range(lut_resolution_1d):
- data[c] = s_log2_to_linear(1023.0 * c / (lut_resolution_1d - 1))
+ data[c] = s_log2_to_linear(1023 * c / (lut_resolution_1d - 1))
lut = '%s_to_linear.spi1d' % transfer_function
genlut.write_SPI_1d(
os.path.join(lut_directory, lut),
- 0.0,
- 1.0,
+ 0,
+ 1,
data,
lut_resolution_1d,
1)
elif transfer_function == 'S-Log3':
data = array.array('f', '\0' * lut_resolution_1d * 4)
for c in range(lut_resolution_1d):
- data[c] = s_log3_to_linear(1023.0 * c / (lut_resolution_1d - 1))
+ data[c] = s_log3_to_linear(1023 * c / (lut_resolution_1d - 1))
lut = '%s_to_linear.spi1d' % transfer_function
genlut.write_SPI_1d(
os.path.join(lut_directory, lut),
- 0.0,
- 1.0,
+ 0,
+ 1,
data,
lut_resolution_1d,
1)
'S-Log1',
'S-Log',
lut_directory,
- lut_resolution_1d)
+ lut_resolution_1d,
+ ["slog1_sgamut"])
colorspaces.append(s_log1_s_gamut)
# *S-Log2*
'S-Log2',
'S-Log2',
lut_directory,
- lut_resolution_1d)
+ lut_resolution_1d,
+ ["slog2_sgamut"])
colorspaces.append(s_log2_s_gamut)
s_log2_s_gamut_daylight = create_s_log(
'S-Log2',
'S-Log2',
lut_directory,
- lut_resolution_1d)
+ lut_resolution_1d,
+ ["slog2_sgamutday"])
colorspaces.append(s_log2_s_gamut_daylight)
s_log2_s_gamut_tungsten = create_s_log(
'S-Log2',
'S-Log2',
lut_directory,
- lut_resolution_1d)
+ lut_resolution_1d,
+ ["slog2_sgamuttung"])
colorspaces.append(s_log2_s_gamut_tungsten)
# *S-Log3*
'S-Log3',
'S-Log3',
lut_directory,
- lut_resolution_1d)
+ lut_resolution_1d,
+ ["slog3_sgamutcine"])
colorspaces.append(s_log3_s_gamut3Cine)
s_log3_s_gamut3 = create_s_log(
'S-Log3',
'S-Log3',
lut_directory,
- lut_resolution_1d)
+ lut_resolution_1d,
+ ["slog3_sgamut3"])
colorspaces.append(s_log3_s_gamut3)
# Linearization Only
'S-Log1',
'S-Log',
lut_directory,
- lut_resolution_1d)
+ lut_resolution_1d,
+ ["crv_slog1"])
colorspaces.append(s_log1)
s_log2 = create_s_log(
'S-Log2',
'S-Log2',
lut_directory,
- lut_resolution_1d)
+ lut_resolution_1d,
+ ["crv_slog2"])
colorspaces.append(s_log2)
s_log3 = create_s_log(
'S-Log3',
'S-Log3',
lut_directory,
- lut_resolution_1d)
+ lut_resolution_1d,
+ ["crv_slog3"])
colorspaces.append(s_log3)
# Primaries Only
'',
'S-Log',
lut_directory,
- lut_resolution_1d)
+ lut_resolution_1d,
+ ["lin_sgamut"])
colorspaces.append(s_gamut)
s_gamut_daylight = create_s_log(
'',
'S-Log2',
lut_directory,
- lut_resolution_1d)
+ lut_resolution_1d,
+ ["lin_sgamutday"])
colorspaces.append(s_gamut_daylight)
s_gamut_tungsten = create_s_log(
'',
'S-Log2',
lut_directory,
- lut_resolution_1d)
+ lut_resolution_1d,
+ ["lin_sgamuttung"])
colorspaces.append(s_gamut_tungsten)
s_gamut3Cine = create_s_log(
'',
'S-Log3',
lut_directory,
- lut_resolution_1d)
+ lut_resolution_1d,
+ ["lin_sgamut3cine"])
colorspaces.append(s_gamut3Cine)
s_gamut3 = create_s_log(
'',
'S-Log3',
lut_directory,
- lut_resolution_1d)
+ lut_resolution_1d,
+ ["lin_sgamut3"])
colorspaces.append(s_gamut3)
return colorspaces