[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11528] branches/soc-2007-maike/source/ blender: Now draws all objects and corrected light layer issued

Miguel Torres Lima torreslima at gmail.com
Thu Aug 9 18:17:20 CEST 2007


Revision: 11528
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11528
Author:   maike
Date:     2007-08-09 18:17:19 +0200 (Thu, 09 Aug 2007)

Log Message:
-----------
Now draws all objects and corrected light layer issued
Drawing still lacks mesh wire and color is not well calculated for some curves and surfaces
Also now draws all outlines, wires, names, axis and centers

Modified Paths:
--------------
    branches/soc-2007-maike/source/blender/include/BDR_drawobject.h
    branches/soc-2007-maike/source/blender/include/BIF_glsl_drawobject.h
    branches/soc-2007-maike/source/blender/include/BIF_glsl_util.h
    branches/soc-2007-maike/source/blender/src/drawobject.c
    branches/soc-2007-maike/source/blender/src/glsl_colorband_node.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_util.c

Modified: branches/soc-2007-maike/source/blender/include/BDR_drawobject.h
===================================================================
--- branches/soc-2007-maike/source/blender/include/BDR_drawobject.h	2007-08-09 15:05:41 UTC (rev 11527)
+++ branches/soc-2007-maike/source/blender/include/BDR_drawobject.h	2007-08-09 16:17:19 UTC (rev 11528)
@@ -78,6 +78,8 @@
 void update_index3_nors_incr(int value);
 void update_draw_index_wire(int value);
 void glsl_drawDispListwire(struct ListBase *lb);
+void glsl_curve_draw_speed(struct Object *ob);
+  void set_draw_color(struct Base *base, int warning_recursive, int flag, unsigned int *col);
 
 
 #ifdef __cplusplus

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-09 15:05:41 UTC (rev 11527)
+++ branches/soc-2007-maike/source/blender/include/BIF_glsl_drawobject.h	2007-08-09 16:17:19 UTC (rev 11528)
@@ -39,7 +39,7 @@
 #endif
 
 
-void create_vertex(struct Object *obj, struct MVert *vert, int index, int flag);
+void create_vertex(struct Object *obj, struct MVert *vert, int index, int flag, float *tangent, short tanflag, short tanindex);
 void glsl_draw(struct Object *ob, int flag);
 void glsl_draw_curve(struct Base *base);
 void glsl_draw_mball(struct Base *base);
@@ -47,4 +47,8 @@
 void glsl_draw_dispList(struct Object *ob, struct DispList *dl);
 void glsl_set_outline_colors(void);
 void glsl_draw_outline(struct Object *ob, int flag, struct MFace *face, int num, struct MVert *vert);
+
+float *glsl_get_active_color(void);
+float *glsl_get_selected_color(void);
+
 void glsl_draw_mesh_selected_outline(struct MFace *face, int num, struct MVert *vert);

Modified: branches/soc-2007-maike/source/blender/include/BIF_glsl_util.h
===================================================================
--- branches/soc-2007-maike/source/blender/include/BIF_glsl_util.h	2007-08-09 15:05:41 UTC (rev 11527)
+++ branches/soc-2007-maike/source/blender/include/BIF_glsl_util.h	2007-08-09 16:17:19 UTC (rev 11528)
@@ -7,6 +7,10 @@
 /* ------------------------------------------- */
 
 struct Object;
+struct Mesh;
+struct MFace;
+struct MTFace;
+struct MVert;
 
 /* ------------------------------------------- */
 
@@ -31,3 +35,7 @@
 #else
 int glsl_uniform_location(unsigned int program, char *name);
 #endif
+
+void glsl_tritangent(float *v1, float *v2, float *v3, float *uv1, float *uv2, float *uv3, struct MFace *face, float *tan1, float *tan2, int v4);
+void glsl_tangentspace(struct Object *ob, struct Mesh *mesh, struct MFace *face, struct MTFace *tface, float *normal, float *tangent);
+void glsl_get_normals(struct MFace *face, struct MVert *vert, float *normals);

Modified: branches/soc-2007-maike/source/blender/src/drawobject.c
===================================================================
--- branches/soc-2007-maike/source/blender/src/drawobject.c	2007-08-09 15:05:41 UTC (rev 11527)
+++ branches/soc-2007-maike/source/blender/src/drawobject.c	2007-08-09 16:17:19 UTC (rev 11528)
@@ -3726,26 +3726,6 @@
 
 	ob= base->object;
 
