[Bf-committers] Game Engine patch

Sebastian De La Torre rainfellow at sbcglobal.net
Wed May 4 03:19:38 CEST 2005


Forgot to attach the patch.
Now you can get it. ^^
-------------- next part --------------
? patch.txt
? user-def.mk
? dlltool/python23.dll.def
? obj/windows
Index: source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp,v
retrieving revision 1.15
diff -u -r1.15 KX_BlenderRenderTools.cpp
--- source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp	25 Mar 2005 10:33:35 -0000	1.15
+++ source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp	4 May 2005 00:53:09 -0000
@@ -288,8 +288,8 @@
 	glEnable(GL_LIGHTING);
 	
 	glEnable(GL_COLOR_MATERIAL);
-	glColorMaterial(GL_FRONT_AND_BACK,GL_DIFFUSE);
-	glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, false);
+	glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
+	glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, true);
 	if (bgl::QueryExtension(bgl::_GL_EXT_separate_specular_color) || bgl::QueryVersion(1, 2))
 		glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SEPARATE_SPECULAR_COLOR);
 
Index: source/gameengine/Converter/BlenderWorldInfo.cpp
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/gameengine/Converter/BlenderWorldInfo.cpp,v
retrieving revision 1.5
diff -u -r1.5 BlenderWorldInfo.cpp
--- source/gameengine/Converter/BlenderWorldInfo.cpp	22 Mar 2004 22:01:25 -0000	1.5
+++ source/gameengine/Converter/BlenderWorldInfo.cpp	4 May 2005 00:53:09 -0000
@@ -95,6 +95,10 @@
 		m_backgroundred = blenderworld->horr;
 		m_backgroundgreen = blenderworld->horg;
 		m_backgroundblue = blenderworld->horb;
+		
+		m_ambientred = blenderworld->ambr;
+		m_ambientgreen = blenderworld->ambg;
+		m_ambientblue = blenderworld->ambb;
 	}
 	else
 	{
@@ -134,14 +138,35 @@
 float BlenderWorldInfo::getBackColorGreen()
 {
 	return m_backgroundgreen;
-}  
+}
 
 
 
 float BlenderWorldInfo::getBackColorBlue()
 {
 	return m_backgroundblue;
-}  
+}
+
+
+
+float BlenderWorldInfo::getAmbientColorRed()
+{
+	return m_ambientred;
+}
+
+
+
+float BlenderWorldInfo::getAmbientColorGreen()
+{
+	return m_ambientgreen;
+}
+
+
+
+float BlenderWorldInfo::getAmbientColorBlue()
+{
+	return m_ambientblue;
+}
 
 
 
Index: source/gameengine/Converter/BlenderWorldInfo.h
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/gameengine/Converter/BlenderWorldInfo.h,v
retrieving revision 1.6
diff -u -r1.6 BlenderWorldInfo.h
--- source/gameengine/Converter/BlenderWorldInfo.h	22 Mar 2004 22:01:25 -0000	1.6
+++ source/gameengine/Converter/BlenderWorldInfo.h	4 May 2005 00:53:09 -0000
@@ -41,6 +41,10 @@
 	float			m_backgroundred;
 	float			m_backgroundgreen;
 	float			m_backgroundblue;
+	
+	float			m_ambientred;
+	float			m_ambientgreen;
+	float			m_ambientblue;
 
 	bool			m_hasmist;
 	float			m_miststart;
@@ -58,6 +62,10 @@
     float	getBackColorRed();
     float	getBackColorGreen();
     float	getBackColorBlue();
+    
+    float	getAmbientColorRed();
+    float	getAmbientColorGreen();
+    float	getAmbientColorBlue();
 
     float	getMistStart();
     float	getMistDistance();
