[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11392] branches/soc-2007-maike/source/ blender: Added some more texturing events

Miguel Torres Lima torreslima at gmail.com
Fri Jul 27 18:48:28 CEST 2007


Revision: 11392
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11392
Author:   maike
Date:     2007-07-27 18:48:28 +0200 (Fri, 27 Jul 2007)

Log Message:
-----------
Added some more texturing events
Fixed a problem when sending colorband factor uniform
Still can't use colorband textures on shader

Modified Paths:
--------------
    branches/soc-2007-maike/source/blender/include/BIF_glsl_colorband.h
    branches/soc-2007-maike/source/blender/include/BIF_glsl_material.h
    branches/soc-2007-maike/source/blender/include/butspace.h
    branches/soc-2007-maike/source/blender/src/butspace.c
    branches/soc-2007-maike/source/blender/src/buttons_shading.c
    branches/soc-2007-maike/source/blender/src/glsl_colorband.c
    branches/soc-2007-maike/source/blender/src/glsl_drawobject.c
    branches/soc-2007-maike/source/blender/src/glsl_material.c
    branches/soc-2007-maike/source/blender/src/glsl_material_node.c
    branches/soc-2007-maike/source/blender/src/glsl_uniforms.c

Added Paths:
-----------
    branches/soc-2007-maike/source/blender/include/BIF_glsl_texture_node.h
    branches/soc-2007-maike/source/blender/src/glsl_texture_node.c

Modified: branches/soc-2007-maike/source/blender/include/BIF_glsl_colorband.h
===================================================================
--- branches/soc-2007-maike/source/blender/include/BIF_glsl_colorband.h	2007-07-27 16:42:52 UTC (rev 11391)
+++ branches/soc-2007-maike/source/blender/include/BIF_glsl_colorband.h	2007-07-27 16:48:28 UTC (rev 11392)
@@ -23,7 +23,7 @@
 
   short tex_set;
   
-  void (*add_tex)(struct GLSL_ColorBand_ *colorband);
+  void (*add_tex)(struct GLSL_ColorBand_ *colorband, short type);
   void (*free)(struct GLSL_ColorBand_ *colorband);
 };
 

Modified: branches/soc-2007-maike/source/blender/include/BIF_glsl_material.h
===================================================================
--- branches/soc-2007-maike/source/blender/include/BIF_glsl_material.h	2007-07-27 16:42:52 UTC (rev 11391)
+++ branches/soc-2007-maike/source/blender/include/BIF_glsl_material.h	2007-07-27 16:48:28 UTC (rev 11392)
@@ -43,6 +43,8 @@
   struct GLSL_ColorBand_ *spec_ramp;
 
   struct GLSL_Texture_ *tex[10];
+
+  short tex_num;
 };
 
 

Added: branches/soc-2007-maike/source/blender/include/BIF_glsl_texture_node.h
===================================================================
--- branches/soc-2007-maike/source/blender/include/BIF_glsl_texture_node.h	                        (rev 0)
+++ branches/soc-2007-maike/source/blender/include/BIF_glsl_texture_node.h	2007-07-27 16:48:28 UTC (rev 11392)
@@ -0,0 +1,7 @@
+struct Material;
+struct GLSL_Material_;
+struct GLSL_Texture_;
+
+GLSL_NodeCode glsl_texture_node(struct Material *mat, int num);
+char *glsl_texture_struct(struct GLSL_Material_ *material);
+char *glsl_texture_magic(struct GLSL_Texture_ *texture, struct GLSL_Material_ *material, int index);

Modified: branches/soc-2007-maike/source/blender/include/butspace.h
===================================================================
--- branches/soc-2007-maike/source/blender/include/butspace.h	2007-07-27 16:42:52 UTC (rev 11391)
+++ branches/soc-2007-maike/source/blender/include/butspace.h	2007-07-27 16:48:28 UTC (rev 11392)
@@ -274,9 +274,13 @@
 
 #define B_PLUGBUT		1325
 