-
-	/* GLSL draw */
-	if(glsl_active()  && (base->lay & G.vd->lay)){
-	  if(G.vd->drawtype == OB_SHADED && G.obedit != ob && (OBACT != ob || !(G.f & (G_FACESELECT|G_WEIGHTPAINT|G_TEXTUREPAINT|G_VERTEXPAINT|G_SCULPTMODE)))){
-	    if(ob->type == OB_MESH){  /*|| ob->type == OB_SURF || ob->type == OB_CURVE || ob->type == OB_FONT || ob->type == OB_MBALL){ */
-	      glsl_draw(base->object, base->flag);	    
-	      return;
-	    }
-	    else if(ob->type == OB_MBALL){
-	      glsl_draw_mball(base);
-	      return;
-	    }
-	    else if(ob->type == OB_SURF || ob->type == OB_CURVE){
-	      glsl_draw_curve(base);
-	      return;
-	    }
-	  }
-	}
-	/* GLSL draw end */
-
 	
 	if (ob!=G.obedit) {
 		if (ob->restrictflag & OB_RESTRICT_VIEW) 
@@ -3840,51 +3820,8 @@
 	mymultmatrix(ob->obmat);
 
 	/* which wire color */
-	if((flag & DRAW_CONSTCOLOR) == 0) {
-		project_short(ob->obmat[3], &base->sx);
+	set_draw_color(base, warning_recursive, flag, &col);
 
-		if((G.moving & G_TRANSFORM_OBJ) && (base->flag & (SELECT+BA_WAS_SEL))) BIF_ThemeColor(TH_TRANSFORM);
-		else {
-
-			if(ob->type==OB_LAMP) BIF_ThemeColor(TH_LAMP);
-			else BIF_ThemeColor(TH_WIRE);
-
-			if((G.scene->basact)==base) {
-				if(base->flag & (SELECT+BA_WAS_SEL)) BIF_ThemeColor(TH_ACTIVE);
-			}
-			else {
-				if(base->flag & (SELECT+BA_WAS_SEL)) BIF_ThemeColor(TH_SELECT);
-			}
-
-			// no theme yet
-			if(ob->id.lib) {
-				if(base->flag & (SELECT+BA_WAS_SEL)) colindex = 4;
-				else colindex = 3;
-			}
-			else if(warning_recursive==1) {
-				if(base->flag & (SELECT+BA_WAS_SEL)) {
-					if(G.scene->basact==base) colindex = 8;
-					else colindex= 7;
-				}
-				else colindex = 6;
-			}
-			else if(ob->flag & OB_FROMGROUP) {
-				if(base->flag & (SELECT+BA_WAS_SEL)) {
-					if(G.scene->basact==base) BIF_ThemeColor(TH_GROUP_ACTIVE);
-					else BIF_ThemeColorShade(TH_GROUP_ACTIVE, -16); 
-				}
-				else BIF_ThemeColor(TH_GROUP);
-				colindex= 0;
-			}
-
-		}	
-
-		if(colindex) {
-			col= colortab[colindex];
-			cpack(col);
-		}
-	}
-
 	/* maximum drawtype */
 	dt= MIN2(G.vd->drawtype, ob->dt);
 	if(G.vd->zbuf==0 && dt>OB_WIRE) dt= OB_WIRE;
@@ -3939,7 +3876,13 @@
 	switch( ob->type) {
 		case OB_MESH:
 			if (!(base->flag&OB_RADIO)) {
+			  if(glsl_active()  && (base->lay & G.vd->lay) && dt == OB_SHADED && G.obedit != ob && (OBACT != ob || !(G.f & (G_FACESELECT|G_WEIGHTPAINT|G_TEXTUREPAINT|G_VERTEXPAINT|G_SCULPTMODE)))){
+			    glsl_draw(base->object, base->flag);
+			    set_draw_color(base, warning_recursive, flag, &col);
+			  }
+			  else{
 				empty_object= draw_mesh_object(base, dt, flag);
+			  }
 				if(flag!=DRAW_CONSTCOLOR) dtx &= ~OB_DRAWWIRE; // mesh draws wire itself
 
 				if(G.obedit!=ob && warning_recursive==0) {
@@ -4043,6 +3986,10 @@
 			else if(dt==OB_BOUNDBOX) 
 				draw_bounding_volume(ob);
 			else if(boundbox_clip(ob->obmat, cu->bb)) 
+			  if(glsl_active()  && (base->lay & G.vd->lay) && dt == OB_SHADED && G.obedit != ob && (OBACT != ob || !(G.f & (G_FACESELECT|G_WEIGHTPAINT|G_TEXTUREPAINT|G_VERTEXPAINT|G_SCULPTMODE)))){
+			    glsl_draw_dispList(base->object, cu->disp.first);
+			    set_draw_color(base, warning_recursive, flag, &col);
+			  }
 				empty_object= drawDispList(base, dt);
 
 			break;
@@ -4058,6 +4005,11 @@
 			else if(dt==OB_BOUNDBOX) 
 				draw_bounding_volume(ob);
 			else if(boundbox_clip(ob->obmat, cu->bb)) {
+			  if(glsl_active()  && (base->lay & G.vd->lay) && dt == OB_SHADED && G.obedit != ob && (OBACT != ob || !(G.f & (G_FACESELECT|G_WEIGHTPAINT|G_TEXTUREPAINT|G_VERTEXPAINT|G_SCULPTMODE)))){
+			    glsl_draw_curve(base);
+			    set_draw_color(base, warning_recursive, flag, &col);
+			  }
+			  else
 				empty_object= drawDispList(base, dt);
 				
 				if(cu->path)
@@ -4069,8 +4021,14 @@
 				drawmball(base, dt);
 			else if(dt==OB_BOUNDBOX) 
 				draw_bounding_volume(ob);
-			else 
+			else{
+			  if(glsl_active()  && (base->lay & G.vd->lay) && dt == OB_SHADED && G.obedit != ob && (OBACT != ob || !(G.f & (G_FACESELECT|G_WEIGHTPAINT|G_TEXTUREPAINT|G_VERTEXPAINT|G_SCULPTMODE)))){
+			    glsl_draw_mball(base);
+			    set_draw_color(base, warning_recursive, flag, &col);
+			  }
+			  else
 				empty_object= drawmball(base, dt);
+			}
 			break;
 		case OB_EMPTY:
 			drawaxes(ob->empty_drawsize, flag, ob->empty_drawtype);
@@ -4513,3 +4471,58 @@
 {
   drawDispListwire(lb);
 }
+
+
+void glsl_curve_draw_speed(Object *ob)
+{
+  curve_draw_speed(ob);
+}
+
+void set_draw_color(Base *base, int warning_recursive, int flag, unsigned int *col)
+{
+  Object *ob = base->object;
+  int colindex = 0;
+
+  if((flag & DRAW_CONSTCOLOR) == 0) {
+    project_short(ob->obmat[3], &base->sx);
+    
+    if((G.moving & G_TRANSFORM_OBJ) && (base->flag & (SELECT+BA_WAS_SEL))) BIF_ThemeColor(TH_TRANSFORM);
+    else {
+      if(ob->type==OB_LAMP) BIF_ThemeColor(TH_LAMP);
+      else BIF_ThemeColor(TH_WIRE);
+      
+      if((G.scene->basact)==base) {
+	if(base->flag & (SELECT+BA_WAS_SEL)) BIF_ThemeColor(TH_ACTIVE);
+      }
+      else {
+	if(base->flag & (SELECT+BA_WAS_SEL)) BIF_ThemeColor(TH_SELECT);
+      }
+      
+      // no theme yet
+      if(ob->id.lib) {
+	if(base->flag & (SELECT+BA_WAS_SEL)) colindex = 4;
+	else colindex = 3;
+      }
+      else if(warning_recursive==1) {
+	if(base->flag & (SELECT+BA_WAS_SEL)) {
+	  if(G.scene->basact==base) colindex = 8;
+	  else colindex= 7;
+	}
+	else colindex = 6;
+      }
+      else if(ob->flag & OB_FROMGROUP) {
+	if(base->flag & (SELECT+BA_WAS_SEL)) {
+	  if(G.scene->basact==base) BIF_ThemeColor(TH_GROUP_ACTIVE);
+	  else BIF_ThemeColorShade(TH_GROUP_ACTIVE, -16); 
+	}
+	else BIF_ThemeColor(TH_GROUP);
+	colindex= 0;
+      }
+    }	
+    
+    if(colindex) {
+      col = &colortab[colindex];
+      cpack(*col);
+    }
+  }
+}

Modified: branches/soc-2007-maike/source/blender/src/glsl_colorband_node.c
===================================================================
--- branches/soc-2007-maike/source/blender/src/glsl_colorband_node.c	2007-08-09 15:05:41 UTC (rev 11527)
+++ branches/soc-2007-maike/source/blender/src/glsl_colorband_node.c	2007-08-09 16:17:19 UTC (rev 11528)
@@ -74,7 +74,12 @@
 char *glsl_colorband_node_defines(Material *mat, int *blend, int num, int ramp_num)
 {
   char *blendmode[16] = { "mix", "add", "mult", "sub", "screen", "div", "dif", "dark", "light", "overlay", "dodge", "burn", "hue", "sat", "val", "color" };
-  char *code, *type = NULL, *func, *tex, *fac, *rslt = NULL;
+  char *code = NULL;
+  char *type = NULL;
+  char *func = NULL;
+  char *tex = NULL;
+  char *fac = NULL;
+  char *rslt = NULL;
   int blen_type;
 
   if(!ramp_num){

Modified: branches/soc-2007-maike/source/blender/src/glsl_drawobject.c
===================================================================
--- branches/soc-2007-maike/source/blender/src/glsl_drawobject.c	2007-08-09 15:05:41 UTC (rev 11527)
+++ branches/soc-2007-maike/source/blender/src/glsl_drawobject.c	2007-08-09 16:17:19 UTC (rev 11528)
@@ -74,7 +74,7 @@
   Mat4MulVecfl(G.vd->viewmat, vect);
   glUniform3fv(glsl_uniform_location(program, loc), 1, vect);
   
-  if(obj->lay & lamp_obj->lay || !(lamp->mode & LA_LAYER))
+  if((obj->lay & G.vd->lay && lamp_obj->lay & G.vd->lay && !(lamp->mode & LA_LAYER)) || (lamp_obj->lay == obj->lay))
     glUniform1f(glsl_uniform_location(program, layer), 1.0);
   else

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list