[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11596] branches/soc-2007-maike/source/ blender: Added entry points for glsl texturing code concatenation
Miguel Torres Lima
torreslima at gmail.com
Tue Aug 14 18:10:01 CEST 2007
Revision: 11596
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11596
Author: maike
Date: 2007-08-14 18:10:01 +0200 (Tue, 14 Aug 2007)
Log Message:
-----------
Added entry points for glsl texturing code concatenation
Modified Paths:
--------------
branches/soc-2007-maike/source/blender/include/BIF_glsl_material_node.h
branches/soc-2007-maike/source/blender/src/glsl_material_node.c
Modified: branches/soc-2007-maike/source/blender/include/BIF_glsl_material_node.h
===================================================================
--- branches/soc-2007-maike/source/blender/include/BIF_glsl_material_node.h 2007-08-14 16:05:33 UTC (rev 11595)
+++ branches/soc-2007-maike/source/blender/include/BIF_glsl_material_node.h 2007-08-14 16:10:01 UTC (rev 11596)
@@ -3,7 +3,7 @@
/* ---------------------------------------------------------------------------------------------------------- */
-struct GLSL_NodeCode_ *glsl_material_node(struct Material *mat, int *diffuse, int *specular, int *lights, int *blend, int num);
+struct GLSL_NodeCode_ *glsl_material_node(struct Material *mat, int *diffuse, int *specular, int *lights, int *blend, int *tex_type, int *tex_blend, int *tex_blendval, int num);
char *glsl_material_node_uniforms(int num);
char *glsl_material_node_func(struct Material *mat, int *diffuse, int *specular, int *lights, int *blend, int num);
char *glsl_material_lights(struct Material *mat, int *diff, int *spec, int *lights);
Modified: branches/soc-2007-maike/source/blender/src/glsl_material_node.c
===================================================================
--- branches/soc-2007-maike/source/blender/src/glsl_material_node.c 2007-08-14 16:05:33 UTC (rev 11595)
+++ branches/soc-2007-maike/source/blender/src/glsl_material_node.c 2007-08-14 16:10:01 UTC (rev 11596)
@@ -25,6 +25,7 @@
#include "DNA_material_types.h"
#include "DNA_lamp_types.h"
#include "DNA_userdef_types.h"
+#include "DNA_texture_types.h"
#include "MEM_guardedalloc.h"
@@ -33,14 +34,23 @@
/* ----------------------------------------------------------------------------- */
-GLSL_NodeCode glsl_material_node(Material *mat, int *diffuse, int *specular, int *lights, int *blend, int num)
+GLSL_NodeCode glsl_material_node(Material *mat, int *diffuse, int *specular, int *lights, int *blend, int *tex_type, int *tex_blend, int *tex_blendval, int num)
{
GLSL_NodeCode node_code = glsl_init_nodecode();
+ GLSL_NodeCode texture_code = glsl_texture_fragment_code(mat, num, tex_type, tex_blend, tex_blendval);
char *diff_ramp, *spec_ramp;
node_code->uniform_code = glsl_material_node_uniforms(num);
node_code->node_code = glsl_material_node_func(mat, diffuse, specular, lights, blend, num);
+ node_code->uniform_code = glsl_string(2,
+ GFREE, node_code->uniform_code,
+ GFREE, texture_code->uniform_code);
+
+ node_code->node_code = glsl_string(2,
+ GFREE, texture_code->node_code,
+ GFREE, node_code->node_code);
+
if(mat->mode & MA_RAMP_COL){
diff_ramp = glsl_colorband_node_uniforms(num, 0);
node_code->uniform_code = glsl_string(2, GFREE, node_code->uniform_code, GFREE, diff_ramp);
@@ -50,6 +60,8 @@
node_code->uniform_code = glsl_string(2, GFREE, node_code->uniform_code, GFREE, spec_ramp);
}
+ MEM_freeN(texture_code);
+
return node_code;
}
@@ -86,7 +98,8 @@
char *code = NULL;
char *material_lights = NULL;
char *diff_ramp, *spec_ramp;
-
+ int i;
+
if(!(func_init = glsl_get_func("material.gsl")))
return NULL;
@@ -95,6 +108,28 @@
return NULL;
}
+ for(i = 0; i < MAX_MTEX; i++){
+ if(mat->mtex[i]){
+ MTex *mtex = mat->mtex[i];
+
+ if(mtex->tex && mtex->tex->type){
+ func_init = glsl_string(12,
+ GFREE, func_init,
+ 0, "#define TEX_ID ", GINT, i, 0, "\n",
+ 0, "#define TEX_FUNC material_", GINT, num, 0, "_tex_", GINT, i, 0, "\n",
+ 0, "TEX_FUNC(diff_color, spec_color, norm, alpha, diff1, spec1, amb_fac, emit, hard);\n",
+ 0, "#undef TEX_ID\n",
+ 0, "#undef TEX_FUNC\n");
+ }
+ }
+ }
+
+ if(mat->mode & MA_SHLESS){
+ func_init = glsl_string(2,
+ 0, "#define IS_SHADELESS 1\n",
+ GFREE, func_init);
+ }
+
if(mat->mode & MA_RAMP_COL){
diff_ramp = glsl_colorband_node_defines(mat, blend, num, 0);
func_init = glsl_string(2, GFREE, func_init, GFREE, diff_ramp);
More information about the Bf-blender-cvs
mailing list