[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