[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