[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [59945] trunk/blender: Film response curves implemented as a looks

Sergey Sharybin sergey.vfx at gmail.com
Mon Sep 9 11:48:27 CEST 2013


Revision: 59945
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59945
Author:   nazgul
Date:     2013-09-09 09:48:26 +0000 (Mon, 09 Sep 2013)
Log Message:
-----------
Film response curves implemented as a looks

This commit implement's OCIO's Looks idea which
is about applying some color correction on the
buffer before it get's affected by a display
transform.

This is mainly used to modify images in an
artistics way.

Currently we've got looks generated from film
response curves for all sorts of cameras.

Patch by both of me and Brecht.

Modified Paths:
--------------
    trunk/blender/intern/opencolorio/fallback_impl.cc
    trunk/blender/intern/opencolorio/ocio_capi.cc
    trunk/blender/intern/opencolorio/ocio_capi.h
    trunk/blender/intern/opencolorio/ocio_impl.cc
    trunk/blender/intern/opencolorio/ocio_impl.h
    trunk/blender/release/datafiles/colormanagement/config.ocio
    trunk/blender/source/blender/editors/interface/interface_templates.c
    trunk/blender/source/blender/imbuf/IMB_colormanagement.h
    trunk/blender/source/blender/imbuf/intern/IMB_colormanagement_intern.h
    trunk/blender/source/blender/imbuf/intern/colormanagement.c
    trunk/blender/source/blender/makesdna/DNA_color_types.h
    trunk/blender/source/blender/makesrna/intern/rna_color.c

Added Paths:
-----------
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/agfa_advantix_100.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/agfa_advantix_200.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/agfa_advantix_400.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/agfa_agfachrome_ct_precisa_100.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/agfa_agfachrome_ct_precisa_200.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/agfa_agfachrome_rsx2_050.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/agfa_agfachrome_rsx2_100.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/agfa_agfachrome_rsx2_200.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/agfa_agfacolor_futura_100.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/agfa_agfacolor_futura_200.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/agfa_agfacolor_futura_400.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/agfa_agfacolor_futura_ii_100.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/agfa_agfacolor_futura_ii_200.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/agfa_agfacolor_futura_ii_400.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/agfa_agfacolor_hdc_100_plus.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/agfa_agfacolor_hdc_200_plus.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/agfa_agfacolor_hdc_400_plus.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/agfa_agfacolor_optima_ii_100.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/agfa_agfacolor_optima_ii_200.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/agfa_agfacolor_ultra_050.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/agfa_agfacolor_vista_100.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/agfa_agfacolor_vista_200.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/agfa_agfacolor_vista_400.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/agfa_agfacolor_vista_800.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/canon_optura_981111.slrr.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/canon_optura_981111.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/canon_optura_981113.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/canon_optura_981114.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/eastman_double_x_neg_12min.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/eastman_double_x_neg_4min.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/eastman_double_x_neg_5min.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/eastman_double_x_neg_6min.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/fujifilm_f-125.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/fujifilm_f-250.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/fujifilm_f-400.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/fujifilm_fci.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/fujifilm_fp2900z.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_dscs_3151.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_dscs_3152.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_dscs_3153.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_dscs_3154.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_dscs_3155.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_dscs_3156.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_ektachrome_100.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_ektachrome_100_plus.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_ektachrome_320t.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_ektachrome_400x.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_ektachrome_64.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_ektachrome_64t.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_ektachrome_e100s.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_gold_100.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_gold_200.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_kaf-2001.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_kaf-3000.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_kai-0311.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_kai-0372.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_kai-1010.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_kodachrome_200.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_kodachrome_25.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_kodachrome_64.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_max_zoom_800.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_portra_100t.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_portra_160nc.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_portra_160vc.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_portra_400nc.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_portra_400vc.spi1d
    trunk/blender/release/datafiles/colormanagement/luts/camera_response/kodak_portra_800.spi1d

Modified: trunk/blender/intern/opencolorio/fallback_impl.cc
===================================================================
--- trunk/blender/intern/opencolorio/fallback_impl.cc	2013-09-09 09:42:37 UTC (rev 59944)
+++ trunk/blender/intern/opencolorio/fallback_impl.cc	2013-09-09 09:48:26 UTC (rev 59945)
@@ -162,6 +162,30 @@
 	return "sRGB";
 }
 