Index: source/gameengine/Ketsji/KX_Camera.cpp
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/gameengine/Ketsji/KX_Camera.cpp,v
retrieving revision 1.15
diff -u -r1.15 KX_Camera.cpp
--- source/gameengine/Ketsji/KX_Camera.cpp	22 Jul 2004 00:26:34 -0000	1.15
+++ source/gameengine/Ketsji/KX_Camera.cpp	4 May 2005 00:53:10 -0000
@@ -339,6 +339,44 @@
 	return m_frustum_culling;
 }
 
+void KX_Camera::EnableViewport(bool viewport)
+{
+	m_camdata.m_viewport = viewport;
+}
+
+void KX_Camera::SetViewport(int left, int bottom, int right, int top)
+{
+	m_camdata.m_viewportleft = left;
+	m_camdata.m_viewportbottom = bottom;
+	m_camdata.m_viewportright = right;
+	m_camdata.m_viewporttop = top;
+}
+
+bool KX_Camera::GetViewport() const
+{
+	return m_camdata.m_viewport;
+}
+
+int KX_Camera::GetViewportLeft() const
+{
+	return m_camdata.m_viewportleft;
+}
+
+int KX_Camera::GetViewportBottom() const
+{
+	return m_camdata.m_viewportbottom;
+}
+
+int KX_Camera::GetViewportRight() const
+{
+	return m_camdata.m_viewportright;
+}
+
+int KX_Camera::GetViewportTop() const
+{
+	return m_camdata.m_viewporttop;
+}
+
 //----------------------------------------------------------------------------
 //Python
 
@@ -351,6 +389,8 @@
 	KX_PYMETHODTABLE(KX_Camera, getWorldToCamera),
 	KX_PYMETHODTABLE(KX_Camera, getProjectionMatrix),
 	KX_PYMETHODTABLE(KX_Camera, setProjectionMatrix),
+	KX_PYMETHODTABLE(KX_Camera, enableViewport),
+	KX_PYMETHODTABLE(KX_Camera, setViewport),
 	
 	{NULL,NULL} //Sentinel
 };
@@ -690,4 +730,33 @@
 
 	PyErr_SetString(PyExc_TypeError, "setProjectionMatrix: Expected 4x4 list as matrix argument.");
 	return NULL;
+}
+
+KX_PYMETHODDEF_DOC(KX_Camera, enableViewport,
+"enableViewport(viewport)\n"
+"Sets this camera's viewport status\n"
+)
+{
+	int viewport;
+	if (PyArg_ParseTuple(args,"i",&viewport))
+	{
+		if(viewport)
+			EnableViewport(true);
+		else
+			EnableViewport(false);
+	}
+	Py_Return;
+}
+
+KX_PYMETHODDEF_DOC(KX_Camera, setViewport,
+"setViewport(left, bottom, right, top)\n"
+"Sets this camera's viewport\n"
+)
+{
+	int left, bottom, right, top;
+	if (PyArg_ParseTuple(args,"iiii",&left, &bottom, &right, &top))
+	{
+		SetViewport(left, bottom, right, top);
+	}
+	Py_Return;
 }
Index: source/gameengine/Ketsji/KX_Camera.h
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/gameengine/Ketsji/KX_Camera.h,v
retrieving revision 1.10
diff -u -r1.10 KX_Camera.h
--- source/gameengine/Ketsji/KX_Camera.h	22 Jul 2004 00:26:34 -0000	1.10
+++ source/gameengine/Ketsji/KX_Camera.h	4 May 2005 00:53:11 -0000
@@ -203,6 +203,41 @@
 	 * Gets this camera's culling status.
 	 */
 	bool GetFrustumCulling() const;
