[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [36566] branches/cycles/intern/cycles: Cycles: fix color difference between render / 3d view with color management disabled.

Brecht Van Lommel brechtvanlommel at pandora.be
Mon May 9 11:03:08 CEST 2011


Revision: 36566
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36566
Author:   blendix
Date:     2011-05-09 09:03:08 +0000 (Mon, 09 May 2011)
Log Message:
-----------
Cycles: fix color difference between render / 3d view with color management disabled.

Modified Paths:
--------------
    branches/cycles/intern/cycles/blender/blender_session.cpp
    branches/cycles/intern/cycles/util/util_color.h

Modified: branches/cycles/intern/cycles/blender/blender_session.cpp
===================================================================
--- branches/cycles/intern/cycles/blender/blender_session.cpp	2011-05-09 08:20:39 UTC (rev 36565)
+++ branches/cycles/intern/cycles/blender/blender_session.cpp	2011-05-09 09:03:08 UTC (rev 36566)
@@ -130,14 +130,17 @@
 
 	vector<float4> buffer(width*height);
 	float fac = 1.0f/255.0f;
+	bool color_management = b_scene.render().use_color_management();
 
 	/* normalize */
 	for(int i = width*height - 1; i >= 0; i--) {
 		uchar4 f = rgba[i];
-		float r = color_srgb_to_scene_linear(f.x*fac);
-		float g = color_srgb_to_scene_linear(f.y*fac);
-		float b = color_srgb_to_scene_linear(f.z*fac);
-		buffer[i] = make_float4(r, g, b, 1.0f);
+		float3 rgb = make_float3(f.x, f.y, f.z)*fac;
+
+		if(color_management)
+			rgb = color_srgb_to_scene_linear(rgb);
+
+		buffer[i] = make_float4(rgb.x, rgb.y, rgb.z, 1.0f);
 	}
 
 	struct RenderResult *rrp = RE_engine_begin_result((RenderEngine*)b_engine.ptr.data, 0, 0, width, height);

Modified: branches/cycles/intern/cycles/util/util_color.h
===================================================================
--- branches/cycles/intern/cycles/util/util_color.h	2011-05-09 08:20:39 UTC (rev 36565)
+++ branches/cycles/intern/cycles/util/util_color.h	2011-05-09 09:03:08 UTC (rev 36566)
@@ -40,6 +40,22 @@
 		return 1.055f * pow(c, 1.0f/2.4f) - 0.055f;
 }
 
+__device float3 color_srgb_to_scene_linear(float3 c)
+{
+	return make_float3(
+		color_srgb_to_scene_linear(c.x),
+		color_srgb_to_scene_linear(c.y),
+		color_srgb_to_scene_linear(c.z));
+}
+
+__device float3 color_scene_linear_to_srgb(float3 c)
+{
+	return make_float3(
+		color_scene_linear_to_srgb(c.x),
+		color_scene_linear_to_srgb(c.y),
+		color_scene_linear_to_srgb(c.z));
+}
+
 CCL_NAMESPACE_END
 
 #endif /* __UTIL_COLOR_H__ */




More information about the Bf-blender-cvs mailing list