[Bf-committers] [11203] trunk/blender/source/blender: Added normalize compositing node.

GSR gsr.b3d at infernal-iceberg.com
Tue Jul 10 22:46:28 CEST 2007


Hi,
bob_holcomb at hotmail.com (2007-07-10 at 0427.43 +0200):
> Revision: 11203
>           http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11203
> Author:   scourage
> Date:     2007-07-10 04:27:37 +0200 (Tue, 10 Jul 2007)
> 
> Log Message:
> -----------
> Added normalize compositing node. 

"Thanks" for _not_ giving credit or patch url at all.

At first I thought it was another case of "oops, coded it and later
noticed there was a similar patch/bugfix, so closed that and went with
my version, sorry". But then decided to check what differences
existed, to learn anything interesting, and realized the code is
mostly the same.

So fix it (svn allows changing logs, but no idea if enabled, other
issues are simpler, just change files) or revert the commit, as there
is base for an authorship misappropiation issue.

> Modified Paths:
> --------------
>     trunk/blender/source/blender/blenkernel/BKE_node.h
>     trunk/blender/source/blender/blenkernel/intern/node.c
>     trunk/blender/source/blender/nodes/CMP_node.h
> 
> Added Paths:
> -----------
>     trunk/blender/source/blender/nodes/intern/CMP_nodes/CMP_normalize.c
> 
> Modified: trunk/blender/source/blender/blenkernel/BKE_node.h
> ===================================================================
> --- trunk/blender/source/blender/blenkernel/BKE_node.h	2007-07-10 02:06:10 UTC (rev 11202)
> +++ trunk/blender/source/blender/blenkernel/BKE_node.h	2007-07-10 02:27:37 UTC (rev 11203)
> @@ -298,6 +298,7 @@
>  #define CMP_NODE_BRIGHTCONTRAST 249
>  #define CMP_NODE_GAMMA		250
>  #define CMP_NODE_INVERT		251
> +#define CMP_NODE_NORMALIZE      252

You reviewed the patch as the ID provided was one to avoid collisions
in local version.
 
>  /* channel toggles */
>  #define CMP_CHAN_RGB		1
> 
> Modified: trunk/blender/source/blender/blenkernel/intern/node.c
> ===================================================================
> --- trunk/blender/source/blender/blenkernel/intern/node.c	2007-07-10 02:06:10 UTC (rev 11202)
> +++ trunk/blender/source/blender/blenkernel/intern/node.c	2007-07-10 02:27:37 UTC (rev 11203)
> @@ -2331,6 +2331,7 @@
>  	nodeRegisterType(ntypelist, &cmp_node_normal);
>  	nodeRegisterType(ntypelist, &cmp_node_curve_vec);
>  	nodeRegisterType(ntypelist, &cmp_node_map_value);
> +	nodeRegisterType(ntypeList, &cmp_node_normalize);
>  	
>  	nodeRegisterType(ntypelist, &cmp_node_filter);
>  	nodeRegisterType(ntypelist, &cmp_node_blur);
> 
> Modified: trunk/blender/source/blender/nodes/CMP_node.h
> ===================================================================
> --- trunk/blender/source/blender/nodes/CMP_node.h	2007-07-10 02:06:10 UTC (rev 11202)
> +++ trunk/blender/source/blender/nodes/CMP_node.h	2007-07-10 02:27:37 UTC (rev 11203)
> @@ -62,6 +62,7 @@
>  extern bNodeType cmp_node_normal;
>  extern bNodeType cmp_node_curve_vec;
>  extern bNodeType cmp_node_map_value;
> +extern bNodeType cmp_node_normalize;

Another adaptation.

>  extern bNodeType cmp_node_filter;
>  extern bNodeType cmp_node_blur;
> 
> Added: trunk/blender/source/blender/nodes/intern/CMP_nodes/CMP_normalize.c
> ===================================================================
> --- trunk/blender/source/blender/nodes/intern/CMP_nodes/CMP_normalize.c	                        (rev 0)
> +++ trunk/blender/source/blender/nodes/intern/CMP_nodes/CMP_normalize.c	2007-07-10 02:27:37 UTC (rev 11203)
> @@ -0,0 +1,113 @@
> +/**
> + * $Id: CMP_normalize.c,v 1.0 2007/03/24 06:57:29 scourage Exp $
> + *
> + * ***** BEGIN GPL LICENSE BLOCK *****
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License
> + * as published by the Free Software Foundation; either version 2
> + * of the License, or (at your option) any later version. 
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software Foundation,
> + * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
> + *
> + * The Original Code is Copyright (C) 2006 Blender Foundation.
> + * All rights reserved.
> + *
> + * The Original Code is: all of this file.
> + *
> + * Contributor(s): none yet.
> + *
> + * ***** END GPL LICENSE BLOCK *****
> + */