+	
+	/**
+	 * Sets this camera's viewport status.
+	 */
+	void EnableViewport(bool viewport);
+	
+	/**
+	 * Sets this camera's viewport.
+	 */
+	void SetViewport(int left, int bottom, int right, int top);
+	
+	/**
+	 * Gets this camera's viewport status.
+	 */
+	bool GetViewport() const;
+	
+	/**
+	 * Gets this camera's viewport left.
+	 */
+	int GetViewportLeft() const;
+	
+	/**
+	 * Gets this camera's viewport bottom.
+	 */
+	int GetViewportBottom() const;
+	
+	/**
+	 * Gets this camera's viewport right.
+	 */
+	int GetViewportRight() const;
+	
+	/**
+	 * Gets this camera's viewport top.
+	 */
+	int GetViewportTop() const;
 
 	KX_PYMETHOD_DOC(KX_Camera, sphereInsideFrustum);
 	KX_PYMETHOD_DOC(KX_Camera, boxInsideFrustum);
@@ -212,6 +247,9 @@
 	KX_PYMETHOD_DOC(KX_Camera, getWorldToCamera);
 	KX_PYMETHOD_DOC(KX_Camera, getProjectionMatrix);
 	KX_PYMETHOD_DOC(KX_Camera, setProjectionMatrix);
+	
+	KX_PYMETHOD_DOC(KX_Camera, enableViewport);
+	KX_PYMETHOD_DOC(KX_Camera, setViewport);
 	
 	virtual PyObject* _getattr(const STR_String& attr); /* lens, near, far, projection_matrix */
 	virtual int       _setattr(const STR_String& attr, PyObject *pyvalue);
Index: source/gameengine/Ketsji/KX_KetsjiEngine.cpp
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/gameengine/Ketsji/KX_KetsjiEngine.cpp,v
retrieving revision 1.16
diff -u -r1.16 KX_KetsjiEngine.cpp
--- source/gameengine/Ketsji/KX_KetsjiEngine.cpp	25 Mar 2005 10:33:37 -0000	1.16
+++ source/gameengine/Ketsji/KX_KetsjiEngine.cpp	4 May 2005 00:53:12 -0000
@@ -509,20 +509,48 @@
 	// for each scene, call the proceed functions
 	{
 		KX_Scene* scene = *sceneit;
+		KX_Camera* cam = scene->GetActiveCamera();
 
 		// pass the scene's worldsettings to the rasterizer
 		SetWorldSettings(scene->GetWorldInfo());
 		
-		if (scene->IsClearingZBuffer())
-			m_rasterizer->ClearDepthBuffer();
-
-		m_rendertools->SetAuxilaryClientInfo(scene);
-
-		//Initialize scene viewport.
-		SetupRenderFrame(scene);
-
-		// do the rendering
-		RenderFrame(scene);
+		// Avoid drawing the scene with the active camera twice when it's viewport is enabled
+		if(!cam->GetViewport())
+		{
+			if (scene->IsClearingZBuffer())
+				m_rasterizer->ClearDepthBuffer();
+	
+			m_rendertools->SetAuxilaryClientInfo(scene);
+	
+			//Initialize scene viewport.
+			SetupRenderFrame(scene, cam);
+	
+			// do the rendering
+			RenderFrame(scene, cam);
+		}
+		
+		set<class KX_Camera*>* cameras = scene->GetCameras();
+		
+		// Draw the scene once for each camera with an enabled viewport
+		set<KX_Camera*>::iterator it = cameras->begin();
+		while(it != cameras->end())
+		{
+			if((*it)->GetViewport())
+			{
+				if (scene->IsClearingZBuffer())
+					m_rasterizer->ClearDepthBuffer();
+		
+				m_rendertools->SetAuxilaryClientInfo(scene);
+		
+				//Initialize scene viewport.
+				SetupRenderFrame(scene, (*it));
+		
+				// do the rendering
+				RenderFrame(scene, (*it));
+			}
+			
+			it++;
+		}
 	}
 
 	// only one place that checks for stereo
