[Bf-blender-cvs] [eb5e7d0a31e] blender-v3.2-release: Cleanup: clarify what is scene linear color space in conversion conversion

Brecht Van Lommel noreply at git.blender.org
Mon May 23 15:36:58 CEST 2022


Commit: eb5e7d0a31eed698909c23ab0ca89c8fd4929365
Author: Brecht Van Lommel
Date:   Fri May 20 17:54:43 2022 +0200
Branches: blender-v3.2-release
https://developer.blender.org/rBeb5e7d0a31eed698909c23ab0ca89c8fd4929365

Cleanup: clarify what is scene linear color space in conversion conversion

* Rename ambiguous rgb to scene_linear in some places
* Precompute matrices to directly go to scene instead of through XYZ
* Make function signatures more consistent

===================================================================

M	intern/opencolorio/fallback_impl.cc
M	intern/opencolorio/ocio_capi.cc
M	intern/opencolorio/ocio_capi.h
M	intern/opencolorio/ocio_impl.cc
M	intern/opencolorio/ocio_impl.h
M	source/blender/editors/interface/interface_handlers.c
M	source/blender/editors/interface/interface_ops.c
M	source/blender/editors/interface/interface_region_color_picker.cc
M	source/blender/editors/sculpt_paint/paint_image.cc
M	source/blender/editors/sculpt_paint/paint_vertex.cc
M	source/blender/editors/sculpt_paint/sculpt_expand.c
M	source/blender/editors/sculpt_paint/sculpt_filter_color.c
M	source/blender/editors/sculpt_paint/sculpt_ops.c
M	source/blender/editors/sculpt_paint/sculpt_paint_color.c
M	source/blender/imbuf/IMB_colormanagement.h
M	source/blender/imbuf/intern/IMB_colormanagement_intern.h
M	source/blender/imbuf/intern/colormanagement.c
M	source/blender/imbuf/intern/colormanagement_inline.c
M	source/blender/nodes/shader/node_shader_util.cc
M	source/blender/python/mathutils/mathutils_Color.c

===================================================================

diff --git a/intern/opencolorio/fallback_impl.cc b/intern/opencolorio/fallback_impl.cc
index 71b5ab9def2..8fc0ccd7918 100644
--- a/intern/opencolorio/fallback_impl.cc
+++ b/intern/opencolorio/fallback_impl.cc
@@ -241,10 +241,11 @@ void FallbackImpl::configGetDefaultLumaCoefs(OCIO_ConstConfigRcPtr * /*config*/,
   rgb[2] = 0.0722f;
 }
 
-void FallbackImpl::configGetXYZtoRGB(OCIO_ConstConfigRcPtr * /*config*/, float xyz_to_rgb[3][3])
+void FallbackImpl::configGetXYZtoSceneLinear(OCIO_ConstConfigRcPtr * /*config*/,
+                                             float xyz_to_scene_linear[3][3])
 {
   /* Default to ITU-BT.709. */
-  memcpy(xyz_to_rgb, OCIO_XYZ_TO_REC709, sizeof(OCIO_XYZ_TO_REC709));
+  memcpy(xyz_to_scene_linear, OCIO_XYZ_TO_REC709, sizeof(OCIO_XYZ_TO_REC709));
 }
 
 int FallbackImpl::configGetNumLooks(OCIO_ConstConfigRcPtr * /*config*/)
diff --git a/intern/opencolorio/ocio_capi.cc b/intern/opencolorio/ocio_capi.cc
index 5e4c2a87a0b..b31f3794361 100644
--- a/intern/opencolorio/ocio_capi.cc
+++ b/intern/opencolorio/ocio_capi.cc
@@ -118,9 +118,9 @@ void OCIO_configGetDefaultLumaCoefs(OCIO_ConstConfigRcPtr *config, float *rgb)
   impl->configGetDefaultLumaCoefs(config, rgb);
 }
 
-void OCIO_configGetXYZtoRGB(OCIO_ConstConfigRcPtr *config, float xyz_to_rgb[3][3])
+void OCIO_configGetXYZtoSceneLinear(OCIO_ConstConfigRcPtr *config, float xyz_to_scene_linear[3][3])
 {
-  impl->configGetXYZtoRGB(config, xyz_to_rgb);
+  impl->configGetXYZtoSceneLinear(config, xyz_to_scene_linear);
 }
 
 int OCIO_configGetNumLooks(OCIO_ConstConfigRcPtr *config)
diff --git a/intern/opencolorio/ocio_capi.h b/intern/opencolorio/ocio_capi.h
index 4be838a218d..97e6ff02779 100644
--- a/intern/opencolorio/ocio_capi.h
+++ b/intern/opencolorio/ocio_capi.h
@@ -135,7 +135,8 @@ const char *OCIO_configGetDisplayColorSpaceName(OCIO_ConstConfigRcPtr *config,
                                                 const char *view);
 
 void OCIO_configGetDefaultLumaCoefs(OCIO_ConstConfigRcPtr *config, float *rgb);