-#define B_TEXREDR_VAL   1328
-#define B_TEXREDR_SEL   1329
-#define B_TEXREDR_LIST  1330
+#define B_TEXREDR_VAL   1327
+#define B_TEXREDR_SEL   1328
+#define B_TEXREDR_LIST  1339
+
+#define B_IMAGE_VAL     1333
+#define B_IMAGE_SEL     1334
+#define B_IMAGE_LIST    1335
 /* B_PLUGBUT reserves 24 buttons at least! */
 
 #define B_ENV_MAKE		1350

Modified: branches/soc-2007-maike/source/blender/src/butspace.c
===================================================================
--- branches/soc-2007-maike/source/blender/src/butspace.c	2007-07-27 16:42:52 UTC (rev 11391)
+++ branches/soc-2007-maike/source/blender/src/butspace.c	2007-07-27 16:48:28 UTC (rev 11392)
@@ -614,7 +614,15 @@
 	else if(event == B_TEXREDR_LIST){
 	  do_texbuts(event);
 	}
-	
+	else if(event == B_IMAGE_VAL){
+	  do_texbuts(event);
+	}
+	else if(event == B_IMAGE_SEL){
+	  do_texbuts(event);
+	}
+	else if(event == B_IMAGE_LIST){
+	  do_texbuts(event);
+	}
 	else if(event<=100) {
 		do_global_buttons(event);
 	}

Modified: branches/soc-2007-maike/source/blender/src/buttons_shading.c
===================================================================
--- branches/soc-2007-maike/source/blender/src/buttons_shading.c	2007-07-27 16:42:52 UTC (rev 11391)
+++ branches/soc-2007-maike/source/blender/src/buttons_shading.c	2007-07-27 16:48:28 UTC (rev 11392)
@@ -321,6 +321,34 @@
 	    glsl_texture_update_list(ma, (int) ma->texact);
 	  }
 	  break;
+
+	case B_IMAGE_VAL:
+	  do_texbuts(B_IMAGECHANGED);
+	  ob = OBACT;
+	  ma= give_current_material(ob, ob->actcol);
+	  ma= editnode_get_active_material(ma);
+	  if(ma){
+	    glsl_texture_update_value(ma, (int) ma->texact);
+	  }
+	  break;
+	case B_IMAGE_SEL:
+	  do_texbuts(B_IMAGECHANGED);
+	  ob = OBACT;
+	  ma= give_current_material(ob, ob->actcol);
+	  ma= editnode_get_active_material(ma);
+	  if(ma){
+	    glsl_texture_update_sel(ma, (int) ma->texact);
+	  }
+	  break;
+	case B_IMAGE_LIST:
+	  do_texbuts(B_IMAGECHANGED);
+	  ob = OBACT;
+	  ma= give_current_material(ob, ob->actcol);
+	  ma= editnode_get_active_material(ma);
+	  if(ma){
+	    glsl_texture_update_list(ma, (int) ma->texact);
+	  }
+	  break;
 	case B_TEXPRV:
 		BIF_preview_changed(ID_TE);
 		allqueue(REDRAWBUTSSHADING, 0);
@@ -1112,7 +1140,14 @@
 	Image *ima= *ima_pp;
 	uiBut *but;
 	char str[128], *strp;
