[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32430] branches/particles-2010/source/ blender/nodes/intern/simulation: Updated the remaining math nodes and added missing socket types to pass and if .

Lukas Toenne lukas.toenne at googlemail.com
Tue Oct 12 15:49:11 CEST 2010


Revision: 32430
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32430
Author:   lukastoenne
Date:     2010-10-12 15:49:11 +0200 (Tue, 12 Oct 2010)

Log Message:
-----------
Updated the remaining math nodes and added missing socket types to pass and if.

Modified Paths:
--------------
    branches/particles-2010/source/blender/nodes/intern/simulation/SIM_util.c
    branches/particles-2010/source/blender/nodes/intern/simulation/nodes/SIM_if.c
    branches/particles-2010/source/blender/nodes/intern/simulation/nodes/SIM_math.c
    branches/particles-2010/source/blender/nodes/intern/simulation/nodes/SIM_pass.c
    branches/particles-2010/source/blender/nodes/intern/simulation/nodes/SIM_vectormath.c

Modified: branches/particles-2010/source/blender/nodes/intern/simulation/SIM_util.c
===================================================================
--- branches/particles-2010/source/blender/nodes/intern/simulation/SIM_util.c	2010-10-12 11:00:44 UTC (rev 32429)
+++ branches/particles-2010/source/blender/nodes/intern/simulation/SIM_util.c	2010-10-12 13:49:11 UTC (rev 32430)
@@ -1211,11 +1211,11 @@
 			break;
 		case SOCK_MATRIX:
 			sprintf(datasource, "(__inputsize%d > 1 ? __inputdata%d + 4*sizeof(float4)*(index) : __inputdata%d)", i, i, i);
-			BLI_dynstr_appendf(source, "\n#define INPUT%d_MATRIX(index)	(*%s)", i, datasource);
+			BLI_dynstr_appendf(source, "\n#define INPUT%d_MATRIX(index)	(%s)", i, datasource);
 			break;
 		case SOCK_STRING:
 			sprintf(datasource, "(__inputsize%d > 1 ? __inputdata%d + %d*sizeof(char)*(index) : __inputdata%d)", i, i, SIM_STRINGLENGTH, i);
-			BLI_dynstr_appendf(source, "\n#define INPUT%d_STRING(index)	(*%s)", i, datasource);
+			BLI_dynstr_appendf(source, "\n#define INPUT%d_STRING(index)	(%s)", i, datasource);
 			break;
 		}
 	}

Modified: branches/particles-2010/source/blender/nodes/intern/simulation/nodes/SIM_if.c
===================================================================
--- branches/particles-2010/source/blender/nodes/intern/simulation/nodes/SIM_if.c	2010-10-12 11:00:44 UTC (rev 32429)
+++ branches/particles-2010/source/blender/nodes/intern/simulation/nodes/SIM_if.c	2010-10-12 13:49:11 UTC (rev 32430)
@@ -42,11 +42,73 @@
 	{ -1, 0, "" }
 };
 