@@ -538,6 +566,7 @@
 		// for each scene, call the proceed functions
 		{
 			KX_Scene* scene = *sceneit;
+			KX_Camera* cam = scene->GetActiveCamera();
 
 			// pass the scene's worldsettings to the rasterizer
 			SetWorldSettings(scene->GetWorldInfo());
@@ -549,10 +578,10 @@
 			m_rendertools->SetAuxilaryClientInfo(scene);
 
 			//Initialize scene viewport.
-			SetupRenderFrame(scene);
+			SetupRenderFrame(scene, cam);
 
 			// do the rendering
-			RenderFrame(scene);
+			RenderFrame(scene, cam);
 		}
 	} // if(m_rasterizer->Stereo())
 
@@ -641,7 +670,12 @@
 	if (wi->hasWorld())
 	{
 		if (m_drawingmode == RAS_IRasterizer::KX_TEXTURED)
-		{	
+		{
+			m_rasterizer->SetAmbientColor(
+				wi->getAmbientColorRed(),
+				wi->getAmbientColorGreen(),
+				wi->getAmbientColorBlue());
+			
 			if (wi->hasMist())
 			{
 				m_rasterizer->SetFog(
@@ -703,7 +737,7 @@
 }
 
 	
-void KX_KetsjiEngine::SetupRenderFrame(KX_Scene *scene)
+void KX_KetsjiEngine::SetupRenderFrame(KX_Scene *scene, KX_Camera* cam)
 {
 	// In this function we make sure the rasterizer settings are upto
 	// date. We compute the viewport so that logic
@@ -713,8 +747,15 @@
 	// so that we are using the latest camera position.
 
 	RAS_Rect viewport;
-
-	if (
+	
+	if(cam->GetViewport())
+	{
+		viewport.SetLeft(cam->GetViewportLeft()); 
+		viewport.SetBottom(cam->GetViewportBottom());
+		viewport.SetRight(cam->GetViewportRight());
+		viewport.SetTop(cam->GetViewportTop());
+	}
+	else if (
 		m_overrideCam || 
 		(scene->GetName() != m_overrideSceneName) || 
 		m_overrideCamUseOrtho
@@ -724,7 +765,8 @@
 			m_canvas->GetDisplayArea(),
 			viewport
 		);
-	} else {
+	}
+	else {
 		viewport.SetLeft(0); 
 		viewport.SetBottom(0);
 		viewport.SetRight(int(m_canvas->GetWidth()));
@@ -746,21 +788,22 @@
 
 	
 // update graphics
-void KX_KetsjiEngine::RenderFrame(KX_Scene* scene)
+void KX_KetsjiEngine::RenderFrame(KX_Scene* scene, KX_Camera* cam)
 {
 	float left, right, bottom, top, nearfrust, farfrust;
 	const float ortho = 100.0;
-	KX_Camera* cam = scene->GetActiveCamera();
 	
 	if (!cam)
 		return;
-
+	
+	m_rasterizer->SetAmbient();
+	
 	m_rasterizer->DisplayFog();
 
 	if (m_overrideCam && (scene->GetName() == m_overrideSceneName) && m_overrideCamUseOrtho) {
 		MT_CmMatrix4x4 projmat = m_overrideCamProjMat;
 		m_rasterizer->SetProjectionMatrix(projmat);
-	} else if (cam->hasValidProjectionMatrix())
+	} else if (cam->hasValidProjectionMatrix() and !cam->GetViewport())
 	{
 		m_rasterizer->SetProjectionMatrix(cam->GetProjectionMatrix());
 	} else
Index: source/gameengine/Ketsji/KX_KetsjiEngine.h
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/gameengine/Ketsji/KX_KetsjiEngine.h,v
retrieving revision 1.9
diff -u -r1.9 KX_KetsjiEngine.h
--- source/gameengine/Ketsji/KX_KetsjiEngine.h	25 Mar 2005 10:33:37 -0000	1.9
+++ source/gameengine/Ketsji/KX_KetsjiEngine.h	4 May 2005 00:53:12 -0000
@@ -166,8 +166,8 @@
 	/** Blue component of framing bar color. */
 	float					m_overrideFrameColorB;
 
-	void					SetupRenderFrame(KX_Scene *scene);
-	void					RenderFrame(KX_Scene* scene);
+	void					SetupRenderFrame(KX_Scene *scene, KX_Camera* cam);
+	void					RenderFrame(KX_Scene* scene, KX_Camera* cam);
 	void					RenderDebugProperties();
 	void					SetBackGround(KX_WorldInfo* worldinfo);
 	void					SetWorldSettings(KX_WorldInfo* worldinfo);
Index: source/gameengine/Ketsji/KX_PythonInit.cpp
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/gameengine/Ketsji/KX_PythonInit.cpp,v
retrieving revision 1.13
diff -u -r1.13 KX_PythonInit.cpp
--- source/gameengine/Ketsji/KX_PythonInit.cpp	25 Mar 2005 10:33:37 -0000	1.13
+++ source/gameengine/Ketsji/KX_PythonInit.cpp	4 May 2005 00:53:13 -0000
@@ -410,6 +410,26 @@
 
 
 
+static PyObject* gPySetAmbientColor(PyObject*, 
+										 PyObject* args, 
+										 PyObject*)
+{
+	
+	MT_Vector3 vec = MT_Vector3(0., 0., 0.);
+	if (PyVecArgTo(args, vec))
+	{
+		if (gp_Rasterizer)
+		{
+			gp_Rasterizer->SetAmbientColor(vec[0], vec[1], vec[2]);
+		}
+		Py_Return;
+	}
+	
+	return NULL;
+}
+
+
+
 static PyObject* gPySetMistColor(PyObject*, 
 										 PyObject* args, 
 										 PyObject*)
@@ -504,6 +524,7 @@
    {"setMousePosition",(PyCFunction) gPySetMousePosition,
    METH_VARARGS, gPySetMousePosition__doc__.Ptr()},
   {"setBackgroundColor",(PyCFunction)gPySetBackgroundColor,METH_VARARGS,"set Background Color (rgb)"},
+  {"setAmbientColor",(PyCFunction)gPySetAmbientColor,METH_VARARGS,"set Ambient Color (rgb)"},
   {"setMistColor",(PyCFunction)gPySetMistColor,METH_VARARGS,"set Mist Color (rgb)"},
   {"setMistStart",(PyCFunction)gPySetMistStart,METH_VARARGS,"set Mist Start(rgb)"},
   {"setMistEnd",(PyCFunction)gPySetMistEnd,METH_VARARGS,"set Mist End(rgb)"},
Index: source/gameengine/Ketsji/KX_Scene.cpp
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/gameengine/Ketsji/KX_Scene.cpp,v
retrieving revision 1.18
diff -u -r1.18 KX_Scene.cpp
--- source/gameengine/Ketsji/KX_Scene.cpp	18 Apr 2005 11:44:21 -0000	1.18
+++ source/gameengine/Ketsji/KX_Scene.cpp	4 May 2005 00:53:14 -0000
@@ -258,6 +258,12 @@
 
 
 
+set<class KX_Camera*>* KX_Scene::GetCameras()
+{
+	return &m_cameras;
+}
+
+
 
 void KX_Scene::SetFramingType(RAS_FrameSettings & frame_settings)
 {
Index: source/gameengine/Ketsji/KX_Scene.h
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/gameengine/Ketsji/KX_Scene.h,v
retrieving revision 1.13
diff -u -r1.13 KX_Scene.h
--- source/gameengine/Ketsji/KX_Scene.h	25 Mar 2005 10:33:37 -0000	1.13
+++ source/gameengine/Ketsji/KX_Scene.h	4 May 2005 00:53:15 -0000
@@ -318,6 +318,10 @@
 		SCA_TimeEventManager*	
 	GetTimeEventManager(
 	);
+	
+		set<class KX_Camera*>*
+	GetCameras(
+	);
 
 
 	/** Find a camera in the scene by pointer. */
Index: source/gameengine/Ketsji/KX_WorldInfo.h
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/gameengine/Ketsji/KX_WorldInfo.h,v
retrieving revision 1.6
diff -u -r1.6 KX_WorldInfo.h
--- source/gameengine/Ketsji/KX_WorldInfo.h	22 Mar 2004 22:01:53 -0000	1.6
+++ source/gameengine/Ketsji/KX_WorldInfo.h	4 May 2005 00:53:15 -0000
@@ -47,6 +47,9 @@
 	virtual float	getBackColorRed()=0;
 	virtual float	getBackColorGreen()=0;
 	virtual float	getBackColorBlue()=0;
+	virtual float	getAmbientColorRed()=0;
+	virtual float	getAmbientColorGreen()=0;
+	virtual float	getAmbientColorBlue()=0;
 	virtual float	getMistStart()=0;
 	virtual float	getMistDistance()=0;
 	virtual float	getMistColorRed()=0;
Index: source/gameengine/Rasterizer/RAS_BucketManager.cpp
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/gameengine/Rasterizer/RAS_BucketManager.cpp,v
retrieving revision 1.8
diff -u -r1.8 RAS_BucketManager.cpp
--- source/gameengine/Rasterizer/RAS_BucketManager.cpp	16 Jan 2005 06:02:05 -0000	1.8
+++ source/gameengine/Rasterizer/RAS_BucketManager.cpp	4 May 2005 00:53:16 -0000
@@ -141,8 +141,16 @@
 	}
 	
 	for (bucket = m_MaterialBuckets.begin(); bucket != m_MaterialBuckets.end(); ++bucket)
+	{
+		if((*bucket)->GetPolyMaterial()->IsZSort())
+			rasty->SetAlphaTest(true);
+		else
+			rasty->SetAlphaTest(false);
+		
 		(*bucket)->Render(cameratrans,rasty,rendertools);
+	}
 	
+	rasty->SetAlphaTest(false);
 	RenderAlphaBuckets(cameratrans, rasty, rendertools);	
 	
 	RAS_MaterialBucket::EndFrame();
Index: source/gameengine/Rasterizer/RAS_CameraData.h
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/gameengine/Rasterizer/RAS_CameraData.h,v
retrieving revision 1.7
diff -u -r1.7 RAS_CameraData.h
--- source/gameengine/Rasterizer/RAS_CameraData.h	11 Apr 2004 02:50:02 -0000	1.7
+++ source/gameengine/Rasterizer/RAS_CameraData.h	4 May 2005 00:53:16 -0000
@@ -38,12 +38,23 @@
 	float m_clipstart;
 	float m_clipend;
 	bool m_perspective;
+	bool m_viewport;
+	int m_viewportleft;
+	int m_viewportbottom;
+	int m_viewportright;
+	int m_viewporttop;
 	
-	RAS_CameraData(float lens = 35., float clipstart = 0.1, float clipend = 100., bool perspective = true) :
+	RAS_CameraData(float lens = 35., float clipstart = 0.1, float clipend = 100., bool perspective = true,
+		bool viewport = false, int viewportleft = 0, int viewportbottom = 0, int viewportright = 0, int viewporttop = 0) :
 		m_lens(lens),
 		m_clipstart(clipstart),
 		m_clipend(clipend),
-		m_perspective(perspective)
+		m_perspective(perspective),
+		m_viewport(viewport),
+		m_viewportleft(viewportleft),
+		m_viewportbottom(viewportbottom),
+		m_viewportright(viewportright),
+		m_viewporttop(viewporttop)
 	{
 	}
 };
Index: source/gameengine/Rasterizer/RAS_IRasterizer.h
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/gameengine/Rasterizer/RAS_IRasterizer.h,v
retrieving revision 1.13
diff -u -r1.13 RAS_IRasterizer.h
--- source/gameengine/Rasterizer/RAS_IRasterizer.h	16 Jan 2005 06:02:05 -0000	1.13
+++ source/gameengine/Rasterizer/RAS_IRasterizer.h	4 May 2005 00:53:16 -0000
@@ -268,6 +268,9 @@
 								 float blue,
 								 float alpha)=0;
 	
+	virtual void	SetAmbientColor(float red, float green, float blue)=0;
+	virtual void	SetAmbient()=0;
+	
 	/**
 	 * @param drawingmode = KX_BOUNDINGBOX, KX_WIREFRAME, KX_SOLID, KX_SHADED or KX_TEXTURED.
 	 */
@@ -281,8 +284,12 @@
 	virtual void	EnableTextures(bool enable)=0;
 	/**
 	 * Sets face culling
-	 */	
+	 */
 	virtual void	SetCullFace(bool enable)=0;
+	/**
+	 * Sets alpha testing
+	 */
+	virtual void	SetAlphaTest(bool enable)=0;
 	/**
 	 * Sets wireframe mode.
 	 */
Index: source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp,v
retrieving revision 1.16
diff -u -r1.16 RAS_OpenGLRasterizer.cpp
--- source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp	16 Jan 2005 06:02:06 -0000	1.16
+++ source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp	4 May 2005 00:53:17 -0000
@@ -177,6 +177,10 @@
 	m_blueback = 0.4375;
 	m_alphaback = 0.0;
 	
+	m_ambr = 0.0f;
+	m_ambg = 0.0f;
+	m_ambb = 0.0f;
+	
 	glClearColor(m_redback,m_greenback,m_blueback,m_alphaback);
 	glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
 	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -201,6 +205,23 @@
 
 
 
+void RAS_OpenGLRasterizer::SetAmbientColor(float red, float green, float blue)
+{
+	m_ambr = red;
+	m_ambg = green;
+	m_ambb = blue;
+}
+
+
+
+void RAS_OpenGLRasterizer::SetAmbient()
+{
+	float ambient[] = { m_ambr, m_ambg, m_ambb, 1.0f };
+	glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient);
+}
+
+
+
 void RAS_OpenGLRasterizer::SetFogColor(float r,
 									   float g,
 									   float b)
@@ -1293,6 +1314,20 @@
 	else
 		glDisable(GL_CULL_FACE);
 }
+
+
+
+void RAS_OpenGLRasterizer::SetAlphaTest(bool enable)
+{
+	if (enable)
+	{
+		glEnable(GL_ALPHA_TEST);
+		glAlphaFunc(GL_GREATER, 0.6f);
+	}
+	else glDisable(GL_ALPHA_TEST);
+}
+
+
 
 void RAS_OpenGLRasterizer::SetLines(bool enable)
 {
Index: source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h,v
retrieving revision 1.12
diff -u -r1.12 RAS_OpenGLRasterizer.h
--- source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h	16 Jan 2005 06:02:06 -0000	1.12
+++ source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h	4 May 2005 00:53:17 -0000
@@ -64,6 +64,10 @@
 	float			m_greenback;
 	float			m_blueback;
 	float			m_alphaback;
+	
+	float			m_ambr;
+	float			m_ambg;
+	float			m_ambb;
 
 	double			m_time;
 	MT_CmMatrix4x4	m_viewmatrix;
@@ -193,11 +197,15 @@
 						float alpha
 					);
 	
+	virtual void	SetAmbientColor(float red, float green, float blue);
+	virtual void	SetAmbient();
+	
 	virtual void	SetDrawingMode(int drawingmode);
 	virtual int		GetDrawingMode();
 
 	virtual void	EnableTextures(bool enable);
 	virtual void	SetCullFace(bool enable);
+	virtual void	SetAlphaTest(bool enable);
 	virtual void	SetLines(bool enable);
 
 	virtual MT_Matrix4x4 GetFrustumMatrix(


More information about the Bf-committers mailing list