[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11809] branches/soc-2007-maike/source/ blender/src/glsl_node_util.c: Rgbtobw and normal nodes implemented

Miguel Torres Lima torreslima at gmail.com
Fri Aug 24 18:13:54 CEST 2007


Revision: 11809
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11809
Author:   maike
Date:     2007-08-24 18:13:53 +0200 (Fri, 24 Aug 2007)

Log Message:
-----------
Rgbtobw and normal nodes implemented

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-24 15:41:31 UTC (rev 11808)
+++ branches/soc-2007-maike/source/blender/src/glsl_node_util.c	2007-08-24 16:13:53 UTC (rev 11809)
@@ -1267,6 +1267,7 @@
 static char *glsl_generate_colorband_node_function(bNode *node, char *name)
 {
   char *code = NULL;
+  
 
   return code;
 }
@@ -1276,6 +1277,11 @@
 {
   char *code = NULL;
 
+  files->rgbtobw = 1;
+
+  code = glsl_string(5, 0, "node_rgbtobw(", 
+		     GFREE, glsl_generate_node_in_vars(node, name, 0), 0, ".rgb, ", 
+		     GFREE, glsl_generate_node_out_vars(node, name, 0), 0, ");\n");
   return code;
 }
 
@@ -1291,7 +1297,17 @@
 static char *glsl_generate_normal_node_function(bNode *node, char *name)
 {
   char *code = NULL;
+  bNodeSocket *sock= node->outputs.first;
 
+  files->normal = 1;
+
+  code = glsl_string(15, 0, "node_normal(",
+		     0, "vec3(", GFLOAT, sock->ns.vec[0], 0, ", ", GFLOAT, sock->ns.vec[1], 0, ", ", GFLOAT, sock->ns.vec[2], 0, ")",
+		     0, ", ", GFREE, glsl_generate_node_in_vars(node, name, 0),
+		     0, ", ", GFREE, glsl_generate_node_out_vars(node, name, 0),
+		     0, ", ", GFREE, glsl_generate_node_out_vars(node, name, 1),
+		     0, ");\n");
+
   return code;
 }
 
@@ -1890,6 +1906,8 @@
   char *light_funcs = NULL;
   char *cb_blend_funcs = NULL;
   char *rgbmix_funcs = NULL;
+  char *rgbtobw_funcs = NULL;
+  char *normal_funcs = NULL;
   char *tex_funcs = NULL;
   char *tex_blend_funcs = NULL;
   char *tex_blendval_funcs = NULL;
@@ -1959,6 +1977,28 @@
 					  GFREE, nodecode->node_code);
   }
 
+  if(files->rgbtobw){
+    if(!(rgbtobw_funcs = glsl_get_func("node_rgbtobw.gsl"))){
+      MEM_freeN(nodecode->uniform_code);
+      MEM_freeN(nodecode->node_code);
+      MEM_freeN(nodecode);
+      return NULL;
+    }
+    else
+      nodecode->node_code = glsl_string(2, GFREE, rgbtobw_funcs, GFREE, nodecode->node_code);
+  }
+  
+  if(files->normal){
+    if(!(normal_funcs = glsl_get_func("node_normal.gsl"))){
+      MEM_freeN(nodecode->uniform_code);
+      MEM_freeN(nodecode->node_code);
+      MEM_freeN(nodecode);
+      return NULL;
+    }
+    else
+      nodecode->node_code = glsl_string(2, GFREE, normal_funcs, GFREE, nodecode->node_code);
+  }
+
   glsl_free_node_hash();
   glsl_free_nodefiles();
 





More information about the Bf-blender-cvs mailing list