+static void append_copy_sock(DynStr *source, int restype, int copysock)
+{
+	switch (restype) {
+	case SOCK_FLOAT:
+		BLI_dynstr_appendf(source, STRINGIFY(
+			*OUTPUT0_FLOAT(get_global_id(0)) = INPUT%d_FLOAT(get_global_id(0));
+			), copysock);
+		break;
+	case SOCK_INT:
+		BLI_dynstr_appendf(source, STRINGIFY(
+			*OUTPUT0_INT(get_global_id(0)) = INPUT%d_INT(get_global_id(0));
+			), copysock);
+		break;
+	case SOCK_BOOL:
+		BLI_dynstr_appendf(source, STRINGIFY(
+			*OUTPUT0_BOOL(get_global_id(0)) = INPUT%d_BOOL(get_global_id(0));
+			), copysock);
+		break;
+	case SOCK_VECTOR:
+		BLI_dynstr_appendf(source, STRINGIFY(
+			*OUTPUT0_VECTOR(get_global_id(0)) = INPUT%d_VECTOR(get_global_id(0));
+			), copysock);
+		break;
+	case SOCK_RGBA:
+		BLI_dynstr_appendf(source, STRINGIFY(
+			*OUTPUT0_RGBA(get_global_id(0)) = INPUT%d_RGBA(get_global_id(0));
+			), copysock);
+		break;
+	case SOCK_QUAT:
+		BLI_dynstr_appendf(source, STRINGIFY(
+			*OUTPUT0_QUAT(get_global_id(0)) = INPUT%d_QUAT(get_global_id(0));
+			), copysock);
+		break;
+	case SOCK_MATRIX:
+		BLI_dynstr_appendf(source, STRINGIFY(
+			OUTPUT0_MATRIX(get_global_id(0))[0] = INPUT%d_MATRIX(get_global_id(0))[0];
+			OUTPUT0_MATRIX(get_global_id(0))[1] = INPUT%d_MATRIX(get_global_id(0))[1];
+			OUTPUT0_MATRIX(get_global_id(0))[2] = INPUT%d_MATRIX(get_global_id(0))[2];
+			OUTPUT0_MATRIX(get_global_id(0))[3] = INPUT%d_MATRIX(get_global_id(0))[3];
+			), copysock, copysock, copysock, copysock);
+		break;
+	case SOCK_STRING:
+		BLI_dynstr_appendf(source, STRINGIFY(
+			int i;
+			for (i=0; i < SIM_STRINGLENGTH; ++i)
+				OUTPUT0_STRING(get_global_id(0))[i] = INPUT%d_STRING(get_global_id(0))[i];
+			), copysock);
+		break;
+	}
+}
+
 static char *generate_source(struct SimNodeStack *node)
 {
 	int restype= node->outstack[0].type;
 	DynStr *source= sim_kernel_source_begin(node, NULL, 0, NULL);
-	BLI_dynstr_appendf(source, "*OUTPUT0_%s(get_global_id(0)) = (INPUT0_BOOL(get_global_id(0)) ? INPUT1_%s(get_global_id(0)) : INPUT2_%s(get_global_id(0)));\n", sim_sockettype_name(restype), sim_sockettype_name(restype), sim_sockettype_name(restype));
+	BLI_dynstr_append(source, STRINGIFY(
+		if (INPUT0_BOOL(get_global_id(0))) {
+		));
+	append_copy_sock(source, restype, 1);
+	BLI_dynstr_append(source, STRINGIFY(
+		}
+		else {
+		));
+	append_copy_sock(source, restype, 2);
+	BLI_dynstr_append(source, STRINGIFY(
+		}
+		));
 	return sim_kernel_source_end(source);
 }
 
@@ -75,6 +137,21 @@
 	copy_v4_v4(SIM_OUTPUT_RGBA(0, global_id), (SIM_INPUT_BOOL(0, global_id) ? SIM_INPUT_RGBA(1, global_id) : SIM_INPUT_RGBA(2, global_id)));
 }
 
