[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11505] branches/soc-2007-maike/source/ blender: Added mballs

Miguel Torres Lima torreslima at gmail.com
Mon Aug 6 18:33:31 CEST 2007


Revision: 11505
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11505
Author:   maike
Date:     2007-08-06 18:33:31 +0200 (Mon, 06 Aug 2007)

Log Message:
-----------
Added mballs

Modified Paths:
--------------
    branches/soc-2007-maike/source/blender/include/BIF_glsl_drawobject.h
    branches/soc-2007-maike/source/blender/include/BIF_glsl_materialtree.h
    branches/soc-2007-maike/source/blender/include/BIF_glsl_node_util.h
    branches/soc-2007-maike/source/blender/include/BIF_glsl_program.h
    branches/soc-2007-maike/source/blender/python/api2_2x/EXPP_interface.c
    branches/soc-2007-maike/source/blender/src/buttons_shading.c
    branches/soc-2007-maike/source/blender/src/glsl_drawobject.c
    branches/soc-2007-maike/source/blender/src/glsl_material_node.c
    branches/soc-2007-maike/source/blender/src/glsl_materialtree.c
    branches/soc-2007-maike/source/blender/src/glsl_node_util.c
    branches/soc-2007-maike/source/blender/src/glsl_program.c
    branches/soc-2007-maike/source/blender/src/glsl_uniforms.c
    branches/soc-2007-maike/source/blender/src/glsl_util.c

Modified: branches/soc-2007-maike/source/blender/include/BIF_glsl_drawobject.h
===================================================================
--- branches/soc-2007-maike/source/blender/include/BIF_glsl_drawobject.h	2007-08-06 15:32:21 UTC (rev 11504)
+++ branches/soc-2007-maike/source/blender/include/BIF_glsl_drawobject.h	2007-08-06 16:33:31 UTC (rev 11505)
@@ -39,8 +39,9 @@
 
 
 void create_vertex(struct Object *obj, struct MVert *vert, int index, int flag);
-void glsl_draw(struct Base *base);
-
+void glsl_draw(struct Object *ob, int flag);
+void glsl_draw_mball(struct Base *base);
+void glsl_shadeDispList(struct Base *base);
 void glsl_set_outline_colors(void);
-void glsl_draw_outline(struct Base *base, struct MFace *face, int num, struct MVert *vert);
+void glsl_draw_outline(struct Object *ob, int flag, struct MFace *face, int num, struct MVert *vert);
 void glsl_draw_mesh_selected_outline(struct MFace *face, int num, struct MVert *vert);

