[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11360] branches/soc-2007-maike: Refactoring of the code, tried to encapsulate the most functions i could into structures
Miguel Torres Lima
torreslima at gmail.com
Tue Jul 24 18:35:42 CEST 2007
Revision: 11360
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11360
Author: maike
Date: 2007-07-24 18:35:42 +0200 (Tue, 24 Jul 2007)
Log Message:
-----------
Refactoring of the code, tried to encapsulate the most functions i could into structures
Corrected specular toon shader
Created some texture related events
Modified Paths:
--------------
branches/soc-2007-maike/release/glsl/spectoon.gsl
branches/soc-2007-maike/release/glsl/spectoon_area.gsl
branches/soc-2007-maike/release/glsl/spectoon_hemi.gsl
branches/soc-2007-maike/release/glsl/spectoon_sun.gsl
branches/soc-2007-maike/source/blender/blenkernel/intern/material.c
branches/soc-2007-maike/source/blender/blenkernel/intern/texture.c
branches/soc-2007-maike/source/blender/include/BIF_glsl_colorband.h
branches/soc-2007-maike/source/blender/include/BIF_glsl_light.h
branches/soc-2007-maike/source/blender/include/BIF_glsl_material.h
branches/soc-2007-maike/source/blender/include/BIF_glsl_uniforms.h
branches/soc-2007-maike/source/blender/include/BIF_glsl_util.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_colorband_node.c
branches/soc-2007-maike/source/blender/src/glsl_drawobject.c
branches/soc-2007-maike/source/blender/src/glsl_light.c
branches/soc-2007-maike/source/blender/src/glsl_material.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
branches/soc-2007-maike/source/blender/src/glutil.c
branches/soc-2007-maike/source/blender/src/headerbuttons.c
Added Paths:
-----------
branches/soc-2007-maike/source/blender/include/BIF_glsl_materialtree.h
branches/soc-2007-maike/source/blender/include/BIF_glsl_texture.h
branches/soc-2007-maike/source/blender/src/glsl_materialtree.c
branches/soc-2007-maike/source/blender/src/glsl_texture.c
Modified: branches/soc-2007-maike/release/glsl/spectoon.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/spectoon.gsl 2007-07-24 15:24:19 UTC (rev 11359)
+++ branches/soc-2007-maike/release/glsl/spectoon.gsl 2007-07-24 16:35:42 UTC (rev 11360)
@@ -3,6 +3,8 @@
vec3 h = normalize((eye - pos) + (l.loc - pos));
float rslt = max(dot(h, vnormal), 0.0);
float ang = acos(clamp(rslt, -1.0, 1.0));
- rslt = clamp(ceil(size + smooth - ang - 0.00001) * (1.0 - ((ang - size) / smooth)), 0.0, 1.0);
+ if(ang < size) rslt = 1.0;
+ else if(ang >= (size + smooth) || smooth == 0.0) rslt = 0.0;
+ else rslt = 1.0 - ((ang - size) / smooth);
return(rslt);
}
Modified: branches/soc-2007-maike/release/glsl/spectoon_area.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/spectoon_area.gsl 2007-07-24 15:24:19 UTC (rev 11359)
+++ branches/soc-2007-maike/release/glsl/spectoon_area.gsl 2007-07-24 16:35:42 UTC (rev 11360)
@@ -2,7 +2,9 @@
vec3 view = normalize(eye - pos);
vec3 h = normalize((eye - pos) + (l.loc - pos));
float rslt = max(dot(h, vnormal), 0.0);
- float ang = acos(clamp(rslt, -1.0, 1.0));
- rslt = clamp(ceil(size + smooth - ang - 0.00001) * (1.0 - ((ang - size) / smooth)), 0.0, 1.0);
+ float ang = acos(clamp(rslt, -1.0, 1.0));
+ if(ang < size) rslt = 1.0;
+ else if(ang >= (size + smooth) || smooth == 0.0) rslt = 0.0;
+ else rslt = 1.0 - ((ang - size) / smooth);
return(rslt);
}
Modified: branches/soc-2007-maike/release/glsl/spectoon_hemi.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/spectoon_hemi.gsl 2007-07-24 15:24:19 UTC (rev 11359)
+++ branches/soc-2007-maike/release/glsl/spectoon_hemi.gsl 2007-07-24 16:35:42 UTC (rev 11360)
@@ -3,5 +3,5 @@
vec3 h = normalize((eye - pos) + l.vec);
float rslt = dot(h, vnormal);
float nh = 0.5 * rslt + 0.5;
- return(nh * pow(nh, hard));
+ return(max(nh * pow(nh, hard), 0.0));
}
Modified: branches/soc-2007-maike/release/glsl/spectoon_sun.gsl
===================================================================
--- branches/soc-2007-maike/release/glsl/spectoon_sun.gsl 2007-07-24 15:24:19 UTC (rev 11359)
+++ branches/soc-2007-maike/release/glsl/spectoon_sun.gsl 2007-07-24 16:35:42 UTC (rev 11360)
@@ -2,7 +2,9 @@
vec3 view = normalize(eye - pos);
vec3 h = normalize((eye - pos) + l.vec);
float rslt = max(dot(h, vnormal), 0.0);
- float ang = acos(clamp(rslt, -1.0, 1.0));
- rslt = clamp(ceil(size + smooth - ang - 0.00001) * (1.0 - ((ang - size) / smooth)), 0.0, 1.0);
+ float ang = acos(clamp(rslt, -1.0, 1.0));
+ if(ang < size) rslt = 1.0;
+ else if(ang >= (size + smooth) || smooth == 0.0) rslt = 0.0;
+ else rslt = 1.0 - ((ang - size) / smooth);
return(rslt);
}
Modified: branches/soc-2007-maike/source/blender/blenkernel/intern/material.c
===================================================================
--- branches/soc-2007-maike/source/blender/blenkernel/intern/material.c 2007-07-24 15:24:19 UTC (rev 11359)
+++ branches/soc-2007-maike/source/blender/blenkernel/intern/material.c 2007-07-24 16:35:42 UTC (rev 11360)
@@ -65,7 +65,9 @@
#include "BPY_extern.h"
#include "BIF_glsl_material.h"
+#include "BIF_glsl_materialtree.h"
#include "BIF_glutil.h"
+#include "BIF_glsl_util.h"
/* used in UI and render */
Material defmaterial;
Modified: branches/soc-2007-maike/source/blender/blenkernel/intern/texture.c
===================================================================
--- branches/soc-2007-maike/source/blender/blenkernel/intern/texture.c 2007-07-24 15:24:19 UTC (rev 11359)
+++ branches/soc-2007-maike/source/blender/blenkernel/intern/texture.c 2007-07-24 16:35:42 UTC (rev 11360)
@@ -473,7 +473,7 @@
tex= alloc_libblock(&G.main->tex, ID_TE, name);
default_tex(tex);
-
+
return tex;
}
@@ -519,7 +519,7 @@
mtex= MEM_callocN(sizeof(MTex), "add_mtex");
default_mtex(mtex);
-
+
return mtex;
}
@@ -540,7 +540,7 @@
if(texn->coba) texn->coba= MEM_dupallocN(texn->coba);
if(texn->env) texn->env= BKE_copy_envmap(texn->env);
-
+ printf("\n copy tex\n");
return texn;
}
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-24 15:24:19 UTC (rev 11359)
+++ branches/soc-2007-maike/source/blender/include/BIF_glsl_colorband.h 2007-07-24 16:35:42 UTC (rev 11360)
@@ -20,8 +20,10 @@
#else
unsigned int texid;
#endif
+
short tex_set;
+ void (*add_tex)(struct GLSL_ColorBand_ *colorband);
void (*free)(struct GLSL_ColorBand_ *colorband);
};
@@ -32,9 +34,6 @@
/* -------------------------------------------------------- */
GLSL_ColorBand glsl_init_colorband(struct Material *mat, struct ColorBand *cb);
-int glsl_colorband_state(struct Material *mat);
+
void glsl_colorbands_change(struct Material *mat);
-void glsl_colorband_add(struct Material *mat, struct GLSL_Material_ *material, int type);
-void glsl_colorband_del(struct GLSL_Material_ *material, int type);
void glsl_colorband_create_tex(struct Material *mat);
-void glsl_colorband_generate_tex(GLSL_ColorBand colorband, short type);
Modified: branches/soc-2007-maike/source/blender/include/BIF_glsl_light.h
===================================================================
--- branches/soc-2007-maike/source/blender/include/BIF_glsl_light.h 2007-07-24 15:24:19 UTC (rev 11359)
+++ branches/soc-2007-maike/source/blender/include/BIF_glsl_light.h 2007-07-24 16:35:42 UTC (rev 11360)
@@ -33,13 +33,8 @@
void glsl_update_light(struct Lamp *lamp, unsigned short event);
-void glsl_update_all_light_uniforms(struct GLSL_MaterialTree_ *tree);
-void glsl_update_light_uniforms(GLSL_Light light, struct Lamp *lamp, struct GLSL_MaterialTree_ *vtree);
-
int glsl_get_light_num(struct Lamp *lamp);
GLSL_Light glsl_create_glsl_light(struct Lamp *lamp, struct Object *obj);
-int glsl_check_param(short attr1, short attr2, int param);
-
void glsl_delete_light(struct Lamp *lamp);
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-24 15:24:19 UTC (rev 11359)
+++ branches/soc-2007-maike/source/blender/include/BIF_glsl_material.h 2007-07-24 16:35:42 UTC (rev 11360)
@@ -1,17 +1,11 @@
-#define GLSL_HASH 0 /* used to decide which hash is used, a global or a local hash */
-#define GLSL_LOCALHASH 1
-#define GLSL_MAT 0
-#define GLSL_NODES 1
-
-/* ------------------------------------------------ */
-
struct GLSL_Program_;
struct Material;
struct Object;
struct GHash;
struct Colorband;
struct GLSL_ColorBand_;
+struct GLSL_Texture_;
/* ------------------------------------------------ */
@@ -26,11 +20,29 @@
short texface;
void (*unlink)(struct GLSL_Material_ * material, struct Material *mat);
- void (*init_cb)(struct GLSL_Material_ *material, struct Material *mat);
void (*free)(struct GLSL_Material_ * material, struct Material *mat);
+ void (*add_parent)(struct GLSL_Material_ *material, void *parent);
+ void (*del_parent)(struct GLSL_Material_ *material, void *parent);
+
+ void (*init_cb)(struct GLSL_Material_ *material, struct Material *mat);
+ void (*add_diff_cb)(struct GLSL_Material_ *material, struct Material *mat);
+ void (*del_diff_cb)(struct GLSL_Material_ *material);
+ void (*tex_diff_cb)(struct GLSL_Material_ *material);
+ void (*add_spec_cb)(struct GLSL_Material_ *material, struct Material *mat);
+ void (*del_spec_cb)(struct GLSL_Material_ *material);
+ void (*tex_spec_cb)(struct GLSL_Material_ *material);
+
+
+ void (*add_tex)(struct GLSL_Material_ *material, struct Material *mat, int index);
+ void (*del_tex)(struct GLSL_Material_ *material, int index);
+
+ void (*redo_prog)(struct GLSL_Material_ *material);
+
struct GLSL_ColorBand_ *diff_ramp;
struct GLSL_ColorBand_ *spec_ramp;
+
+ struct GLSL_Texture_ *tex[10];
};
@@ -41,55 +53,18 @@
};
-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;
-
- void (*add_material)(struct GLSL_MaterialTree_ * tree, struct Material *mat);
- void (*del_material)(struct GLSL_MaterialTree_ * tree, struct Material *mat);
- void (*update_material)(void);
- int (*create_programs)(struct GLSL_MaterialTree_ * tree);
- void (*free)(struct GLSL_MaterialTree_ * tree);
-
- short type;
-};
-
/* ----------------------------------------------- */
-typedef struct GLSL_MaterialTree_ *GLSL_MaterialTree;
typedef struct GLSL_Material_ *GLSL_Material;
typedef struct GLSL_List_ *GLSL_List;
/* ----------------------------------------------- */
-void glsl_init_ghash(void);
-void glsl_free_ghash(void);
-
-void glsl_init_defmaterial(struct Material *mat);
-void glsl_init_defmaterial_program(void);
-void glsl_delete_defmaterial(void);
-
-void glsl_create_materialtree(void *mat, short type);
-void glsl_init_materialtree(void *mat, short type);
GLSL_Material glsl_init_material(struct Material *mat);
-
-
void glsl_delete_material(struct Material *mat);
-void glsl_free_material_structs(void);
-void glsl_layer_change(unsigned int lay);
-
void glsl_update_material(struct Material *mat, unsigned short event);
-void glsl_init_material_programs(void);
-struct GLSL_Program_ *glsl_get_material_program(struct Material *mat, short mode);
-void glsl_redo_programs(void);
-void glsl_redo_mat_program(struct GLSL_Material_ *material);
-
-
-
-int glsl_get_material_index(GLSL_MaterialTree tree, struct Material *mat);
+void glsl_free_material_structs(void);
+void glsl_layer_change(unsigned int lay);
Added: branches/soc-2007-maike/source/blender/include/BIF_glsl_materialtree.h
===================================================================
--- branches/soc-2007-maike/source/blender/include/BIF_glsl_materialtree.h (rev 0)
+++ branches/soc-2007-maike/source/blender/include/BIF_glsl_materialtree.h 2007-07-24 16:35:42 UTC (rev 11360)
@@ -0,0 +1,56 @@
+#define GLSL_HASH 0 /* used to decide which hash is used, a global or a local hash */
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list