[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