+int FallbackImpl::configGetNumLooks(OCIO_ConstConfigRcPtr * /*config*/)
+{
+	return 0;
+}
+
+const char *FallbackImpl::configGetLookNameByIndex(OCIO_ConstConfigRcPtr * /*config*/, int /*index*/)
+{
+	return "";
+}
+
+OCIO_ConstLookRcPtr *FallbackImpl::configGetLook(OCIO_ConstConfigRcPtr * /*config*/, const char * /*name*/)
+{
+	return NULL;
+}
+
+const char *FallbackImpl::lookGetProcessSpace(OCIO_ConstLookRcPtr *look)
+{
+	return NULL;
+}
+
+void FallbackImpl::lookRelease(OCIO_ConstLookRcPtr * /*look*/)
+{
+}
+
 int FallbackImpl::colorSpaceIsInvertible(OCIO_ConstColorSpaceRcPtr * /*cs*/)
 {
 	return 1;
@@ -326,6 +350,14 @@
 {
 }
 
+void FallbackImpl::displayTransformSetLooksOverride(OCIO_DisplayTransformRcPtr * /*dt*/, const char * /*looks*/)
+{
+}
+
+void FallbackImpl::displayTransformSetLooksOverrideEnabled(OCIO_DisplayTransformRcPtr * /*dt*/, bool /*enabled*/)
+{
+}
+
 void FallbackImpl::displayTransformRelease(OCIO_DisplayTransformRcPtr * /*dt*/)
 {
 }

Modified: trunk/blender/intern/opencolorio/ocio_capi.cc
===================================================================
--- trunk/blender/intern/opencolorio/ocio_capi.cc	2013-09-09 09:42:37 UTC (rev 59944)
+++ trunk/blender/intern/opencolorio/ocio_capi.cc	2013-09-09 09:48:26 UTC (rev 59945)
@@ -132,6 +132,31 @@
 	return impl->configGetDisplayColorSpaceName(config, display, view);
 }
 
+int OCIO_configGetNumLooks(OCIO_ConstConfigRcPtr *config)
+{
+	return impl->configGetNumLooks(config);
+}
+
+const char *OCIO_configGetLookNameByIndex(OCIO_ConstConfigRcPtr *config, int index)
+{
+	return impl->configGetLookNameByIndex(config, index);
+}
+
+OCIO_ConstLookRcPtr *OCIO_configGetLook(OCIO_ConstConfigRcPtr *config, const char *name)
+{
+	return impl->configGetLook(config, name);
+}
+
+const char *OCIO_lookGetProcessSpace(OCIO_ConstLookRcPtr *look)
+{
+	return impl->lookGetProcessSpace(look);
+}
+
+void OCIO_lookRelease(OCIO_ConstLookRcPtr *look)
+{
+	impl->lookRelease(look);
+}
+
 int OCIO_colorSpaceIsInvertible(OCIO_ConstColorSpaceRcPtr *cs)
 {
 	return impl->colorSpaceIsInvertible(cs);
@@ -232,6 +257,16 @@
 	impl->displayTransformSetLinearCC(dt, t);
 }
 
