[Bf-blender-cvs] [073ce98] master: Fix white balance sequencer modifier

Campbell Barton noreply at git.blender.org
Tue Feb 23 05:02:53 CET 2016


Commit: 073ce98231d5576c8bff2aab012ba341e058c316
Author: Campbell Barton
Date:   Tue Feb 23 14:50:30 2016 +1100
Branches: master
https://developer.blender.org/rB073ce98231d5576c8bff2aab012ba341e058c316

Fix white balance sequencer modifier

- division often visibly clipped channels.
- division by zero caused NAN pixel values.

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

M	source/blender/blenkernel/intern/seqmodifier.c

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

diff --git a/source/blender/blenkernel/intern/seqmodifier.c b/source/blender/blenkernel/intern/seqmodifier.c
index 94eb797..95c6b77 100644
--- a/source/blender/blenkernel/intern/seqmodifier.c
+++ b/source/blender/blenkernel/intern/seqmodifier.c
@@ -195,9 +195,9 @@ static void whiteBalance_apply_threaded(int width, int height, unsigned char *re
 
 	WhiteBalanceThreadData *data = (WhiteBalanceThreadData *) data_v;
 
-	multiplier[0] = 1.0f / data->white[0];
-	multiplier[1] = 1.0f / data->white[1];
-	multiplier[2] = 1.0f / data->white[2];
+	multiplier[0] = (data->white[0] != 0.0f) ? 1.0f / data->white[0] : FLT_MAX;
+	multiplier[1] = (data->white[1] != 0.0f) ? 1.0f / data->white[1] : FLT_MAX;
+	multiplier[2] = (data->white[2] != 0.0f) ? 1.0f / data->white[2] : FLT_MAX;
 
 	for (y = 0; y < height; y++) {
 		for (x = 0; x < width; x++) {
@@ -211,7 +211,14 @@ static void whiteBalance_apply_threaded(int width, int height, unsigned char *re
 				straight_uchar_to_premul_float(result, rect + pixel_index);
 			}
 
+#if 0
 			mul_v3_v3(result, multiplier);
+#else
+			/* similar to division without the clipping */
+			for (int i = 0; i < 3; i++) {
+				result[i] = 1.0f - powf(1.0f - result[i], multiplier[i]);
+			}
+#endif
 
 			if (mask_rect_float) {
 				copy_v3_v3(mask, mask_rect_float + pixel_index);




More information about the Bf-blender-cvs mailing list