[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