[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