-void OCIO_configGetXYZtoRGB(OCIO_ConstConfigRcPtr *config, float xyz_to_rgb[3][3]);
+void OCIO_configGetXYZtoSceneLinear(OCIO_ConstConfigRcPtr *config,
+                                    float xyz_to_scene_linear[3][3]);
 
 int OCIO_configGetNumLooks(OCIO_ConstConfigRcPtr *config);
 const char *OCIO_configGetLookNameByIndex(OCIO_ConstConfigRcPtr *config, int index);
diff --git a/intern/opencolorio/ocio_impl.cc b/intern/opencolorio/ocio_impl.cc
index a352c54da86..7cf7fbefcd6 100644
--- a/intern/opencolorio/ocio_impl.cc
+++ b/intern/opencolorio/ocio_impl.cc
@@ -311,13 +311,14 @@ static bool to_scene_linear_matrix(ConstConfigRcPtr &config,
   return true;
 }
 
-void OCIOImpl::configGetXYZtoRGB(OCIO_ConstConfigRcPtr *config_, float xyz_to_rgb[3][3])
+void OCIOImpl::configGetXYZtoSceneLinear(OCIO_ConstConfigRcPtr *config_,
+                                         float xyz_to_scene_linear[3][3])
 {
   ConstConfigRcPtr config = (*(ConstConfigRcPtr *)config_);
 
   /* Default to ITU-BT.709 in case no appropriate transform found.
    * Note XYZ is defined here as having a D65 white point. */
-  memcpy(xyz_to_rgb, OCIO_XYZ_TO_REC709, sizeof(OCIO_XYZ_TO_REC709));
+  memcpy(xyz_to_scene_linear, OCIO_XYZ_TO_REC709, sizeof(OCIO_XYZ_TO_REC709));
 
   /* Get from OpenColorO config if it has the required roles. */
   if (!config->hasRole(ROLE_SCENE_LINEAR)) {
@@ -326,17 +327,17 @@ void OCIOImpl::configGetXYZtoRGB(OCIO_ConstConfigRcPtr *config_, float xyz_to_rg
 
   if (config->hasRole("aces_interchange")) {
     /* Standard OpenColorIO role, defined as ACES AP0 (ACES2065-1). */
-    float aces_to_rgb[3][3];
-    if (to_scene_linear_matrix(config, "aces_interchange", aces_to_rgb)) {
+    float aces_to_scene_linear[3][3];
+    if (to_scene_linear_matrix(config, "aces_interchange", aces_to_scene_linear)) {
       float xyz_to_aces[3][3];
       invert_m3_m3(xyz_to_aces, OCIO_ACES_TO_XYZ);
 
-      mul_m3_m3m3(xyz_to_rgb, aces_to_rgb, xyz_to_aces);
+      mul_m3_m3m3(xyz_to_scene_linear, aces_to_scene_linear, xyz_to_aces);
     }
   }
   else if (config->hasRole("XYZ")) {
     /* Custom role used before the standard existed. */
-    to_scene_linear_matrix(config, "XYZ", xyz_to_rgb);
+    to_scene_linear_matrix(config, "XYZ", xyz_to_scene_linear);
   }
 }
 
diff --git a/intern/opencolorio/ocio_impl.h b/intern/opencolorio/ocio_impl.h
index f8397c62e52..2c00eff6d6c 100644
--- a/intern/opencolorio/ocio_impl.h
+++ b/intern/opencolorio/ocio_impl.h
@@ -48,7 +48,8 @@ class IOCIOImpl {
                                                      const char *view) = 0;
 
   virtual void configGetDefaultLumaCoefs(OCIO_ConstConfigRcPtr *config, float *rgb) = 0;
-  virtual void configGetXYZtoRGB(OCIO_ConstConfigRcPtr *config, float xyz_to_rgb[3][3]) = 0;
+  virtual void configGetXYZtoSceneLinear(OCIO_ConstConfigRcPtr *config,
+                                         float xyz_to_scene_linear[3][3]) = 0;
 
   virtual int configGetNumLooks(OCIO_ConstConfigRcPtr *config) = 0;
   virtual const char *configGetLookNameByIndex(OCIO_ConstConfigRcPtr *config, int index) = 0;
@@ -167,7 +168,7 @@ class FallbackImpl : public IOCIOImpl {
                                              const char *view);
 
   void configGetDefaultLumaCoefs(OCIO_ConstConfigRcPtr *config, float *rgb);
-  void configGetXYZtoRGB(OCIO_ConstConfigRcPtr *config, float xyz_to_rgb[3][3]);
+  void configGetXYZtoSceneLinear(OCIO_ConstConfigRcPtr *config, float xyz_to_scene_linear[3][3]);
 
   int configGetNumLooks(OCIO_ConstConfigRcPtr *config);
   const char *configGetLookNameByIndex(OCIO_ConstConfigRcPtr *config, int index);
@@ -257,7 +258,7 @@ class OCIOImpl : public IOCIOImpl {
                                              const char *view);
 
   void configGetDefaultLumaCoefs(OCIO_ConstConfigRcPtr *config, float *rgb);
-  void configGetXYZtoRGB(OCIO_ConstConfigRcPtr *config, float xyz_to_rgb[3][3]);
+  void configGetXYZtoSceneLinear(OCIO_ConstConfigRcPtr *config, float xyz_to_scene_linear[3][3]);
 
   int configGetNumLooks(OCIO_ConstConfigRcPtr *config);
   const char *configGetLookNameByIndex(OCIO_ConstConfigRcPtr *config, int index);
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index 9d7d76f0bdb..3e3b30a2c1e 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -6277,7 +6277,7 @@ static int ui_do_but_COLOR(bContext *C, uiBut *but, uiHandleButtonData *data, co
 
             if (but->rnaprop && RNA_property_subtype(but->rnaprop) == PROP_COLOR_GAMMA) {
               RNA_property_float_get_array(&but->rnapoin, but->rnaprop, target);
-              IMB_colormanagement_srgb_to_scene_linear_v3(target);
+              IMB_colormanagement_srgb_to_scene_linear_v3(target, target);
             }
             else if (but->rnaprop && RNA_property_subtype(but->rnaprop) == PROP_COLOR) {
               RNA_property_float_get_array(&but->rnapoin, but->rnaprop, target);
@@ -6294,7 +6294,7 @@ static int ui_do_but_COLOR(bContext *C, uiBut *but, uiHandleButtonData *data, co
             }
             else if (but->rnaprop && RNA_property_subtype(but->rnaprop) == PROP_COLOR) {
               RNA_property_float_get_array(&but->rnapoin, but->rnaprop, color);
-              IMB_colormanagement_scene_linear_to_srgb_v3(color);
+              IMB_colormanagement_scene_linear_to_srgb_v3(color, color);
               BKE_brush_color_set(scene, brush, color);
               updated = true;
             }
diff --git a/source/blender/editors/interface/interface_ops.c b/source/blender/editors/interface/interface_ops.c
index 5b97a80d513..f14c6ad9924 100644
--- a/source/blender/editors/interface/interface_ops.c
+++ b/source/blender/editors/interface/interface_ops.c
@@ -1895,14 +1895,14 @@ static int drop_color_invoke(bContext *C, wmOperator *op, const wmEvent *event)
 
     if (RNA_property_subtype(but->rnaprop) == PROP_COLOR_GAMMA) {
       if (!gamma) {
-        IMB_colormanagement_scene_linear_to_srgb_v3(color);
+        IMB_colormanagement_scene_linear_to_srgb_v3(color, color);
       }
       RNA_property_float_set_array(&but->rnapoin, but->rnaprop, color);
       RNA_property_update(C, &but->rnapoin, but->rnaprop);
     }
     else if (RNA_property_subtype(but->rnaprop) == PROP_COLOR) {
       if (gamma) {
-        IMB_colormanagement_srgb_to_scene_linear_v3(color);
+        IMB_colormanagement_srgb_to_scene_linear_v3(color, color);
       }
       RNA_property_float_set_array(&but->rnapoin, but->rnaprop, color);
       RNA_property_update(C, &but->rnapoin, but->rnaprop);
diff --git a/source/blender/editors/interface/interface_region_color_picker.cc b/source/blender/editors/interface/interface_region_color_picker.cc
index ab0a6039cdc..db1e5e653de 100644
--- a/source/blender/editors/interface/interface_region_color_picker.cc
+++ b/source/blender/editors/interface/interface_region_color_picker.cc
@@ -116,7 +116,7 @@ void ui_scene_linear_to_perceptual_space(uiBut *but, float rgb[3])
    * assuming it is more perceptually linear than the scene linear
    * space for intuitive color picking. */
   if (!ui_but_is_color_gamma(but)) {
-    IMB_colormanagement_scene_linear_to_color_picking_v3(rgb);
+    IMB_colormanagement_scene_linear_to_color_picking_v3(rgb, rgb);
     ui_color_picker_rgb_round(rgb);
   }
 }
@@ -124,7 +124,7 @@ void ui_scene_linear_to_perceptual_space(uiBut *but, float rgb[3])
 void ui_perceptual_to_scene_linear_space(uiBut *but, float rgb[3])
 {
   if (!ui_but_is_color_gamma(but)) {
-    IMB_colormanagement_color_picking_to_scene_linear_v3(rgb);
+    IMB_colormanagement_color_picking_to_scene_linear_v3(rgb, rgb);
     ui_color_picker_rgb_round(rgb);
   }
 }
@@ -208,7 +208,7 @@ static void ui_update_color_picker_buts_rgb(uiBut *from_but,
        * (coming from other applications, web, etc) */
       copy_v3_v3(rgb_hex, rgb_scene_linear);
       if (from_but && !ui_but_is_color_gamma(from_but)) {
-        IMB_colormanagement_scene_linear_to_srgb_v3(rgb_hex);
+        IMB_colormanagement_scene_linear_to_srgb_v3(rgb_hex, rgb_hex);
         ui_color_picker_rgb_round(rgb_hex);
       }
 
@@ -291,7 +291,7 @@ stati

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list