[Bf-blender-cvs] [e5c6ca3] bake-cycles: Cycles-Bake: skipping color management transformations for data passes (e.g., Normal)

Dalai Felinto noreply at git.blender.org
Wed Apr 30 00:36:15 CEST 2014


Commit: e5c6ca3565f01280b537f5aad8a9abe3bff7275e
Author: Dalai Felinto
Date:   Tue Apr 29 19:35:18 2014 -0300
https://developer.blender.org/rBe5c6ca3565f01280b537f5aad8a9abe3bff7275e

Cycles-Bake: skipping color management transformations for data passes (e.g., Normal)

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

M	source/blender/editors/object/object_bake_api.c

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

diff --git a/source/blender/editors/object/object_bake_api.c b/source/blender/editors/object/object_bake_api.c
index 78c4a0d..33085b0 100644
--- a/source/blender/editors/object/object_bake_api.c
+++ b/source/blender/editors/object/object_bake_api.c
@@ -102,15 +102,13 @@ static int bake_break(void *UNUSED(rjv))
 static bool write_internal_bake_pixels(
         Image *image, BakePixel pixel_array[], float *buffer,
         const int width, const int height, const int margin,
-        const bool is_clear, const bool UNUSED(is_noncolor))
+        const bool is_clear, const bool is_noncolor)
 {
 	ImBuf *ibuf;
 	void *lock;
 	bool is_float;
 	char *mask_buffer = NULL;
 	const int num_pixels = width * height;
-	const char *from_colorspace;
-	const char *to_colorspace;
 
 	ibuf = BKE_image_acquire_ibuf(image, NULL, &lock);
 
@@ -122,17 +120,23 @@ static bool write_internal_bake_pixels(
 		RE_bake_mask_fill(pixel_array, num_pixels, mask_buffer);
 	}
 
-	/* colormanagement conversions */
 	is_float = (ibuf->flags & IB_rectfloat);
-	from_colorspace	= IMB_colormanagement_role_colorspace_name_get(COLOR_ROLE_SCENE_LINEAR);
 
-	if (is_float)
-		to_colorspace = IMB_colormanagement_get_float_colorspace(ibuf);
-	else
-		to_colorspace = IMB_colormanagement_get_rect_colorspace(ibuf);
+	/* colormanagement conversions */
+	if (!is_noncolor) {
+		const char *from_colorspace;
+		const char *to_colorspace;
+
+		from_colorspace = IMB_colormanagement_role_colorspace_name_get(COLOR_ROLE_SCENE_LINEAR);
+
+		if (is_float)
+			to_colorspace = IMB_colormanagement_get_float_colorspace(ibuf);
+		else
+			to_colorspace = IMB_colormanagement_get_rect_colorspace(ibuf);
 
-	if (from_colorspace != to_colorspace)
-		IMB_colormanagement_transform(buffer, ibuf->x, ibuf->y, ibuf->channels, from_colorspace, to_colorspace, false);
+		if (from_colorspace != to_colorspace)
+			IMB_colormanagement_transform(buffer, ibuf->x, ibuf->y, ibuf->channels, from_colorspace, to_colorspace, false);
+	}
 
 	/* populates the ImBuf */
 	if (is_clear) {
@@ -178,7 +182,7 @@ static bool write_internal_bake_pixels(
 static bool write_external_bake_pixels(
         const char *filepath, BakePixel pixel_array[], float *buffer,
         const int width, const int height, const int margin,
-        ImageFormatData *im_format, const bool UNUSED(is_noncolor))
+        ImageFormatData *im_format, const bool is_noncolor)
 {
 	ImBuf *ibuf = NULL;
 	bool ok = false;
@@ -200,10 +204,11 @@ static bool write_external_bake_pixels(
 		        ibuf->x, ibuf->y, ibuf->x, ibuf->y);
 	}
 	else {
-		const char *from_colorspace = IMB_colormanagement_role_colorspace_name_get(COLOR_ROLE_SCENE_LINEAR);
-		const char *to_colorspace = IMB_colormanagement_get_rect_colorspace(ibuf);
-
-		IMB_colormanagement_transform(buffer, ibuf->x, ibuf->y, ibuf->channels, from_colorspace, to_colorspace, false);
+		if (!is_noncolor) {
+			const char *from_colorspace = IMB_colormanagement_role_colorspace_name_get(COLOR_ROLE_SCENE_LINEAR);
+			const char *to_colorspace = IMB_colormanagement_get_rect_colorspace(ibuf);
+			IMB_colormanagement_transform(buffer, ibuf->x, ibuf->y, ibuf->channels, from_colorspace, to_colorspace, false);
+		}
 
 		IMB_buffer_byte_from_float(
 		        (unsigned char *) ibuf->rect, buffer, ibuf->channels, ibuf->dither,




More information about the Bf-blender-cvs mailing list