[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [50485] trunk/blender/source/blender: Fix #32513: incorrect color management in Material draw mode for Cycles.

Brecht Van Lommel brechtvanlommel at pandora.be
Sun Sep 9 13:04:49 CEST 2012


Revision: 50485
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50485
Author:   blendix
Date:     2012-09-09 11:04:49 +0000 (Sun, 09 Sep 2012)
Log Message:
-----------
Fix #32513: incorrect color management in Material draw mode for Cycles.

Modified Paths:
--------------
    trunk/blender/source/blender/gpu/GPU_material.h
    trunk/blender/source/blender/gpu/intern/gpu_material.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

Modified: trunk/blender/source/blender/gpu/GPU_material.h
===================================================================
--- trunk/blender/source/blender/gpu/GPU_material.h	2012-09-09 08:33:42 UTC (rev 50484)
+++ trunk/blender/source/blender/gpu/GPU_material.h	2012-09-09 11:04:49 UTC (rev 50485)
@@ -135,6 +135,8 @@
 void GPU_material_vertex_attributes(GPUMaterial *material,
 	struct GPUVertexAttribs *attrib);
 
+int GPU_material_do_color_management(GPUMaterial *mat);
+
 /* Exported shading */
 
 typedef struct GPUShadeInput {

Modified: trunk/blender/source/blender/gpu/intern/gpu_material.c
===================================================================
--- trunk/blender/source/blender/gpu/intern/gpu_material.c	2012-09-09 08:33:42 UTC (rev 50484)
+++ trunk/blender/source/blender/gpu/intern/gpu_material.c	2012-09-09 11:04:49 UTC (rev 50485)
@@ -387,7 +387,7 @@
 
 /* Code generation */
 
-static int gpu_do_color_management(GPUMaterial *mat)
+int GPU_material_do_color_management(GPUMaterial *mat)
 {
 	return ((mat->scene->r.color_mgt_flag & R_COLOR_MANAGEMENT) &&
 	   !((mat->scene->gm.flag & GAME_GLSL_NO_COLOR_MANAGEMENT)));
@@ -1076,7 +1076,7 @@
 				}
 
 				if (tex->type==TEX_IMAGE)
-					if (gpu_do_color_management(mat))
+					if (GPU_material_do_color_management(mat))
 						GPU_link(mat, "srgb_to_linearrgb", tcol, &tcol);
 				
 				if (mtex->mapto & MAP_COL) {
@@ -1372,7 +1372,7 @@
 	GPU_link(mat, "set_value", GPU_uniform(&ma->amb), &shi->amb);
 	GPU_link(mat, "shade_view", GPU_builtin(GPU_VIEW_POSITION), &shi->view);
 	GPU_link(mat, "vcol_attribute", GPU_attribute(CD_MCOL, ""), &shi->vcol);
-	if (gpu_do_color_management(mat))
+	if (GPU_material_do_color_management(mat))
 		GPU_link(mat, "srgb_to_linearrgb", shi->vcol, &shi->vcol);
 	GPU_link(mat, "texco_refl", shi->vn, shi->view, &shi->ref);
 }
@@ -1516,13 +1516,10 @@
 		GPU_material_output_link(mat, outlink);
 	}
 
-	if (!BKE_scene_use_new_shading_nodes(scene)) {
-		if (gpu_do_color_management(mat))
-			if (mat->outlink)
-				GPU_link(mat, "linearrgb_to_srgb", mat->outlink, &mat->outlink);
-	}
+	if (GPU_material_do_color_management(mat))
+		if (mat->outlink)
+			GPU_link(mat, "linearrgb_to_srgb", mat->outlink, &mat->outlink);
 
-
 	GPU_material_construct_end(mat);
 
 	/* note that even if building the shader fails in some way, we still keep

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-09-09 08:33:42 UTC (rev 50484)
+++ trunk/blender/source/blender/nodes/shader/nodes/node_shader_tex_environment.c	2012-09-09 11:04:49 UTC (rev 50485)
@@ -69,6 +69,9 @@
 
 	node_shader_gpu_tex_mapping(mat, node, in, out);
 
+	if (out[0].link && GPU_material_do_color_management(mat))
+		GPU_link(mat, "srgb_to_linearrgb", out[0].link, &out[0].link);
+
 	return GPU_stack_link(mat, "node_tex_environment", in, out, GPU_image(ima, iuser, ncd));
 }
 

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-09-09 08:33:42 UTC (rev 50484)
+++ trunk/blender/source/blender/nodes/shader/nodes/node_shader_tex_image.c	2012-09-09 11:04:49 UTC (rev 50485)
@@ -69,6 +69,9 @@
 
 	node_shader_gpu_tex_mapping(mat, node, in, out);
 
+	if (out[0].link && GPU_material_do_color_management(mat))
+		GPU_link(mat, "srgb_to_linearrgb", out[0].link, &out[0].link);
+
 	return GPU_stack_link(mat, "node_tex_image", in, out, GPU_image(ima, iuser, ncd));
 }
 




More information about the Bf-blender-cvs mailing list