+static void kernel_quat(int global_id, void **args, SimNodeStack *node)
+{
+	copy_v4_v4(SIM_OUTPUT_QUAT(0, global_id), (SIM_INPUT_BOOL(0, global_id) ? SIM_INPUT_QUAT(1, global_id) : SIM_INPUT_QUAT(2, global_id)));
+}
+
+static void kernel_matrix(int global_id, void **args, SimNodeStack *node)
+{
+	memcpy(SIM_OUTPUT_MATRIX(0, global_id), (SIM_INPUT_BOOL(0, global_id) ? SIM_INPUT_MATRIX(1, global_id) : SIM_INPUT_MATRIX(2, global_id)), 16*sizeof(float));
+}
+
+static void kernel_string(int global_id, void **args, SimNodeStack *node)
+{
+	memcpy(SIM_OUTPUT_STRING(0, global_id), (SIM_INPUT_BOOL(0, global_id) ? SIM_INPUT_STRING(1, global_id) : SIM_INPUT_STRING(2, global_id)), SIM_STRINGLENGTH*sizeof(char));
+}
+
 /* "if" node for data sets */
 static void enqueue(SimExecData *execdata, SimNodeStack *node, SimDataContext *self)
 {
@@ -91,6 +168,9 @@
 	case SOCK_BOOL:		kernelfunc= kernel_bool;	break;
 	case SOCK_VECTOR:	kernelfunc= kernel_vector;	break;
 	case SOCK_RGBA:		kernelfunc= kernel_rgba;	break;
+	case SOCK_QUAT:		kernelfunc= kernel_quat;	break;
+	case SOCK_MATRIX:	kernelfunc= kernel_matrix;	break;
+	case SOCK_STRING:	kernelfunc= kernel_string;	break;
 	}
 	
 	if (kernelfunc) {

Modified: branches/particles-2010/source/blender/nodes/intern/simulation/nodes/SIM_math.c
===================================================================
--- branches/particles-2010/source/blender/nodes/intern/simulation/nodes/SIM_math.c	2010-10-12 11:00:44 UTC (rev 32429)
+++ branches/particles-2010/source/blender/nodes/intern/simulation/nodes/SIM_math.c	2010-10-12 13:49:11 UTC (rev 32430)
@@ -29,22 +29,18 @@
 
 
 /* **************** Math ******************** */ 
-static bNodeSocketType inputs_unary_any[]= {
-	{ SOCK_ANY, 1, "Input", 1.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f},
-	{ -1, 0, "" }
-};
 static bNodeSocketType inputs_unary_float[]= {
-	{ SOCK_FLOAT, 1, "Input", 1.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f},
+	{ SOCK_FLOAT, 1, "Input", 0.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f},
 	{ -1, 0, "" }
 };
 static bNodeSocketType inputs_binary_any[]= {
-	{ SOCK_ANY, 1, "A", 1.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f},
-	{ SOCK_ANY, 1, "B", 1.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f},
+	{ SOCK_ANY, 1, "A", 0.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f},
+	{ SOCK_ANY, 1, "B", 0.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f},
 	{ -1, 0, "" }
 };
 static bNodeSocketType inputs_binary_float[]= {
-	{ SOCK_FLOAT, 1, "A", 1.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f},
-	{ SOCK_FLOAT, 1, "B", 1.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f},
+	{ SOCK_FLOAT, 1, "A", 0.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f},
+	{ SOCK_FLOAT, 1, "B", 0.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f},
 	{ -1, 0, "" }
 };
 static bNodeSocketType inputs_power[]= {
@@ -86,16 +82,24 @@
 	DynStr *source= sim_kernel_source_begin(node, NULL, 0, NULL);
 	switch (restype) {
 	case SOCK_FLOAT:
-		BLI_dynstr_append(source, "*OUTPUT0_FLOAT(get_global_id(0)) = INPUT0_FLOAT(get_global_id(0)) + INPUT1_FLOAT(get_global_id(0));\n");
+		BLI_dynstr_append(source, STRINGIFY(
+			*OUTPUT0_FLOAT(get_global_id(0)) = INPUT0_FLOAT(get_global_id(0)) + INPUT1_FLOAT(get_global_id(0));
+			));
 		break;
 	case SOCK_INT:
-		BLI_dynstr_append(source, "*OUTPUT0_INT(get_global_id(0)) = INPUT0_INT(get_global_id(0)) + INPUT1_INT(get_global_id(0));\n");
+		BLI_dynstr_append(source, STRINGIFY(
+			*OUTPUT0_INT(get_global_id(0)) = INPUT0_INT(get_global_id(0)) + INPUT1_INT(get_global_id(0));
+			));
 		break;
 	case SOCK_VECTOR:
-		BLI_dynstr_append(source, "*OUTPUT0_VECTOR(get_global_id(0)) = INPUT0_VECTOR(get_global_id(0)) + INPUT1_VECTOR(get_global_id(0));\n");
+		BLI_dynstr_append(source, STRINGIFY(
+			*OUTPUT0_VECTOR(get_global_id(0)) = INPUT0_VECTOR(get_global_id(0)) + INPUT1_VECTOR(get_global_id(0));
+			));
 		break;
 	case SOCK_RGBA:
-		BLI_dynstr_append(source, "*OUTPUT0_RGBA(get_global_id(0)) = INPUT0_RGBA(get_global_id(0)) + INPUT1_RGBA(get_global_id(0));\n");
+		BLI_dynstr_append(source, STRINGIFY(
+			*OUTPUT0_RGBA(get_global_id(0)) = INPUT0_RGBA(get_global_id(0)) + INPUT1_RGBA(get_global_id(0));
+			));
 		break;
 	}
 	return sim_kernel_source_end(source);
@@ -145,6 +149,33 @@
 	}
 }
 
