[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20182] trunk/blender/source: BGE #18732: Python Light options don't work with GLSL materials.

Benoit Bolsee benoit.bolsee at online.be
Wed May 13 08:42:15 CEST 2009


Revision: 20182
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20182
Author:   ben2610
Date:     2009-05-13 08:42:15 +0200 (Wed, 13 May 2009)

Log Message:
-----------
BGE #18732: Python Light options don't work with GLSL materials. Commited patch from dfelinto and moguri, thanks for the good work.

Modified Paths:
--------------
    trunk/blender/source/blender/gpu/GPU_material.h
    trunk/blender/source/blender/gpu/intern/gpu_material.c
    trunk/blender/source/blender/src/drawview.c
    trunk/blender/source/gameengine/Ketsji/KX_Light.cpp
    trunk/blender/source/gameengine/Ketsji/KX_Light.h

Modified: trunk/blender/source/blender/gpu/GPU_material.h
===================================================================
--- trunk/blender/source/blender/gpu/GPU_material.h	2009-05-13 02:01:04 UTC (rev 20181)
+++ trunk/blender/source/blender/gpu/GPU_material.h	2009-05-13 06:42:15 UTC (rev 20182)
@@ -159,6 +159,7 @@
 void GPU_lamp_shadow_buffer_unbind(GPULamp *lamp);
 
 void GPU_lamp_update(GPULamp *lamp, int lay, 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);
 
 #ifdef __cplusplus

Modified: trunk/blender/source/blender/gpu/intern/gpu_material.c
===================================================================
--- trunk/blender/source/blender/gpu/intern/gpu_material.c	2009-05-13 02:01:04 UTC (rev 20181)
+++ trunk/blender/source/blender/gpu/intern/gpu_material.c	2009-05-13 06:42:15 UTC (rev 20182)
@@ -1306,6 +1306,18 @@
 	Mat4Invert(lamp->imat, mat);
 }
 
+void GPU_lamp_update_colors(GPULamp *lamp, float r, float g, float b, float energy)
+{
+	lamp->la->energy = energy;
+	lamp->la->r = r;
+	lamp->la->g = g;
+	lamp->la->b = b;
+
+	lamp->col[0]= lamp->la->r*lamp->energy;
+	lamp->col[1]= lamp->la->g*lamp->energy;
+	lamp->col[2]= lamp->la->b*lamp->energy;
+}
+
 static void gpu_lamp_from_blender(Scene *scene, Object *ob, Object *par, Lamp *la, GPULamp *lamp)
 {
 	float temp, angle, pixsize, wsize;

Modified: trunk/blender/source/blender/src/drawview.c
===================================================================
--- trunk/blender/source/blender/src/drawview.c	2009-05-13 02:01:04 UTC (rev 20181)
+++ trunk/blender/source/blender/src/drawview.c	2009-05-13 06:42:15 UTC (rev 20182)
@@ -3152,12 +3152,14 @@
 static void gpu_render_lamp_update(View3D *v3d, Object *ob, Object *par, float obmat[][4], ListBase *shadows)
 {
 	GPULamp *lamp;
+	Lamp *la = (Lamp*)ob->data;
 	View3DShadow *shadow;
 
 	lamp = GPU_lamp_from_blender(G.scene, ob, par);
 
 	if(lamp) {
 		GPU_lamp_update(lamp, ob->lay, 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)) {
 			shadow= MEM_callocN(sizeof(View3DShadow), "View3DShadow");

Modified: trunk/blender/source/gameengine/Ketsji/KX_Light.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_Light.cpp	2009-05-13 02:01:04 UTC (rev 20181)
+++ trunk/blender/source/gameengine/Ketsji/KX_Light.cpp	2009-05-13 06:42:15 UTC (rev 20182)
@@ -61,6 +61,11 @@
 	m_rendertools->AddLight(&m_lightobj);
 	m_glsl = glsl;
 	m_blenderscene = ((KX_Scene*)sgReplicationInfo)->GetBlenderScene();
+
+	m_initialvalues[0] = lightobj.m_red;
+	m_initialvalues[1] = lightobj.m_green;
+	m_initialvalues[2] = lightobj.m_blue;
+	m_initialvalues[3] = lightobj.m_energy;
 };
 
 
@@ -71,6 +76,8 @@
 	if((lamp = GetGPULamp())) {
 		float obmat[4][4] = {{0}};
 		GPU_lamp_update(lamp, 0, obmat);
+		GPU_lamp_update_colors(lamp, m_initialvalues[0], m_initialvalues[1],
+		m_initialvalues[2], m_initialvalues[3]);
 	}
 
 	m_rendertools->RemoveLight(&m_lightobj);
@@ -114,6 +121,8 @@
 				obmat[i][j] = (float)*dobmat;
 
 		GPU_lamp_update(lamp, m_lightobj.m_layer, obmat);
+		GPU_lamp_update_colors(lamp, m_lightobj.m_red, m_lightobj.m_green, 
+			m_lightobj.m_blue, m_lightobj.m_energy);
 	}
 }
 

Modified: trunk/blender/source/gameengine/Ketsji/KX_Light.h
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_Light.h	2009-05-13 02:01:04 UTC (rev 20181)
+++ trunk/blender/source/gameengine/Ketsji/KX_Light.h	2009-05-13 06:42:15 UTC (rev 20182)
@@ -44,6 +44,7 @@
 	Py_Header;
 protected:
 	RAS_LightObject		m_lightobj;
+	float				m_initialvalues [4];
 	class RAS_IRenderTools*	m_rendertools;	//needed for registering and replication of lightobj
 	bool				m_glsl;
 	Scene*				m_blenderscene;





More information about the Bf-blender-cvs mailing list