[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