[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [30805] trunk/blender/source: Fix #22986: glsl didn't take object hiding into account yet for lamps.

Brecht Van Lommel brecht at blender.org
Tue Jul 27 13:10:35 CEST 2010


Revision: 30805
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=30805
Author:   blendix
Date:     2010-07-27 13:10:34 +0200 (Tue, 27 Jul 2010)

Log Message:
-----------
Fix #22986: glsl didn't take object hiding into account yet for lamps.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
    trunk/blender/source/blender/gpu/GPU_material.h
    trunk/blender/source/blender/gpu/intern/gpu_material.c
    trunk/blender/source/gameengine/Ketsji/KX_Light.cpp

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2010-07-27 11:07:34 UTC (rev 30804)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2010-07-27 11:10:34 UTC (rev 30805)
@@ -1798,7 +1798,7 @@
 	lamp = GPU_lamp_from_blender(scene, ob, par);
 	
 	if(lamp) {
-		GPU_lamp_update(lamp, ob->lay, obmat);
+		GPU_lamp_update(lamp, ob->lay, (ob->restrictflag & OB_RESTRICT_VIEW), obmat);
 		GPU_lamp_update_colors(lamp, la->r, la->g, la->b, la->energy);
 		
 		if((ob->lay & v3d->lay) && GPU_lamp_has_shadow_buffer(lamp)) {

Modified: trunk/blender/source/blender/gpu/GPU_material.h
===================================================================
--- trunk/blender/source/blender/gpu/GPU_material.h	2010-07-27 11:07:34 UTC (rev 30804)
+++ trunk/blender/source/blender/gpu/GPU_material.h	2010-07-27 11:10:34 UTC (rev 30805)
@@ -158,7 +158,7 @@
 void GPU_lamp_shadow_buffer_bind(GPULamp *lamp, float viewmat[][4], int *winsize, float winmat[][4]);
 void GPU_lamp_shadow_buffer_unbind(GPULamp *lamp);
 
-void GPU_lamp_update(GPULamp *lamp, int lay, float obmat[][4]);
+void GPU_lamp_update(GPULamp *lamp, int lay, int hide, float obmat[][4]);
 void GPU_lamp_update_colors(GPULamp *lamp, float r, float g, float b, float energy);
 int GPU_lamp_shadow_layer(GPULamp *lamp);
 

Modified: trunk/blender/source/blender/gpu/intern/gpu_material.c
===================================================================
--- trunk/blender/source/blender/gpu/intern/gpu_material.c	2010-07-27 11:07:34 UTC (rev 30804)
+++ trunk/blender/source/blender/gpu/intern/gpu_material.c	2010-07-27 11:10:34 UTC (rev 30805)
@@ -103,7 +103,7 @@
 	Object *par;
 	Lamp *la;
 
-	int type, mode, lay;
+	int type, mode, lay, hide;
 
 	float dynenergy, dyncol[3];
 	float energy, col[3];
@@ -256,7 +256,7 @@
 		for(nlink=material->lamps.first; nlink; nlink=nlink->next) {
 			lamp= nlink->data;
 
-			if((lamp->lay & viewlay) && (!(lamp->mode & LA_LAYER) || (lamp->lay & oblay))) {
+			if(!lamp->hide && (lamp->lay & viewlay) && (!(lamp->mode & LA_LAYER) || (lamp->lay & oblay))) {
 				lamp->dynenergy = lamp->energy;
 				VECCOPY(lamp->dyncol, lamp->col);
 			}
@@ -1310,11 +1310,12 @@
 
 /* Lamps and shadow buffers */
 
-void GPU_lamp_update(GPULamp *lamp, int lay, float obmat[][4])
+void GPU_lamp_update(GPULamp *lamp, int lay, int hide, float obmat[][4])
 {
 	float mat[4][4];
 
 	lamp->lay = lay;
+	lamp->hide = hide;
 
 	copy_m4_m4(mat, obmat);
 	normalize_m4(mat);
@@ -1355,7 +1356,7 @@
 	lamp->col[1]= la->g*lamp->energy;
 	lamp->col[2]= la->b*lamp->energy;
 
-	GPU_lamp_update(lamp, ob->lay, ob->obmat);
+	GPU_lamp_update(lamp, ob->lay, (ob->restrictflag & OB_RESTRICT_VIEW), ob->obmat);
 
 	lamp->spotsi= la->spotsize;
 	if(lamp->mode & LA_HALO)

Modified: trunk/blender/source/gameengine/Ketsji/KX_Light.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_Light.cpp	2010-07-27 11:07:34 UTC (rev 30804)
+++ trunk/blender/source/gameengine/Ketsji/KX_Light.cpp	2010-07-27 11:10:34 UTC (rev 30805)
@@ -66,7 +66,7 @@
 
 	if((lamp = GetGPULamp())) {
 		float obmat[4][4] = {{0}};
-		GPU_lamp_update(lamp, 0, obmat);
+		GPU_lamp_update(lamp, 0, 0, obmat);
 	}
 
 	m_rendertools->RemoveLight(&m_lightobj);
@@ -199,7 +199,7 @@
 			for(int j=0; j<4; j++, dobmat++)
 				obmat[i][j] = (float)*dobmat;
 
-		GPU_lamp_update(lamp, m_lightobj.m_layer, obmat);
+		GPU_lamp_update(lamp, m_lightobj.m_layer, 0, obmat);
 		GPU_lamp_update_colors(lamp, m_lightobj.m_red, m_lightobj.m_green, 
 			m_lightobj.m_blue, m_lightobj.m_energy);
 	}




More information about the Bf-blender-cvs mailing list