[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51532] trunk/blender/source/blender: Correction to recent fix for shader nodes -- image could be not loaded yet

Sergey Sharybin sergey.vfx at gmail.com
Tue Oct 23 13:44:47 CEST 2012


Revision: 51532
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51532
Author:   nazgul
Date:     2012-10-23 11:44:47 +0000 (Tue, 23 Oct 2012)
Log Message:
-----------
Correction to recent fix for shader nodes -- image could be not loaded yet
when tree is being executed. This could lead to nor initialized color space
for the image.

Solved by insuring image buffer is loaded before checking for whether color
conversion is needed.

Modified Paths:
--------------
    trunk/blender/source/blender/imbuf/IMB_colormanagement.h
    trunk/blender/source/blender/imbuf/intern/colormanagement.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_tex_environment.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_tex_image.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_texture.c

Modified: trunk/blender/source/blender/imbuf/IMB_colormanagement.h
===================================================================
--- trunk/blender/source/blender/imbuf/IMB_colormanagement.h	2012-10-23 11:10:40 UTC (rev 51531)
+++ trunk/blender/source/blender/imbuf/IMB_colormanagement.h	2012-10-23 11:44:47 UTC (rev 51532)
@@ -62,8 +62,6 @@
 void IMB_colormanagement_assign_float_colorspace(struct ImBuf *ibuf, const char *name);
 void IMB_colormanagement_assign_rect_colorspace(struct ImBuf *ibuf, const char *name);
 
-int IMB_colormanagement_colorspace_is_data(const char *name);
-
 /* ** Color space transformation functions ** */
 void IMB_colormanagement_transform(float *buffer, int width, int height, int channels,
                                    const char *from_colorspace, const char *to_colorspace, int predivide);

Modified: trunk/blender/source/blender/imbuf/intern/colormanagement.c
===================================================================
--- trunk/blender/source/blender/imbuf/intern/colormanagement.c	2012-10-23 11:10:40 UTC (rev 51531)
+++ trunk/blender/source/blender/imbuf/intern/colormanagement.c	2012-10-23 11:44:47 UTC (rev 51532)
@@ -1113,13 +1113,6 @@
 		ibuf->colormanage_flag &= ~IMB_COLORMANAGE_IS_DATA;
 }
 
-int IMB_colormanagement_colorspace_is_data(const char *name)
-{
-	ColorSpace *colorspace = colormanage_colorspace_get_named(name);
-
-	return colorspace->is_data;
-}
-
 /*********************** Threaded display buffer transform routines *************************/
 
 typedef struct DisplayBufferThread {

Modified: trunk/blender/source/blender/nodes/shader/nodes/node_shader_tex_environment.c
===================================================================
--- trunk/blender/source/blender/nodes/shader/nodes/node_shader_tex_environment.c	2012-10-23 11:10:40 UTC (rev 51531)
+++ trunk/blender/source/blender/nodes/shader/nodes/node_shader_tex_environment.c	2012-10-23 11:44:47 UTC (rev 51532)
@@ -75,8 +75,9 @@
 	ret = GPU_stack_link(mat, "node_tex_environment", in, out, GPU_image(ima, iuser, ncd));
 
 	if (ret) {
-		if (GPU_material_do_color_management(mat) &&
-		    IMB_colormanagement_colorspace_is_data(ima->colorspace_settings.name) == FALSE)
+		ImBuf *ibuf = BKE_image_get_ibuf(ima, iuser);
+		if (ibuf && (ibuf->colormanage_flag & IMB_COLORMANAGE_IS_DATA) == 0 &&
+		    GPU_material_do_color_management(mat))
 		{
 			GPU_link(mat, "srgb_to_linearrgb", out[0].link, &out[0].link);
 		}

Modified: trunk/blender/source/blender/nodes/shader/nodes/node_shader_tex_image.c
===================================================================
--- trunk/blender/source/blender/nodes/shader/nodes/node_shader_tex_image.c	2012-10-23 11:10:40 UTC (rev 51531)
+++ trunk/blender/source/blender/nodes/shader/nodes/node_shader_tex_image.c	2012-10-23 11:44:47 UTC (rev 51532)
@@ -75,8 +75,9 @@
 	ret = GPU_stack_link(mat, "node_tex_image", in, out, GPU_image(ima, iuser, ncd));
 
 	if (ret) {
-		if (GPU_material_do_color_management(mat) &&
-		    IMB_colormanagement_colorspace_is_data(ima->colorspace_settings.name) == FALSE)
+		ImBuf *ibuf = BKE_image_get_ibuf(ima, iuser);
+		if (ibuf && (ibuf->colormanage_flag & IMB_COLORMANAGE_IS_DATA) == 0 &&
+		    GPU_material_do_color_management(mat))
 		{
 			GPU_link(mat, "srgb_to_linearrgb", out[0].link, &out[0].link);
 		}

Modified: trunk/blender/source/blender/nodes/shader/nodes/node_shader_texture.c
===================================================================
--- trunk/blender/source/blender/nodes/shader/nodes/node_shader_texture.c	2012-10-23 11:10:40 UTC (rev 51531)
+++ trunk/blender/source/blender/nodes/shader/nodes/node_shader_texture.c	2012-10-23 11:44:47 UTC (rev 51532)
@@ -128,8 +128,9 @@
 		int ret = GPU_stack_link(mat, "texture_image", in, out, texlink);
 
 		if (ret) {
-			if (GPU_material_do_color_management(mat) &&
-			    IMB_colormanagement_colorspace_is_data(tex->ima->colorspace_settings.name) == FALSE)
+			ImBuf *ibuf = BKE_image_get_ibuf(tex->ima, &tex->iuser);
+			if (ibuf && (ibuf->colormanage_flag & IMB_COLORMANAGE_IS_DATA) ==0 &&
+			    GPU_material_do_color_management(mat))
 			{
 				GPU_link(mat, "srgb_to_linearrgb", out[1].link, &out[1].link);
 			}




More information about the Bf-blender-cvs mailing list