Modified: branches/soc-2007-maike/source/blender/include/BIF_glsl_materialtree.h
===================================================================
--- branches/soc-2007-maike/source/blender/include/BIF_glsl_materialtree.h	2007-08-06 15:32:21 UTC (rev 11504)
+++ branches/soc-2007-maike/source/blender/include/BIF_glsl_materialtree.h	2007-08-06 16:33:31 UTC (rev 11505)
@@ -18,7 +18,6 @@
 struct GLSL_MaterialTree_
 {
   struct GLSL_Program_ *shaded_program;     /* pointer to GLSL_Program structure for shaded mode */
-  struct GLSL_Program_ *textured_program;   /* pointer to GLSL_Program structure for textured mode */
   
   struct GHash *hash;
   

Modified: branches/soc-2007-maike/source/blender/include/BIF_glsl_node_util.h
===================================================================
--- branches/soc-2007-maike/source/blender/include/BIF_glsl_node_util.h	2007-08-06 15:32:21 UTC (rev 11504)
+++ branches/soc-2007-maike/source/blender/include/BIF_glsl_node_util.h	2007-08-06 16:33:31 UTC (rev 11505)
@@ -5,7 +5,7 @@
 
 /* --------------------------------------------------------------------- */
 
-int glsl_shader_code(struct GLSL_MaterialTree_ *tree, struct GLSL_Program_ *program, short type);
+int glsl_shader_code(struct GLSL_MaterialTree_ *tree, struct GLSL_Program_ *program);
 
 #ifdef __APPLE__
 unsigned long glsl_vertex_code(struct GLSL_MaterialTree_ *tree);

Modified: branches/soc-2007-maike/source/blender/include/BIF_glsl_program.h
===================================================================
--- branches/soc-2007-maike/source/blender/include/BIF_glsl_program.h	2007-08-06 15:32:21 UTC (rev 11504)
+++ branches/soc-2007-maike/source/blender/include/BIF_glsl_program.h	2007-08-06 16:33:31 UTC (rev 11505)
@@ -73,6 +73,6 @@
 
 /* -------------------------------------------------------- */
 
-GLSL_Program glsl_init_program(struct GLSL_MaterialTree_ *tree, short type);
+GLSL_Program glsl_init_program(struct GLSL_MaterialTree_ *tree);
 
 

Modified: branches/soc-2007-maike/source/blender/python/api2_2x/EXPP_interface.c
===================================================================
--- branches/soc-2007-maike/source/blender/python/api2_2x/EXPP_interface.c	2007-08-06 15:32:21 UTC (rev 11504)
+++ branches/soc-2007-maike/source/blender/python/api2_2x/EXPP_interface.c	2007-08-06 16:33:31 UTC (rev 11505)
@@ -51,29 +51,6 @@
  * (or NULL if append_scriptdir != 0).
 */
 
-static char *bpy_getinstallhome(void)
-{
-  int len = strlen(bprogname);
-  int count = 0;
-  int i;
-  static char instdir[FILE_MAXDIR];
-
-  printf("\nprog: %s\n", bprogname);
-
-  for(i = len - 1; i >= 0; i--){
-    if(bprogname[i] == '/' || bprogname[i] == '\\')
-      count++;
-    if(count == 4)
-      break;
-  }
-
-  if(count == 4){
-    PyOS_snprintf( instdir, i + 2, "%s", bprogname );
-    return instdir;
-  }
-  else return NULL;
-}
-
 char *bpy_gethome(int append_scriptsdir)
 {
 	static char homedir[FILE_MAXDIR];
@@ -81,7 +58,6 @@
 	char tmpdir[FILE_MAXDIR];
 	char bprogdir[FILE_MAXDIR];
 	char *s = NULL;
-	char *instdir = NULL;
 	int i;
 
 	homedir[0] = scriptsdir[0] = tmpdir[0] = bprogdir[0] = '\0';

Modified: branches/soc-2007-maike/source/blender/src/buttons_shading.c
===================================================================
--- branches/soc-2007-maike/source/blender/src/buttons_shading.c	2007-08-06 15:32:21 UTC (rev 11504)
+++ branches/soc-2007-maike/source/blender/src/buttons_shading.c	2007-08-06 16:33:31 UTC (rev 11505)
@@ -3816,7 +3816,7 @@
 		uiBlockEndAlign(block);
 
 		uiBlockSetCol(block, TH_BUT_SETTING1);
-		uiDefButBitI(block, TOG, MA_TANGENT_V, B_MATPRV, "Tangent V",	245,180,65,19, &(ma->mode), 0, 0, 0, 0, "Use the tangent vector in V direction for shading");
+		uiDefButBitI(block, TOG, MA_TANGENT_V, B_MAT_UNIFS, "Tangent V",	245,180,65,19, &(ma->mode), 0, 0, 0, 0, "Use the tangent vector in V direction for shading");
 		
 		/* qdn: normalmap tangents separated from shading */
 		uiDefButBitI(block, TOG, MA_NORMAP_TANG, B_MATPRV, "NMap TS",	245,160,65,19, &(ma->mode), 0, 0, 0, 0, "Enable Tangent Space normal mapping");

Modified: branches/soc-2007-maike/source/blender/src/glsl_drawobject.c
===================================================================
--- branches/soc-2007-maike/source/blender/src/glsl_drawobject.c	2007-08-06 15:32:21 UTC (rev 11504)
+++ branches/soc-2007-maike/source/blender/src/glsl_drawobject.c	2007-08-06 16:33:31 UTC (rev 11505)
@@ -15,6 +15,7 @@
 #include "DNA_userdef_types.h"
 #include "DNA_view3d_types.h"
 #include "DNA_vec_types.h"
+#include "DNA_meta_types.h"
 
 #include "BLI_arithb.h"
 
@@ -22,9 +23,11 @@
 #include "BKE_DerivedMesh.h"
 #include "BKE_global.h"
 #include "BKE_material.h"
+#include "BKE_displist.h"
 
 #include "BDR_drawmesh.h"
 
+#include "BIF_resources.h"
 #include "BIF_glsl_material.h"
 #include "BIF_glsl_materialtree.h"
 #include "BIF_glutil.h"
@@ -327,9 +330,8 @@
 }
 
 
-void glsl_draw(struct Base *base)
+void glsl_draw(Object *ob, int flag)
 {
-  Object *ob = base->object;
   DerivedMesh *dm= mesh_get_derived_final(ob, get_viewedit_datamask());
   CDDerivedMesh *cddm = (CDDerivedMesh *) dm;
 
@@ -343,14 +345,14 @@
   Material *oldmat = NULL;
   GLSL_Program program = NULL;
 
-
   glMatrixMode(GL_MODELVIEW);
   glPushMatrix();
   glMultMatrixf(ob->obmat);
 
-  if(ob == OBACT ||  (base->flag & (SELECT+BA_WAS_SEL)))
-    glsl_draw_outline(base, face, dm->numFaceData, vert);
+  if(ob == OBACT ||  (flag & (SELECT+BA_WAS_SEL)))
+    glsl_draw_outline(ob, flag, face, dm->numFaceData, vert);
 
+  tface++;
 
   for(i = 0; i < dm->numFaceData; i++, face++, tface++){
     Material *mat = give_current_material(ob, (int) face->mat_nr + 1);
@@ -367,12 +369,8 @@
  
       glColor4f(mat->r, mat->g, mat->b, mat->alpha);
       
-      if(G.vd->drawtype == OB_SHADED){
-	program = glsl_get_material_program(mat, GLSL_SHADED);
-      }
-      else{
-	program = glsl_get_material_program(mat, GLSL_TEXTURED);
-      }
+      program = glsl_get_material_program(mat, GLSL_SHADED);
+
       glUseProgram(program->program);
       glsl_light_uniforms(program->program, ob);
       oldmat = mat;
@@ -441,6 +439,70 @@
 }
 
 
+void glsl_draw_mball(Base *base)
+{
+  Object *ob = base->object;
+  GLSL_Program program = NULL;
+  Material *mat = give_current_material(ob, 0);
+  DispList *dl;
+  ListBase *lb;
+  int i;
+  void *verts, *nors;
+
+
+  lb = &ob->disp;
+  if(lb->first == NULL) makeDispListMBall(ob);
+  if(lb->first == NULL) return;
+  
+  dl = lb->first;
+
+  glMatrixMode(GL_MODELVIEW);
+  glPushMatrix();
+  glMultMatrixf(ob->obmat);
+
+  if(mat && mat->mode & MA_SHLESS){
+    glUseProgram(0);
+    glColor4f(mat->r, mat->g, mat->b, mat->alpha);
+  } 
+  else{
+    if(!mat)
+      mat = &defmaterial;
+    
+    glColor4f(mat->r, mat->g, mat->b, mat->alpha);
+    
+    program = glsl_get_material_program(mat, GLSL_SHADED);
+    glUseProgram(program->program); 
+    
+    glsl_light_uniforms(program->program, ob);
+    
+    if(mat)
+      glsl_update_colorband_tex_uniforms(program->program, mat, 0);
+  }
+
+  glEnableClientState(GL_NORMAL_ARRAY);
+
+  while(dl){
+    glVertexPointer(3, GL_FLOAT, 0, dl->verts);
+    glNormalPointer(GL_FLOAT, 0, dl->nors);
+    glDrawElements(GL_QUADS, 4 * dl->parts, GL_UNSIGNED_INT, dl->index);
+    
+    dl = dl->next;
+  }
+
+  glPopMatrix();
+  
+  // TODO: disable the right number of texture units depending on material
+  for(i=2; i>=0; i--) {
+    glActiveTexture(GL_TEXTURE0 + i);
+    glDisable(GL_TEXTURE_2D);
+    glDisable(GL_TEXTURE_1D);
+  }
+  glUseProgram(0);  
+
+  glDisableClientState(GL_NORMAL_ARRAY);
+}
+
+
 void set_vertex_color(Material *mat, MCol *mcol, int n, GLuint program)
 {
   if(mat && mcol){  
@@ -476,14 +538,14 @@
 }
 
 
-void glsl_draw_outline(Base *base, MFace *face, int num, MVert *vert)
+void glsl_draw_outline(Object *ob, int flag, MFace *face, int num, MVert *vert)
 {
   if(active_color[0] == -1)
     glsl_set_outline_colors();
 
   glDepthMask(GL_FALSE);
-  if(base->object == OBACT ||  (base->flag & (SELECT+BA_WAS_SEL))){
-    if(base->object == OBACT)
+  if(ob == OBACT || (flag & (SELECT+BA_WAS_SEL))){
+    if(ob == OBACT)
       glColor4fv(active_color);
     else
       glColor4fv(selected_color);

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-06 15:32:21 UTC (rev 11504)
+++ branches/soc-2007-maike/source/blender/src/glsl_material_node.c	2007-08-06 16:33:31 UTC (rev 11505)
@@ -60,7 +60,7 @@
 {
   char *code = NULL;
 
-  code = glsl_string(39,
+  code = glsl_string(42,
 		     0, "uniform vec3 u_mat_", GINT, num, 0, "_diff_color;\n",
 		     0, "uniform vec3 u_mat_", GINT, num, 0,"_spec_color;\n",
 		     0, "uniform vec3 u_mat_", GINT, num, 0, "_normal;\n",
@@ -73,7 +73,8 @@
 		     0, "uniform float u_mat_", GINT, num, 0, "_spec3;\n",
 		     0, "uniform float u_mat_", GINT, num, 0, "_amb_fac;\n",
 		     0, "uniform float u_mat_", GINT, num, 0, "_emit;\n",
-		     0, "uniform float u_mat_", GINT, num, 0, "_hard;\n");
+		     0, "uniform float u_mat_", GINT, num, 0, "_hard;\n",
+		     0, "uniform float u_mat_", GINT, num, 0, "_tanv;\n");
 
   return code;
 }

Modified: branches/soc-2007-maike/source/blender/src/glsl_materialtree.c
===================================================================
--- branches/soc-2007-maike/source/blender/src/glsl_materialtree.c	2007-08-06 15:32:21 UTC (rev 11504)

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list