X-Git-Url: http://users.mur.at/ms/git/gitweb/?a=blobdiff_plain;f=aces_1.0.0%2Fpython%2Faces_ocio%2Fcolorspaces%2Fgeneral.py;h=e708a1d91acb8596766721e9c9f3f6d93c74db49;hb=07d70535fd63c090b57c754758a0b2ae3ff121ac;hp=d3a9fc2d6a5bc9c6f1b9dd4883fac4708034f8a7;hpb=36e508461522c0510e0c758687a6560fd4b0804e;p=OpenColorIO-Configs.git diff --git a/aces_1.0.0/python/aces_ocio/colorspaces/general.py b/aces_1.0.0/python/aces_ocio/colorspaces/general.py index d3a9fc2..e708a1d 100644 --- a/aces_1.0.0/python/aces_ocio/colorspaces/general.py +++ b/aces_1.0.0/python/aces_ocio/colorspaces/general.py @@ -16,7 +16,6 @@ import aces_ocio.generate_lut as genlut from aces_ocio.colorspaces import aces from aces_ocio.utilities import ColorSpace, mat44_from_mat33 - __author__ = 'ACES Developers' __copyright__ = 'Copyright (C) 2014 - 2015 - ACES Developers' __license__ = '' @@ -27,13 +26,14 @@ __status__ = 'Production' __all__ = ['create_matrix_colorspace', 'create_colorspaces'] + # ------------------------------------------------------------------------- # *Matrix Transform* # ------------------------------------------------------------------------- def create_matrix_colorspace(name='matrix', from_reference_values=None, to_reference_values=None, - aliases=[]): + aliases=None): """ Object description. @@ -54,6 +54,9 @@ def create_matrix_colorspace(name='matrix', if to_reference_values is None: to_reference_values = [] + if aliases is None: + aliases = [] + cs = ColorSpace(name) cs.description = 'The %s color space' % name cs.aliases = aliases @@ -83,6 +86,7 @@ def create_matrix_colorspace(name='matrix', return cs + # ------------------------------------------------------------------------- # *Transfer Function Transform* # ------------------------------------------------------------------------- @@ -91,7 +95,7 @@ def create_transfer_colorspace(name='transfer', transfer_function=lambda x: x, lut_directory='/tmp', lut_resolution_1d=1024, - aliases=[]): + aliases=None): """ Object description. @@ -106,6 +110,9 @@ def create_transfer_colorspace(name='transfer', Return value description. """ + if aliases is None: + aliases = [] + cs = ColorSpace(name) cs.description = 'The %s color space' % name cs.aliases = aliases @@ -144,6 +151,8 @@ def create_transfer_colorspace(name='transfer', cs.from_reference_transforms = [] return cs + + # create_transfer_colorspace # ------------------------------------------------------------------------- @@ -156,7 +165,7 @@ def create_matrix_plus_transfer_colorspace(name='matrix_plus_transfer', lut_resolution_1d=1024, from_reference_values=None, to_reference_values=None, - aliases=[]): + aliases=None): """ Object description. @@ -177,6 +186,9 @@ def create_matrix_plus_transfer_colorspace(name='matrix_plus_transfer', if to_reference_values is None: to_reference_values = [] + if aliases is None: + aliases = [] + cs = ColorSpace(name) cs.description = 'The %s color space' % name cs.aliases = aliases @@ -234,6 +246,8 @@ def create_matrix_plus_transfer_colorspace(name='matrix_plus_transfer', 'direction': 'inverse'}) return cs + + # create_matrix_plus_transfer_colorspace # Transfer functions for standard color spaces @@ -244,55 +258,60 @@ def transfer_function_sRGB_to_linear(v): g = 2.4 if v < b: - return v/d + return v / d return pow(((v + (a - 1)) / a), g) + def transfer_function_Rec709_to_linear(v): a = 1.099 b = 0.018 d = 4.5 - g = (1.0/0.45) + g = (1.0 / 0.45) - if v < b*d: - return v/d + if v < b * d: + return v / d return pow(((v + (a - 1)) / a), g) + def transfer_function_Rec2020_10bit_to_linear(v): a = 1.099 b = 0.018 d = 4.5 - g = (1.0/0.45) + g = (1.0 / 0.45) - if v < b*d: - return v/d + if v < b * d: + return v / d return pow(((v + (a - 1)) / a), g) + def transfer_function_Rec2020_12bit_to_linear(v): a = 1.0993 b = 0.0181 d = 4.5 - g = (1.0/0.45) + g = (1.0 / 0.45) - if v < b*d: - return v/d + if v < b * d: + return v / d return pow(((v + (a - 1)) / a), g) + def transfer_function_Rec1886_to_linear(v): g = 2.4 Lw = 1 Lb = 0 # Ignoring legal to full scaling for now - #v = (1023.0*v - 64.0)/876.0 + # v = (1023.0*v - 64.0)/876.0 - t = pow(Lw, 1.0/g) - pow(Lb, 1.0/g) + t = pow(Lw, 1.0 / g) - pow(Lb, 1.0 / g) a = pow(t, g) - b = pow(Lb, 1.0/g)/t + b = pow(Lb, 1.0 / g) / t + + return a * pow(max((v + b), 0.0), g) - return a*pow(max((v + b), 0.0), g) def create_colorspaces(lut_directory, lut_resolution_1d, @@ -316,20 +335,10 @@ def create_colorspaces(lut_directory, # # XYZ # - cs = create_matrix_colorspace('XYZ', - to_reference_values=[aces.ACES_XYZ_TO_AP0], - from_reference_values=[aces.ACES_AP0_TO_XYZ], - aliases=["lin_xyz"]) - colorspaces.append(cs) - - # - # AP1 - # - cs = create_matrix_colorspace( - 'Linear - AP1', - to_reference_values=[aces.ACES_AP1_TO_AP0], - from_reference_values=[aces.ACES_AP0_TO_AP1], - aliases=["lin_ap1"]) + cs = create_matrix_colorspace('XYZ-D60', + to_reference_values=[aces.ACES_XYZ_TO_AP0], + from_reference_values=[aces.ACES_AP0_TO_XYZ], + aliases=['lin_xyz_d60']) colorspaces.append(cs) # @@ -343,7 +352,7 @@ def create_colorspaces(lut_directory, cs = create_matrix_colorspace( 'Linear - P3-D60', from_reference_values=[aces.ACES_AP0_TO_XYZ, XYZ_to_P3D60], - aliases=["lin_p3d60"]) + aliases=['lin_p3d60']) colorspaces.append(cs) # @@ -357,42 +366,7 @@ def create_colorspaces(lut_directory, cs = create_matrix_colorspace( 'Linear - P3-DCI', from_reference_values=[aces.ACES_AP0_TO_XYZ, XYZ_to_P3DCI], - aliases=["lin_p3dci"]) - colorspaces.append(cs) - - # - # Rec 709 - # - # *ACES* to *Linear*, *Rec. 709* primaries. - XYZ_to_Rec709 = [3.2409699419, -1.5373831776, -0.4986107603, - -0.9692436363, 1.8759675015, 0.0415550574, - 0.0556300797, -0.2039769589, 1.0569715142] - - cs = create_matrix_colorspace( - 'Linear - Rec.709', - from_reference_values=[aces.ACES_AP0_TO_XYZ, XYZ_to_Rec709], - aliases=["lin_rec709"]) - colorspaces.append(cs) - - # *Linear* to *Rec. 709* Transfer Function* - cs = create_transfer_colorspace( - 'Curve - Rec.709', - 'rec709', - transfer_function_Rec709_to_linear, - lut_directory, - lut_resolution_1d, - aliases=["crv_rec709"]) - colorspaces.append(cs) - - # *ACES* to *Rec. 709* Primaries + Transfer Function* - cs = create_matrix_plus_transfer_colorspace( - 'Rec.709', - 'rec709', - transfer_function_Rec709_to_linear, - lut_directory, - lut_resolution_1d, - from_reference_values=[aces.ACES_AP0_TO_XYZ, XYZ_to_Rec709], - aliases=["rec709"]) + aliases=['lin_p3dci']) colorspaces.append(cs) # @@ -407,7 +381,7 @@ def create_colorspaces(lut_directory, cs = create_matrix_colorspace( 'Linear - sRGB', from_reference_values=[aces.ACES_AP0_TO_XYZ, XYZ_to_Rec709], - aliases=["lin_srgb"]) + aliases=['lin_srgb']) colorspaces.append(cs) # *Linear* to *sRGB* Transfer Function* @@ -417,7 +391,7 @@ def create_colorspaces(lut_directory, transfer_function_sRGB_to_linear, lut_directory, lut_resolution_1d, - aliases=["crv_srgb"]) + aliases=['crv_srgb']) colorspaces.append(cs) # *ACES* to *sRGB* Primaries + Transfer Function* @@ -428,43 +402,42 @@ def create_colorspaces(lut_directory, lut_directory, lut_resolution_1d, from_reference_values=[aces.ACES_AP0_TO_XYZ, XYZ_to_Rec709], - aliases=["srgb"]) + aliases=['srgb']) colorspaces.append(cs) # - # Rec 1886 + # Rec 709 # # *ACES* to *Linear*, *Rec. 709* primaries. - # Rec 1886 and Rec 709 use the same gamut XYZ_to_Rec709 = [3.2409699419, -1.5373831776, -0.4986107603, -0.9692436363, 1.8759675015, 0.0415550574, 0.0556300797, -0.2039769589, 1.0569715142] cs = create_matrix_colorspace( - 'Linear - Rec.1886', + 'Linear - Rec.709', from_reference_values=[aces.ACES_AP0_TO_XYZ, XYZ_to_Rec709], - aliases=["lin_rec1886"]) + aliases=['lin_rec709']) colorspaces.append(cs) - # *Linear* to *sRGB* Transfer Function* + # *Linear* to *Rec. 709* Transfer Function* cs = create_transfer_colorspace( - 'Curve - Rec.1886', - 'rec1886', - transfer_function_Rec1886_to_linear, + 'Curve - Rec.709', + 'rec709', + transfer_function_Rec709_to_linear, lut_directory, lut_resolution_1d, - aliases=["crv_rec1886"]) + aliases=['crv_rec709']) colorspaces.append(cs) - # *ACES* to *sRGB* Primaries + Transfer Function* + # *ACES* to *Rec. 709* Primaries + Transfer Function* cs = create_matrix_plus_transfer_colorspace( - 'Rec.1886', - 'rec1886', - transfer_function_Rec1886_to_linear, + 'Rec.709 - Camera', + 'rec709', + transfer_function_Rec709_to_linear, lut_directory, lut_resolution_1d, from_reference_values=[aces.ACES_AP0_TO_XYZ, XYZ_to_Rec709], - aliases=["rec1886"]) + aliases=['rec709_camera']) colorspaces.append(cs) # @@ -478,7 +451,7 @@ def create_colorspaces(lut_directory, cs = create_matrix_colorspace( 'Linear - Rec.2020', from_reference_values=[aces.ACES_AP0_TO_XYZ, XYZ_to_Rec2020], - aliases=["lin_rec2020"]) + aliases=['lin_rec2020']) colorspaces.append(cs) # *Linear* to *Rec. 2020 10 bit* Transfer Function* @@ -488,18 +461,54 @@ def create_colorspaces(lut_directory, transfer_function_Rec2020_10bit_to_linear, lut_directory, lut_resolution_1d, - aliases=["crv_rec2020"]) + aliases=['crv_rec2020']) colorspaces.append(cs) # *ACES* to *Rec. 2020 10 bit* Primaries + Transfer Function* cs = create_matrix_plus_transfer_colorspace( - 'Rec.2020', + 'Rec.2020 - Camera', 'rec2020', transfer_function_Rec2020_10bit_to_linear, lut_directory, lut_resolution_1d, from_reference_values=[aces.ACES_AP0_TO_XYZ, XYZ_to_Rec2020], - aliases=["rec2020"]) + aliases=['rec2020_camera']) + colorspaces.append(cs) + + # + # Rec 1886 + # + + # *Linear* to *Rec.1886* Transfer Function* + cs = create_transfer_colorspace( + 'Curve - Rec.1886', + 'rec1886', + transfer_function_Rec1886_to_linear, + lut_directory, + lut_resolution_1d, + aliases=['crv_rec1886']) + colorspaces.append(cs) + + # *ACES* to *sRGB* Primaries + Transfer Function* + cs = create_matrix_plus_transfer_colorspace( + 'Rec.709 - Display', + 'rec1886', + transfer_function_Rec1886_to_linear, + lut_directory, + lut_resolution_1d, + from_reference_values=[aces.ACES_AP0_TO_XYZ, XYZ_to_Rec709], + aliases=['rec709_display']) + colorspaces.append(cs) + + # *ACES* to *sRGB* Primaries + Transfer Function* + cs = create_matrix_plus_transfer_colorspace( + 'Rec.2020 - Display', + 'rec1886', + transfer_function_Rec1886_to_linear, + lut_directory, + lut_resolution_1d, + from_reference_values=[aces.ACES_AP0_TO_XYZ, XYZ_to_Rec2020], + aliases=['rec2020_display']) colorspaces.append(cs) # @@ -513,7 +522,7 @@ def create_colorspaces(lut_directory, cs = create_matrix_colorspace( 'Linear - RIMM ROMM (ProPhoto)', from_reference_values=[AP0_to_RIMM], - aliases=["lin_prophoto", "lin_rimm"]) + aliases=['lin_prophoto', 'lin_rimm']) colorspaces.append(cs) # @@ -527,7 +536,7 @@ def create_colorspaces(lut_directory, cs = create_matrix_colorspace( 'Linear - Adobe RGB', from_reference_values=[AP0_to_ADOBERGB], - aliases=["lin_adobergb"]) + aliases=['lin_adobergb']) colorspaces.append(cs) # @@ -542,7 +551,7 @@ def create_colorspaces(lut_directory, cs = create_matrix_colorspace( 'Linear - Adobe Wide Gamut RGB', from_reference_values=[AP0_to_ADOBERGB], - aliases=["lin_adobewidegamutrgb"]) + aliases=['lin_adobewidegamutrgb']) colorspaces.append(cs) return colorspaces @@ -550,14 +559,12 @@ def create_colorspaces(lut_directory, def create_raw(): # *Raw* utility space - name = "Raw" + name = 'Raw' raw = ColorSpace(name) raw.description = 'The %s color space' % name - raw.aliases = [] + raw.aliases = ['raw'] raw.equality_group = name raw.family = 'Utility' raw.is_data = True return raw - -