[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [46193] trunk/blender/source/blender/nodes /composite/nodes/node_composite_blur.c: Small enhancement to Fast Gaussian compo blur node: do not compute when size is below 0.001!

Bastien Montagne montagne29 at wanadoo.fr
Wed May 2 16:29:12 CEST 2012


Revision: 46193
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=46193
Author:   mont29
Date:     2012-05-02 14:29:12 +0000 (Wed, 02 May 2012)
Log Message:
-----------
Small enhancement to Fast Gaussian compo blur node: do not compute when size is below 0.001!

(Was already checked/done for other blur algos, can be annoying when you animate the blur size to apply it only on a few frames.)

Modified Paths:
--------------
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_blur.c

Modified: trunk/blender/source/blender/nodes/composite/nodes/node_composite_blur.c
===================================================================
--- trunk/blender/source/blender/nodes/composite/nodes/node_composite_blur.c	2012-05-02 14:23:00 UTC (rev 46192)
+++ trunk/blender/source/blender/nodes/composite/nodes/node_composite_blur.c	2012-05-02 14:29:12 UTC (rev 46193)
@@ -605,36 +605,40 @@
 		out[0]->data= new;
 	}
 	else if (nbd->filtertype == R_FILTER_FAST_GAUSS) {
-		CompBuf *new, *img = in[0]->data;
-		// TODO: can this be mapped with reference, too?
-		const float sx = ((float)nbd->sizex*in[1]->vec[0])/2.0f, sy = ((float)nbd->sizey*in[1]->vec[0])/2.0f;
-		int c;
+		if (in[1]->vec[0] < 0.001f) { /* time node inputs can be a tiny value */
+			new = pass_on_compbuf(img);
+		}
+		else {
+			CompBuf *new, *img = in[0]->data;
+			// TODO: can this be mapped with reference, too?
+			const float sx = ((float)nbd->sizex*in[1]->vec[0])/2.0f, sy = ((float)nbd->sizey*in[1]->vec[0])/2.0f;
+			int c;
 
-		if ((img==NULL) || (out[0]->hasoutput==0)) return;
+			if ((img==NULL) || (out[0]->hasoutput==0)) return;
 
-		if (img->type == CB_VEC2)
-			new = typecheck_compbuf(img, CB_VAL);
-		else if (img->type == CB_VEC3)
-			new = typecheck_compbuf(img, CB_RGBA);
-		else
-			new = dupalloc_compbuf(img);
+			if (img->type == CB_VEC2)
+				new = typecheck_compbuf(img, CB_VAL);
+			else if (img->type == CB_VEC3)
+				new = typecheck_compbuf(img, CB_RGBA);
+			else
+				new = dupalloc_compbuf(img);
 
-		if ((sx == sy) && (sx > 0.f)) {
-			for (c=0; c<new->type; ++c)
-				IIR_gauss(new, sx, c, 3);
-		}
-		else {
-			if (sx > 0.f) {
+			if ((sx == sy) && (sx > 0.f)) {
 				for (c=0; c<new->type; ++c)
-					IIR_gauss(new, sx, c, 1);
+					IIR_gauss(new, sx, c, 3);
 			}
-			if (sy > 0.f) {
-				for (c=0; c<new->type; ++c)
-					IIR_gauss(new, sy, c, 2);
+			else {
+				if (sx > 0.f) {
+					for (c=0; c<new->type; ++c)
+						IIR_gauss(new, sx, c, 1);
+				}
+				if (sy > 0.f) {
+					for (c=0; c<new->type; ++c)
+						IIR_gauss(new, sy, c, 2);
+				}
 			}
 		}
 		out[0]->data = new;
-		
 	}
 	else {
 		/* All non fast gauss blur methods */




More information about the Bf-blender-cvs mailing list