[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11536] branches/soc-2007-maike/source/ blender: Added group lighting for materials
Miguel Torres Lima
torreslima at gmail.com
Fri Aug 10 17:28:34 CEST 2007
Revision: 11536
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11536
Author: maike
Date: 2007-08-10 17:28:34 +0200 (Fri, 10 Aug 2007)
Log Message:
-----------
Added group lighting for materials
Modified Paths:
--------------
branches/soc-2007-maike/source/blender/include/BIF_glsl_drawobject.h
branches/soc-2007-maike/source/blender/include/BIF_glsl_light.h
branches/soc-2007-maike/source/blender/src/glsl_drawobject.c
branches/soc-2007-maike/source/blender/src/glsl_light.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-10 14:40:04 UTC (rev 11535)
+++ branches/soc-2007-maike/source/blender/include/BIF_glsl_drawobject.h 2007-08-10 15:28:34 UTC (rev 11536)
@@ -7,6 +7,7 @@
struct MVert;
struct DispList;
struct DerivedMesh;
+struct Group;
/* ----------------------------------------------------------------------------- */
@@ -26,7 +27,7 @@
void glsl_runtime_lamp_uniforms(struct Lamp *lamp, struct Object *obj, struct Object *lamp_obj, int num, unsigned long program);
void glsl_runtime_lamp_uniforms(struct Lamp *lamp, struct Object *obj, struct Object *lamp_obj, int num, unsigned long program);
void glsl_area_lamp_vectors(struct Lamp *lamp, struct Object *obj, struct Object *lamp_obj, int num, unsigned long program);
-void glsl_light_uniforms(unsigned long program, struct Object *obj);
+void glsl_light_uniforms(unsigned long program, struct Object *obj, short hasgroup, struct Group *group);
void set_vertex_color(struct Material *mat, struct MCol *mcol, int n, unsigned long program);
#else
void glsl_runtime_lamp_uniforms(struct Lamp *lamp, struct Object *obj, struct Object *lamp_obj, int num, unsigned int program);
@@ -35,7 +36,7 @@
void glsl_runtime_lamp_uniforms(struct Lamp *lamp, struct Object *obj, struct Object *lamp_obj, int num, unsigned int program);
void glsl_runtime_lamp_uniforms(struct Lamp *lamp, struct Object *obj, struct Object *lamp_obj, int num, unsigned int program);
void glsl_area_lamp_vectors(struct Lamp *lamp, struct Object *obj, struct Object *lamp_obj, int num, unsigned int program);
-void glsl_light_uniforms(unsigned int program, struct Object *obj);
+void glsl_light_uniforms(unsigned int program, struct Object *obj, short hasgroup, struct Group *group);
void set_vertex_color(struct Material *mat, struct MCol *mcol, int n, unsigned int program);
#endif
Modified: branches/soc-2007-maike/source/blender/include/BIF_glsl_light.h
===================================================================
--- branches/soc-2007-maike/source/blender/include/BIF_glsl_light.h 2007-08-10 14:40:04 UTC (rev 11535)
+++ branches/soc-2007-maike/source/blender/include/BIF_glsl_light.h 2007-08-10 15:28:34 UTC (rev 11536)
@@ -19,6 +19,7 @@
struct Object;
struct GLSL_List_;
struct GLSL_MaterialTree_;
+struct Group;
/* -------------------------------------------------------- */
@@ -38,3 +39,4 @@
void glsl_delete_light(struct Lamp *lamp);
+int glsl_light_in_group(struct Object *ob, struct Group *group);
Modified: branches/soc-2007-maike/source/blender/src/glsl_drawobject.c
===================================================================
--- branches/soc-2007-maike/source/blender/src/glsl_drawobject.c 2007-08-10 14:40:04 UTC (rev 11535)
+++ branches/soc-2007-maike/source/blender/src/glsl_drawobject.c 2007-08-10 15:28:34 UTC (rev 11536)
@@ -17,6 +17,7 @@
#include "DNA_vec_types.h"
#include "DNA_meta_types.h"
#include "DNA_curve_types.h"
+#include "DNA_group_types.h"
#include "BLI_arithb.h"
@@ -286,7 +287,7 @@
}
-void glsl_light_uniforms(GLuint program, Object *obj)
+void glsl_light_uniforms(GLuint program, Object *obj, short hasgroup, Group *group)
{
GLSL_List list = glsl_get_lights();
int i;
@@ -296,6 +297,13 @@
Lamp *lamp = light->blen_light;
Object *lamp_obj = light->obj;
+ if(group && !(glsl_light_in_group(lamp_obj, group))){
+ 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:
@@ -372,7 +380,7 @@
program = glsl_get_material_program(mat, GLSL_SHADED);
glUseProgram(program->program);
- glsl_light_uniforms(program->program, ob);
+ glsl_light_uniforms(program->program, ob, (mat->mode & MA_GROUP_NOLAY)?1:0, mat->group);
oldmat = mat;
if(mat){
@@ -559,7 +567,7 @@
program = glsl_get_material_program(mat, GLSL_SHADED);
glUseProgram(program->program);
- glsl_light_uniforms(program->program, ob);
+ glsl_light_uniforms(program->program, ob, (mat->mode & MA_GROUP_NOLAY)?1:0, mat->group);
if(mat)
glsl_update_colorband_tex_uniforms(program->program, mat, 0);
Modified: branches/soc-2007-maike/source/blender/src/glsl_light.c
===================================================================
--- branches/soc-2007-maike/source/blender/src/glsl_light.c 2007-08-10 14:40:04 UTC (rev 11535)
+++ branches/soc-2007-maike/source/blender/src/glsl_light.c 2007-08-10 15:28:34 UTC (rev 11536)
@@ -23,11 +23,13 @@
#include "DNA_view3d_types.h"
#include "DNA_lamp_types.h"
#include "DNA_object_types.h"
+#include "DNA_group_types.h"
#include "MEM_guardedalloc.h"
#include "BLI_ghash.h"
+
/* --------------------------------------------------------------- */
GLSL_List lights = NULL;
@@ -231,3 +233,16 @@
glsl_redo_programs();
}
+
+
+int glsl_light_in_group(Object *ob, Group *group)
+{
+ GroupObject *go;
+
+ for(go = group->gobject.first; go; go = go->next){
+ if(go->ob == ob)
+ return 1;
+ }
+
+ return 0;
+}
More information about the Bf-blender-cvs
mailing list