[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11790] branches/soc-2007-maike/source/ blender/src/glsl_node_util.c: Just some more code for nodes added and comments on how the recursive function for node shader code generation will be done
Miguel Torres Lima
torreslima at gmail.com
Wed Aug 22 20:26:35 CEST 2007
Revision: 11790
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11790
Author: maike
Date: 2007-08-22 20:26:35 +0200 (Wed, 22 Aug 2007)
Log Message:
-----------
Just some more code for nodes added and comments on how the recursive function for node shader code generation will be done
Modified Paths:
--------------
branches/soc-2007-maike/source/blender/src/glsl_node_util.c
Modified: branches/soc-2007-maike/source/blender/src/glsl_node_util.c
===================================================================
--- branches/soc-2007-maike/source/blender/src/glsl_node_util.c 2007-08-22 17:43:05 UTC (rev 11789)
+++ branches/soc-2007-maike/source/blender/src/glsl_node_util.c 2007-08-22 18:26:35 UTC (rev 11790)
@@ -102,7 +102,7 @@
static char *glsl_construct_var_decl(char *name, short vartype)
{
- char *type = { "float ", "vec3 ", "vec3 " };
+ char *type[3] = { "float ", "vec3 ", "vec3 " };
return glsl_string(3, 0, type[vartype], GFREE, name, 0, ";\n");
}
@@ -1443,6 +1443,7 @@
char *name = glsl_generate_node_name(node);
char *varsdecl = glsl_generate_node_vars_decl(node, name);
char *code = NULL;
+ bNode *fromnode = NULL;
int i = 0;
BLI_ghash_insert(read, node, name);
@@ -1453,6 +1454,48 @@
if(sock->link){
link = sock->link;
+ fromnode = link->fromnode;
+
+ if(BLI_ghash_lookup(read, fromnode)){
+ if(BLI_ghash_lookup(done, fromnode)){
+ /* assign node.input = linked_node.output */
+ /* convert values if needed */
+ }
+ else{
+ if(fromnode->type == SH_NODE_MATERIAL){
+ /* handle node not complete exception */
+ /* assign node.input = linked_node.output */
+ /* convert values if needed */
+ }
+ else if(fromnode->type == SH_NODE_MATERIAL_EXT){
+ /* handle node not complete exception */
+ /* assign node.input = linked_node.output */
+ /* convert values if needed */
+ }
+ else{
+ stack = &sock->ns;
+
+ switch(stack->sockettype)
+ {
+ case SOCK_VALUE:
+ code = glsl_string(5, GFREE, code, GFREE, glsl_generate_node_in_vars(node, name, i), 0, " = ", GFLOAT, stack->vec[0], 0, ";\n");
+ break;
+ default:
+ code = glsl_string(9, GFREE, code, GFREE, glsl_generate_node_in_vars(node, name, i),
+ 0, " = vec3(", GFLOAT, stack->vec[0], 0, ",", GFLOAT, stack->vec[1], 0, ",", GFLOAT, stack->vec[2], 0, ");\n");
+ break;
+ }
+ }
+ }
+ }
+ else{ /* call this function for linked node */
+ glsl_exec_nodetree(nodetree, fromnode, nodecode);
+
+ /* assign node.input = linked_node.output */
+ /* convert values if needed */
+ }
+
+ fromnode = NULL;
}
else{
stack = &sock->ns;
@@ -1463,7 +1506,8 @@
code = glsl_string(5, GFREE, code, GFREE, glsl_generate_node_in_vars(node, name, i), 0, " = ", GFLOAT, stack->vec[0], 0, ";\n");
break;
default:
- code = glsl_string(9, GFREE, code, GFREE, glsl_generate_node_in_vars(node, name, i), 0, " = vec3(", GFLOAT, stack->vec[0], 0, ",", GFLOAT, stack->vec[1], 0, ",", GFLOAT, stack->vec[2], 0, ");\n");
+ code = glsl_string(9, GFREE, code, GFREE, glsl_generate_node_in_vars(node, name, i),
+ 0, " = vec3(", GFLOAT, stack->vec[0], 0, ",", GFLOAT, stack->vec[1], 0, ",", GFLOAT, stack->vec[2], 0, ");\n");
break;
}
}
@@ -1471,6 +1515,11 @@
i++;
}
+ /* node function call */
+ /* node function can be generated (materials, extended materials and textures) or read from file */
+
+ /* concatenate the generated code */
+
BLI_ghash_insert(done, node, name);
}
More information about the Bf-blender-cvs
mailing list