+void OCIO_displayTransformSetLooksOverride(OCIO_DisplayTransformRcPtr *dt, const char *looks)
+{
+	impl->displayTransformSetLooksOverride(dt, looks);
+}
+
+void OCIO_displayTransformSetLooksOverrideEnabled(OCIO_DisplayTransformRcPtr *dt, bool enabled)
+{
+	impl->displayTransformSetLooksOverrideEnabled(dt, enabled);
+}
+
 void OCIO_displayTransformRelease(OCIO_DisplayTransformRcPtr *dt)
 {
 	impl->displayTransformRelease(dt);

Modified: trunk/blender/intern/opencolorio/ocio_capi.h
===================================================================
--- trunk/blender/intern/opencolorio/ocio_capi.h	2013-09-09 09:42:37 UTC (rev 59944)
+++ trunk/blender/intern/opencolorio/ocio_capi.h	2013-09-09 09:48:26 UTC (rev 59945)
@@ -52,6 +52,7 @@
 OCIO_DECLARE_HANDLE(OCIO_ConstTransformRcPtr);
 OCIO_DECLARE_HANDLE(OCIO_ExponentTransformRcPtr);
 OCIO_DECLARE_HANDLE(OCIO_MatrixTransformRcPtr);
+OCIO_DECLARE_HANDLE(OCIO_ConstLookRcPtr);
 
 void OCIO_init(void);
 void OCIO_exit(void);
@@ -83,6 +84,13 @@
 const char *OCIO_configGetView(OCIO_ConstConfigRcPtr *config, const char *display, int index);
 const char *OCIO_configGetDisplayColorSpaceName(OCIO_ConstConfigRcPtr *config, const char *display, const char *view);
 
+int                  OCIO_configGetNumLooks(OCIO_ConstConfigRcPtr *config);
+const char          *OCIO_configGetLookNameByIndex(OCIO_ConstConfigRcPtr *config, int index);
+OCIO_ConstLookRcPtr *OCIO_configGetLook(OCIO_ConstConfigRcPtr *config, const char *name);
+
+const char *OCIO_lookGetProcessSpace(OCIO_ConstLookRcPtr *look);
+void OCIO_lookRelease(OCIO_ConstLookRcPtr *look);
+
 OCIO_ConstProcessorRcPtr *OCIO_configGetProcessorWithNames(OCIO_ConstConfigRcPtr *config, const char *srcName, const char *dstName);
 OCIO_ConstProcessorRcPtr *OCIO_configGetProcessor(OCIO_ConstConfigRcPtr *config, OCIO_ConstTransformRcPtr *transform);
 
@@ -104,6 +112,8 @@
 void OCIO_displayTransformSetView(OCIO_DisplayTransformRcPtr *dt, const char *name);
 void OCIO_displayTransformSetDisplayCC(OCIO_DisplayTransformRcPtr *dt, OCIO_ConstTransformRcPtr *et);
 void OCIO_displayTransformSetLinearCC(OCIO_DisplayTransformRcPtr *dt, OCIO_ConstTransformRcPtr *et);
+void OCIO_displayTransformSetLooksOverride(OCIO_DisplayTransformRcPtr *dt, const char *looks);
+void OCIO_displayTransformSetLooksOverrideEnabled(OCIO_DisplayTransformRcPtr *dt, bool enabled);
 void OCIO_displayTransformRelease(OCIO_DisplayTransformRcPtr *dt);
 
 OCIO_PackedImageDesc *OCIO_createOCIO_PackedImageDesc(float *data, long width, long height, long numChannels,

Modified: trunk/blender/intern/opencolorio/ocio_impl.cc
===================================================================
--- trunk/blender/intern/opencolorio/ocio_impl.cc	2013-09-09 09:42:37 UTC (rev 59944)
+++ trunk/blender/intern/opencolorio/ocio_impl.cc	2013-09-09 09:48:26 UTC (rev 59945)
@@ -282,6 +282,59 @@
 	return NULL;
 }
 
+int OCIOImpl::configGetNumLooks(OCIO_ConstConfigRcPtr *config)
+{
+	try {
+		return (*(ConstConfigRcPtr *) config)->getNumLooks();
+	}
+	catch (Exception &exception) {
+		OCIO_reportException(exception);
+	}
+
+	return 0;
+}
+
+const char *OCIOImpl::configGetLookNameByIndex(OCIO_ConstConfigRcPtr *config, int index)
+{
+	try {
+		return (*(ConstConfigRcPtr *) config)->getLookNameByIndex(index);
+	}
+	catch (Exception &exception) {
+		OCIO_reportException(exception);
+	}
+
+	return NULL;
+}
+
+OCIO_ConstLookRcPtr *OCIOImpl::configGetLook(OCIO_ConstConfigRcPtr *config, const char *name)
+{
+	ConstLookRcPtr *look = MEM_NEW(ConstLookRcPtr);
+
+	try {
+		*look = (*(ConstConfigRcPtr *) config)->getLook(name);
+
+		if (*look)
+			return (OCIO_ConstLookRcPtr *) look;
+	}
+	catch (Exception &exception) {
+		OCIO_reportException(exception);
+	}
+
+	MEM_DELETE(look, ConstLookRcPtr);
+
+	return NULL;
+}
+
+const char *OCIOImpl::lookGetProcessSpace(OCIO_ConstLookRcPtr *look)
+{
+	return (*(ConstLookRcPtr *) look)->getProcessSpace();
+}
+
+void OCIOImpl::lookRelease(OCIO_ConstLookRcPtr *look)
+{
+	MEM_DELETE((ConstLookRcPtr *) look, ConstLookRcPtr);
+}
+
 int OCIOImpl::colorSpaceIsInvertible(OCIO_ConstColorSpaceRcPtr *cs_)
 {
 	ConstColorSpaceRcPtr *cs = (ConstColorSpaceRcPtr *) cs_;
@@ -481,6 +534,16 @@
 	(*(DisplayTransformRcPtr *) dt)->setLinearCC(*(ConstTransformRcPtr *) t);
 }
 
+void OCIOImpl::displayTransformSetLooksOverride(OCIO_DisplayTransformRcPtr *dt, const char *looks)
+{
+	(*(DisplayTransformRcPtr *) dt)->setLooksOverride(looks);
+}
+
+void OCIOImpl::displayTransformSetLooksOverrideEnabled(OCIO_DisplayTransformRcPtr *dt, bool enabled)
+{
+	(*(DisplayTransformRcPtr *) dt)->setLooksOverrideEnabled(enabled);
+}
+
 void OCIOImpl::displayTransformRelease(OCIO_DisplayTransformRcPtr *dt)
 {
 	MEM_DELETE((DisplayTransformRcPtr *) dt, DisplayTransformRcPtr);

Modified: trunk/blender/intern/opencolorio/ocio_impl.h
===================================================================
--- trunk/blender/intern/opencolorio/ocio_impl.h	2013-09-09 09:42:37 UTC (rev 59944)
+++ trunk/blender/intern/opencolorio/ocio_impl.h	2013-09-09 09:48:26 UTC (rev 59945)
@@ -58,6 +58,13 @@
 	virtual const char *configGetView(OCIO_ConstConfigRcPtr *config, const char *display, int index) = 0;
 	virtual const char *configGetDisplayColorSpaceName(OCIO_ConstConfigRcPtr *config, const char *display, const char *view) = 0;
 
+	virtual int                  configGetNumLooks(OCIO_ConstConfigRcPtr *config) = 0;
+	virtual const char          *configGetLookNameByIndex(OCIO_ConstConfigRcPtr *config, int index) = 0;
+	virtual OCIO_ConstLookRcPtr *configGetLook(OCIO_ConstConfigRcPtr *config, const char *name) = 0;
+
+	virtual const char *lookGetProcessSpace(OCIO_ConstLookRcPtr *look) = 0;
+	virtual void        lookRelease(OCIO_ConstLookRcPtr *look) = 0;
+
 	virtual OCIO_ConstProcessorRcPtr *configGetProcessorWithNames(OCIO_ConstConfigRcPtr *config, const char *srcName, const char *dstName) = 0;
 	virtual OCIO_ConstProcessorRcPtr *configGetProcessor(OCIO_ConstConfigRcPtr *config, OCIO_ConstTransformRcPtr *transform) = 0;
 
@@ -79,6 +86,8 @@
 	virtual void displayTransformSetView(OCIO_DisplayTransformRcPtr *dt, const char *name) = 0;
 	virtual void displayTransformSetDisplayCC(OCIO_DisplayTransformRcPtr *dt, OCIO_ConstTransformRcPtr *et) = 0;
 	virtual void displayTransformSetLinearCC(OCIO_DisplayTransformRcPtr *dt, OCIO_ConstTransformRcPtr *et) = 0;
+	virtual void displayTransformSetLooksOverride(OCIO_DisplayTransformRcPtr *dt, const char *looks) = 0;
+	virtual void displayTransformSetLooksOverrideEnabled(OCIO_DisplayTransformRcPtr *dt, bool enabled) = 0;
 	virtual void displayTransformRelease(OCIO_DisplayTransformRcPtr *dt) = 0;
 
 	virtual OCIO_PackedImageDesc *createOCIO_PackedImageDesc(float *data, long width, long height, long numChannels,
@@ -132,6 +141,13 @@
 	const char *configGetView(OCIO_ConstConfigRcPtr *config, const char *display, int index);
 	const char *configGetDisplayColorSpaceName(OCIO_ConstConfigRcPtr *config, const char *display, const char *view);
 
+	int                  configGetNumLooks(OCIO_ConstConfigRcPtr *config);
+	const char          *configGetLookNameByIndex(OCIO_ConstConfigRcPtr *config, int index);
+	OCIO_ConstLookRcPtr *configGetLook(OCIO_ConstConfigRcPtr *config, const char *name);
+
+	const char *lookGetProcessSpace(OCIO_ConstLookRcPtr *look);
+	void        lookRelease(OCIO_ConstLookRcPtr *look);
+
 	OCIO_ConstProcessorRcPtr *configGetProcessorWithNames(OCIO_ConstConfigRcPtr *config, const char *srcName, const char *dstName);
 	OCIO_ConstProcessorRcPtr *configGetProcessor(OCIO_ConstConfigRcPtr *config, OCIO_ConstTransformRcPtr *transform);
 
@@ -153,6 +169,8 @@
 	void displayTransformSetView(OCIO_DisplayTransformRcPtr *dt, const char *name);
 	void displayTransformSetDisplayCC(OCIO_DisplayTransformRcPtr *dt, OCIO_ConstTransformRcPtr *et);
 	void displayTransformSetLinearCC(OCIO_DisplayTransformRcPtr *dt, OCIO_ConstTransformRcPtr *et);
+	void displayTransformSetLooksOverride(OCIO_DisplayTransformRcPtr *dt, const char *looks);

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list