-	
+	int tex_val = 0, tex_sel = 0, tex_list = 0;
+
+	if(imagechanged == B_IMAGECHANGED){
+	  tex_val = 20;
+	  tex_sel = 21;
+	  tex_list = 22;
+	}
+
 	/* different stuff when we show viewer */
 	if(ima && ima->source==IMA_SRC_VIEWER) {
 		ImBuf *ibuf= BKE_image_get_ibuf(ima, iuser);
@@ -1291,7 +1326,7 @@
 
 	/* types */
 	uiBlockBeginAlign(block);
-	uiDefButBitS(block, TOG, TEX_MIPMAP, B_IMAGECHANGED, "MipMap",	10, 180, 75, 20, &tex->imaflag, 0, 0, 0, 0, "Generates and uses mipmaps");
+	uiDefButBitS(block, TOG, TEX_MIPMAP, B_IMAGE_SEL, "MipMap",	10, 180, 75, 20, &tex->imaflag, 0, 0, 0, 0, "Generates and uses mipmaps");
 	uiDefButBitS(block, TOG, TEX_GAUSS_MIP, B_TEX_SEL, "Gauss",			85, 180, 75, 20, &tex->imaflag, 0, 0, 0, 0, "Enable Gauss filter to sample down mipmaps");
 	uiDefButBitS(block, TOG, TEX_INTERPOL, B_TEX_SEL, "Interpol",		160, 180, 75, 20, &tex->imaflag, 0, 0, 0, 0, "Interpolates pixels using Area filter");
 	uiDefButBitS(block, TOG, TEX_IMAROT, B_TEX_SEL, "Rot90",		235, 180, 75, 20, &tex->imaflag, 0, 0, 0, 0, "Actually flips X and Y for rendering, rotates and mirrors");
@@ -1309,11 +1344,11 @@
 	/* crop extend clip */
 	
 	uiBlockBeginAlign(block);
-	uiDefButS(block, ROW, B_TEXREDR_PRV, "Extend",			10,90,63,19, &tex->extend, 4.0, 1.0, 0, 0, "Extends the color of the edge pixels");
-	uiDefButS(block, ROW, B_TEXREDR_PRV, "Clip",			73,90,48,19, &tex->extend, 4.0, 2.0, 0, 0, "Sets alpha 0.0 outside Image edges");
-	uiDefButS(block, ROW, B_TEXREDR_PRV, "ClipCube",		121,90,63,19, &tex->extend, 4.0, 4.0, 0, 0, "Sets alpha to 0.0 outside cubeshaped area around Image");
-	uiDefButS(block, ROW, B_TEXREDR_PRV, "Repeat",			184,90,63,19, &tex->extend, 4.0, 3.0, 0, 0, "Causes Image to repeat horizontally and vertically");
-	uiDefButS(block, ROW, B_TEXREDR_PRV, "Checker",			247,90,63,19, &tex->extend, 4.0, 5.0, 0, 0, "Causes Image to repeat in checker pattern");
+	uiDefButS(block, ROW, B_TEXREDR_SEL, "Extend",			10,90,63,19, &tex->extend, 4.0, 1.0, 0, 0, "Extends the color of the edge pixels");
+	uiDefButS(block, ROW, B_TEXREDR_SEL, "Clip",			73,90,48,19, &tex->extend, 4.0, 2.0, 0, 0, "Sets alpha 0.0 outside Image edges");
+	uiDefButS(block, ROW, B_TEXREDR_SEL, "ClipCube",		121,90,63,19, &tex->extend, 4.0, 4.0, 0, 0, "Sets alpha to 0.0 outside cubeshaped area around Image");
+	uiDefButS(block, ROW, B_TEXREDR_SEL, "Repeat",			184,90,63,19, &tex->extend, 4.0, 3.0, 0, 0, "Causes Image to repeat horizontally and vertically");
+	uiDefButS(block, ROW, B_TEXREDR_SEL, "Checker",			247,90,63,19, &tex->extend, 4.0, 5.0, 0, 0, "Causes Image to repeat in checker pattern");
 
 	if(tex->extend==TEX_REPEAT) {
 		uiBlockBeginAlign(block);
@@ -3131,8 +3166,10 @@
 	case B_MAT_CB_REDR:
 	  do_matbuts(B_MATPRV);
 	  if(ma){
-	    if(glsl_active())
+	    if(glsl_active()){
 	      glsl_colorband_create_tex(ma);
+	      glsl_update_mat_colorband_uniforms(ma);
+	    }
 	  }
 	  break;
 	case B_MAT_CB_UNIFS:

Modified: branches/soc-2007-maike/source/blender/src/glsl_colorband.c
===================================================================
--- branches/soc-2007-maike/source/blender/src/glsl_colorband.c	2007-07-27 16:42:52 UTC (rev 11391)
+++ branches/soc-2007-maike/source/blender/src/glsl_colorband.c	2007-07-27 16:48:28 UTC (rev 11392)
@@ -40,9 +40,8 @@
 
 /* ------------------------------------------------------------------------------- */
 
-static void glsl_cb_add_tex(GLSL_ColorBand colorband)
+static void glsl_cb_add_tex(GLSL_ColorBand colorband, short type)
 {
-  GLuint tex_name;
   float texels[4];
   ColorBand *cb = colorband->colorband;
   int i;
@@ -58,12 +57,13 @@
     colorband->tex[i][3] = texels[3];
   }
 
-  glGenTextures(1, &tex_name);
-  glActiveTexture(GL_TEXTURE0 + tex_name);
-  glBindTexture(GL_TEXTURE_1D, tex_name);
-  colorband->texid = tex_name;
+  glGenTextures(1, &colorband->texid);
+  glActiveTexture(GL_TEXTURE0 + type);
+  glBindTexture(GL_TEXTURE_1D, colorband->texid);
   glTexImage1D(GL_TEXTURE_1D, 0, GL_RGBA, COLORBAND_WIDTH, 0, GL_RGBA, GL_UNSIGNED_BYTE, colorband->tex);
+  glEnable(GL_TEXTURE_1D);
   colorband->tex_set = 1;
+  glActiveTexture(GL_TEXTURE0);
 }
 
 

Modified: branches/soc-2007-maike/source/blender/src/glsl_drawobject.c
===================================================================
--- branches/soc-2007-maike/source/blender/src/glsl_drawobject.c	2007-07-27 16:42:52 UTC (rev 11391)
+++ branches/soc-2007-maike/source/blender/src/glsl_drawobject.c	2007-07-27 16:48:28 UTC (rev 11392)
@@ -355,7 +355,6 @@
     Material *mat = give_current_material(ob, (int) face->mat_nr + 1);
     MCol *tmpcol;
 
-    
     if(mat && mat->mode & MA_SHLESS){
       glUseProgram(0);
       glColor4f(mat->r, mat->g, mat->b, mat->alpha);
@@ -376,6 +375,10 @@
       glUseProgram(program->program);
       glsl_light_uniforms(program->program, ob);
       oldmat = mat;
+
+      if(mat){
+	glsl_update_colorband_uniforms(program->program, mat, 0);
+      }
     }
 
 

Modified: branches/soc-2007-maike/source/blender/src/glsl_material.c
===================================================================
--- branches/soc-2007-maike/source/blender/src/glsl_material.c	2007-07-27 16:42:52 UTC (rev 11391)
+++ branches/soc-2007-maike/source/blender/src/glsl_material.c	2007-07-27 16:48:28 UTC (rev 11392)
@@ -89,8 +89,11 @@
     
     if(!texture)
       material->tex[index] = glsl_init_texture(mat, mat->mtex[index], index);
+    else
+      material->tex[index] = texture;
 
     material->tex[index]->add_parent(material->tex[index], material);
+    material->tex_num++;
   }
 }
 
@@ -100,6 +103,7 @@
   if(material->tex[index]){
     material->tex[index]->del_parent(material->tex[index], material);
     material->tex[index] = NULL;
+    material->tex_num--;
   }
 }
 
@@ -150,7 +154,7 @@
 {
   GLSL_ColorBand colorband = material->diff_ramp;
 
-  colorband->add_tex(colorband);
+  colorband->add_tex(colorband, 1);
 }
 
 
@@ -158,7 +162,7 @@
 {
   GLSL_ColorBand colorband = material->spec_ramp;
 
-  colorband->add_tex(colorband);
+  colorband->add_tex(colorband, 2);
 }
 
 

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list