[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