[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11766] branches/soc-2007-maike/source/ blender/src: Added object restrict renderability
Miguel Torres Lima
torreslima at gmail.com
Tue Aug 21 17:36:41 CEST 2007
Revision: 11766
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11766
Author: maike
Date: 2007-08-21 17:36:40 +0200 (Tue, 21 Aug 2007)
Log Message:
-----------
Added object restrict renderability
Modified Paths:
--------------
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/glutil.c
Modified: branches/soc-2007-maike/source/blender/src/glsl_drawobject.c
===================================================================
--- branches/soc-2007-maike/source/blender/src/glsl_drawobject.c 2007-08-21 15:12:09 UTC (rev 11765)
+++ branches/soc-2007-maike/source/blender/src/glsl_drawobject.c 2007-08-21 15:36:40 UTC (rev 11766)
@@ -302,9 +302,16 @@
char *layer = glsl_string(3, 0, "lights[", GINT, i, 0, "].layer");
glUniform1f(glsl_uniform_location(program, layer), 0.0);
MEM_freeN(layer);
- continue;
+ continue;
}
+ if(lamp_obj->restrictflag & OB_RESTRICT_RENDER){
+ char *layer = glsl_string(3, 0, "lights[", GINT, i, 0, "].layer");
+ glUniform1f(glsl_uniform_location(program, layer), 0.0);
+ MEM_freeN(layer);
+ continue;
+ }
+
switch(lamp->type)
{
case LA_LOCAL:
@@ -386,6 +393,8 @@
Material *oldmat = NULL;
GLSL_Program program = NULL;
+ if(ob->restrictflag & OB_RESTRICT_RENDER) return;
+
if((base->flag & SELECT || ob == OBACT) && (G.vd->flag&V3D_SELECT_OUTLINE))
glsl_draw_outline(ob, dm);
@@ -510,6 +519,8 @@
DispList *dl;
ListBase *lb;
+ if(ob->restrictflag & OB_RESTRICT_RENDER) return;
+
switch(ob->type)
{
case OB_CURVE:
@@ -565,6 +576,7 @@
MetaElem *ml;
float imat[4][4], tmat[4][4];
+ if(ob->restrictflag & OB_RESTRICT_RENDER) return;
lb = &ob->disp;
if(lb->first == NULL) makeDispListMBall(ob);
@@ -618,6 +630,7 @@
if(mat && mat->mode & MA_SHLESS){
glUseProgram(0);
+ glColor4f(mat->r, mat->g, mat->b, mat->alpha);
}
else{
if(mat && mat->mode & MA_TANGENT_V){
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-21 15:12:09 UTC (rev 11765)
+++ branches/soc-2007-maike/source/blender/src/glsl_material_node.c 2007-08-21 15:36:40 UTC (rev 11766)
@@ -103,7 +103,39 @@
if(!(func_init = glsl_get_func("material.gsl")))
return NULL;
- if(!(func_end = glsl_get_func("material_return.gsl"))){
+ if(mat->mode & MA_SHLESS){
+ code = glsl_string(9,
+ 0, "\n#define MATERIAL_ID ", GINT, num, 0, "\n",
+ 0, "\n#define MATERIAL_FUNC material_", GINT, num, 0, "\n",
+ GFREE, func_init,
+ 0, "\nreturn(diff_color + vert_color);\n}\n",
+ 0, "#undef MATERIAL_ID\n#undef MATERIAL_FUNC\n");
+
+ return code;
+ }
+
+ if(!glsl_get_num_lights()){
+ code = glsl_string(9,
+ 0, "\n#define MATERIAL_ID ", GINT, num, 0, "\n",
+ 0, "\n#define MATERIAL_FUNC material_", GINT, num, 0, "\n",
+ GFREE, func_init,
+ 0, "\nreturn(0.0, 0.0, 0.0);\n}\n",
+ 0, "#undef MATERIAL_ID\n#undef MATERIAL_FUNC\n");
+
+ return code;
+ }
+
+ if(mat->mode & MA_RAMP_COL && mat->rampin_col == MA_RAMP_IN_RESULT){
+ func_end = glsl_get_func("material_return_cb_diff.gsl");
+ }
+ else if(mat->mode & MA_RAMP_SPEC && mat->rampin_spec == MA_RAMP_IN_RESULT){
+ func_end = glsl_get_func("material_return_cb_spec.gsl");
+ }
+ else{
+ func_end = glsl_get_func("material_return.gsl");
+ }
+
+ if(!func_end){
MEM_freeN(func_init);
return NULL;
}
@@ -124,12 +156,6 @@
}
}
- if(mat->mode & MA_SHLESS){
- func_init = glsl_string(2,
- 0, "#define IS_SHADELESS 1\n",
- GFREE, func_init);
- }
-
if(mat->mode & MA_RAMP_COL){
diff_ramp = glsl_colorband_node_defines(mat, blend, num, 0);
func_init = glsl_string(2, GFREE, func_init, GFREE, diff_ramp);
@@ -142,11 +168,11 @@
material_lights = glsl_material_lights(mat, diffuse, specular, lights);
- code = glsl_string(13,
+ code = glsl_string(11,
0, "\n#define MATERIAL_ID ", GINT, num, 0, "\n",
0, "\n#define MATERIAL_FUNC material_", GINT, num, 0, "\n",
GFREE, func_init,
- 0, "\n#define LIGHT_CALCULATIONS ", GINT, glsl_get_num_lights()?1:0, 0, "\n",
+ 0, "\n",
GFREE, material_lights,
GFREE, func_end,
0, "\n#undef MATERIAL_ID\n#undef MATERIAL_FUNC\n");
Modified: branches/soc-2007-maike/source/blender/src/glutil.c
===================================================================
--- branches/soc-2007-maike/source/blender/src/glutil.c 2007-08-21 15:12:09 UTC (rev 11765)
+++ branches/soc-2007-maike/source/blender/src/glutil.c 2007-08-21 15:36:40 UTC (rev 11766)
@@ -832,6 +832,18 @@
printf("\nGLSL deactivated.\n");
}
}
+ else{
+ if(G.vd && G.vd->drawtype == OB_GLSL){
+ if(drawtype == OB_GLSL){
+ glsl_free_all();
+ G.vd->drawtype = OB_SHADED;
+ drawtype = OB_SHADED;
+ }
+ else{
+ G.vd->drawtype = drawtype;
+ }
+ }
+ }
}
More information about the Bf-blender-cvs
mailing list