[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