+bNodeType sim_node_add = {
+	/* *next,*prev */	NULL, NULL,
+	/* type code   */	SIM_NODE_ADD,
+	/* name        */	"Add", 
+	/* width+range */	120, 110, 160, 
+	/* class+opts  */	NODE_CLASS_MATH, 0, 
+	/* input sock  */	inputs_binary_any,
+	/* output sock */	outputs_any,
+	/* storage     */	"", 
+	/* execfunc    */			NULL,
+	/* butfunc     */			NULL,
+	/* initfunc    */			NULL,
+	/* freestoragefunc    */	NULL,
+	/* copystoragefunc    */	NULL,
+	/* id          */			NULL,
+	/* pynode, pydict  */		NULL, NULL,
+	/* gpufunc         */		NULL,
+	/* updatefunc      */		NULL,
+	/* socketstoragename */		"",
+	/* initsocketfunc  */		NULL,
+	/* copysocketstoragefunc */	NULL,
+	/* freesocketstoragefunc */	NULL,
+	/* prepare_outputs */	NULL,
+	/* generate_source */		generate_source_add,
+	/* enqueue */				enqueue_add
+};
+
 /* Subtract */
 static char *generate_source_subtract(struct SimNodeStack *node)
 {
@@ -152,16 +183,24 @@
 	DynStr *source= sim_kernel_source_begin(node, NULL, 0, NULL);
 	switch (restype) {
 	case SOCK_FLOAT:
-		BLI_dynstr_append(source, "*OUTPUT0_FLOAT(get_global_id(0)) = INPUT0_FLOAT(get_global_id(0)) - INPUT1_FLOAT(get_global_id(0));\n");
+		BLI_dynstr_append(source, STRINGIFY(
+			*OUTPUT0_FLOAT(get_global_id(0)) = INPUT0_FLOAT(get_global_id(0)) - INPUT1_FLOAT(get_global_id(0));
+			));
 		break;
 	case SOCK_INT:
-		BLI_dynstr_append(source, "*OUTPUT0_INT(get_global_id(0)) = INPUT0_INT(get_global_id(0)) - INPUT1_INT(get_global_id(0));\n");
+		BLI_dynstr_append(source, STRINGIFY(
+			*OUTPUT0_INT(get_global_id(0)) = INPUT0_INT(get_global_id(0)) - INPUT1_INT(get_global_id(0));
+			));
 		break;
 	case SOCK_VECTOR:
-		BLI_dynstr_append(source, "*OUTPUT0_VECTOR(get_global_id(0)) = INPUT0_VECTOR(get_global_id(0)) - INPUT1_VECTOR(get_global_id(0));\n");
+		BLI_dynstr_append(source, STRINGIFY(
+			*OUTPUT0_VECTOR(get_global_id(0)) = INPUT0_VECTOR(get_global_id(0)) - INPUT1_VECTOR(get_global_id(0));
+			));
 		break;
 	case SOCK_RGBA:
-		BLI_dynstr_append(source, "*OUTPUT0_RGBA(get_global_id(0)) = INPUT0_RGBA(get_global_id(0)) - INPUT1_RGBA(get_global_id(0));\n");
+		BLI_dynstr_append(source, STRINGIFY(

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list