[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