Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2013-09-09 13:48:26 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2013-09-09 13:48:26 +0400
commitcf8cddf07a34fe34ccb1223215c38de9effe6688 (patch)
treec5dea10e70e3043aa093ab7f97dffbe514b7cc09 /intern/opencolorio
parent0392acc607d26f3fb2681c7d8b0e5ad3a2d50d9a (diff)
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.
Diffstat (limited to 'intern/opencolorio')
-rw-r--r--intern/opencolorio/fallback_impl.cc32
-rw-r--r--intern/opencolorio/ocio_capi.cc35
-rw-r--r--intern/opencolorio/ocio_capi.h10
-rw-r--r--intern/opencolorio/ocio_impl.cc63
-rw-r--r--intern/opencolorio/ocio_impl.h27
5 files changed, 167 insertions, 0 deletions
diff --git a/intern/opencolorio/fallback_impl.cc b/intern/opencolorio/fallback_impl.cc
index 6b1ca9cbd15..36dac689287 100644
--- a/intern/opencolorio/fallback_impl.cc
+++ b/intern/opencolorio/fallback_impl.cc
@@ -162,6 +162,30 @@ const char *FallbackImpl::configGetDisplayColorSpaceName(OCIO_ConstConfigRcPtr *
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::displayTransformSetLinearCC(OCIO_DisplayTransformRcPtr * /*dt
{
}
+void FallbackImpl::displayTransformSetLooksOverride(OCIO_DisplayTransformRcPtr * /*dt*/, const char * /*looks*/)
+{
+}
+
+void FallbackImpl::displayTransformSetLooksOverrideEnabled(OCIO_DisplayTransformRcPtr * /*dt*/, bool /*enabled*/)
+{
+}
+
void FallbackImpl::displayTransformRelease(OCIO_DisplayTransformRcPtr * /*dt*/)
{
}
diff --git a/intern/opencolorio/ocio_capi.cc b/intern/opencolorio/ocio_capi.cc
index 48bba4811e8..1656ad9cbc0 100644
--- a/intern/opencolorio/ocio_capi.cc
+++ b/intern/opencolorio/ocio_capi.cc
@@ -132,6 +132,31 @@ const char *OCIO_configGetDisplayColorSpaceName(OCIO_ConstConfigRcPtr *config, c
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 @@ void OCIO_displayTransformSetLinearCC(OCIO_DisplayTransformRcPtr *dt, OCIO_Const
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);
diff --git a/intern/opencolorio/ocio_capi.h b/intern/opencolorio/ocio_capi.h
index c3f1710c836..0846b8ff7b3 100644
--- a/intern/opencolorio/ocio_capi.h
+++ b/intern/opencolorio/ocio_capi.h
@@ -52,6 +52,7 @@ OCIO_DECLARE_HANDLE(OCIO_DisplayTransformRcPtr);
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 @@ int OCIO_configGetNumViews(OCIO_ConstConfigRcPtr *config, const char *di
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_displayTransformSetDisplay(OCIO_DisplayTransformRcPtr *dt, const char
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,
diff --git a/intern/opencolorio/ocio_impl.cc b/intern/opencolorio/ocio_impl.cc
index 068a02dcb9b..dff25f238a7 100644
--- a/intern/opencolorio/ocio_impl.cc
+++ b/intern/opencolorio/ocio_impl.cc
@@ -282,6 +282,59 @@ const char *OCIOImpl::configGetDisplayColorSpaceName(OCIO_ConstConfigRcPtr *conf
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 @@ void OCIOImpl::displayTransformSetLinearCC(OCIO_DisplayTransformRcPtr *dt, OCIO_
(*(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);
diff --git a/intern/opencolorio/ocio_impl.h b/intern/opencolorio/ocio_impl.h
index ecb21d4ea6c..48d18fa78ea 100644
--- a/intern/opencolorio/ocio_impl.h
+++ b/intern/opencolorio/ocio_impl.h
@@ -58,6 +58,13 @@ public:
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 @@ public:
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 @@ public:
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 @@ public:
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);
+ void displayTransformSetLooksOverrideEnabled(OCIO_DisplayTransformRcPtr *dt, bool enabled);
void displayTransformRelease(OCIO_DisplayTransformRcPtr *dt);
OCIO_PackedImageDesc *createOCIO_PackedImageDesc(float *data, long width, long height, long numChannels,
@@ -207,6 +225,13 @@ public:
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);
@@ -228,6 +253,8 @@ public:
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);
+ void displayTransformSetLooksOverrideEnabled(OCIO_DisplayTransformRcPtr *dt, bool enabled);
void displayTransformRelease(OCIO_DisplayTransformRcPtr *dt);
OCIO_PackedImageDesc *createOCIO_PackedImageDesc(float *data, long width, long height, long numChannels,