But forgot to review the legal block or just replace with one you know
to be good and then fill the fields as required. What if patch sneaked
something weird there?

> +
> +#include "../CMP_util.h"
> +
> +

Lines below a mostly a 100% copy of the patch, so hard to go with the
"oops, this is another version".

> +/* **************** NORMALIZE single channel, useful for Z buffer ******************** */
> +static bNodeSocketType cmp_node_normalize_in[]= {
> +	{   SOCK_VALUE, 1, "Value",         1.0f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f},
> +	{   -1, 0, ""   }
> +};
> +static bNodeSocketType cmp_node_normalize_out[]= {
> +	{   SOCK_VALUE, 0, "Value",         1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f},
> +	{   -1, 0, ""   }
> +};
> +
> +static void do_normalize(bNode *node, float *out, float *src, float *min, float *mult)
> +{
> +	float res;
> +	res = (src[0] - min[0]) * mult[0];
> +	if (res > 1.0f) {
> +		out[0] = 1.0f;
> +	}
> +	else if (res < 0.0f) {
> +		out[0] = 0.0f;
> +	}
> +	else {
> +		out[0] = res;
> +	}
> +}
> +
> +#define BLENDER_ZMAX 10000.0f
> +
> +static void node_composit_exec_normalize(void *data, bNode *node, bNodeStack **in, bNodeStack **out)
> +{
> +	/* stack order in: valbuf */
> +	/* stack order out: valbuf */
> +	if(out[0]->hasoutput==0) return;
> +
> +	/* input no image? then only value operation */
> +	if(in[0]->data==NULL) {
> +		QUATCOPY(out[0]->vec, in[0]->vec);
> +	}
> +	else {
> +		float min = 1.0f+BLENDER_ZMAX;
> +		float max = -1.0f-BLENDER_ZMAX;
> +		float mult = 1.0f;
> +		float *val;
> +		/* make output size of input image */
> +		CompBuf *cbuf= in[0]->data;
> +		int tot= cbuf->x*cbuf->y;
> +		CompBuf *stackbuf= alloc_compbuf(cbuf->x, cbuf->y, CB_VAL, 1); /* allocs */
> +
> +		for (val = cbuf->rect; tot; tot--, val++) {
> +			if ((*val > max) && (*val < BLENDER_ZMAX)) {
> +				max = *val;
> +			}
> +			if (*val < min) {
> +				min = *val;
> +			}
> +		}
> +		mult = 1.0f/(max-min);
> +
> +		printf("min %f max %f\n", min, max);

Debug line. I doubt users will like that printed per pass (it could be
useful as out sockets or as extra statistic nodes, tho).

> +
> +		composit3_pixel_processor(node, stackbuf, in[0]->data, in[0]->vec, NULL, &min, NULL, &mult, do_normalize, CB_VAL, CB_VAL, CB_VAL);
> +
> +		out[0]->data= stackbuf;
> +	}
> +}
> +
> +bNodeType cmp_node_normalize= {
> +	/* *next, *prev*/   NULL, NULL,
> +	/* type code   */   CMP_NODE_NORMALIZE,
> +	/* name        */   "Normalize",
> +	/* width+range */   100, 60, 150,
> +	/* class+opts  */   NODE_CLASS_OP_VECTOR, NODE_OPTIONS,
> +	/* input sock  */   cmp_node_normalize_in,
> +	/* output sock */   cmp_node_normalize_out,
> +	/* storage     */   "TexMapping",
> +	/* execfunc    */   node_composit_exec_normalize, 
> +	/* butfunc     */   NULL, 
> +	/* initfunc    */   NULL, 
> +	/* freestoragefunc	*/ NULL, 
> +	/* copystoragefunc	*/ NULL, 
> +	/* id		*/	NULL
> +};

Some fields added here, probably it failed to compile with new changes
to node system, so indeed the review was half-half.

GSR
 


More information about the Bf-committers mailing list