[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53541] branches/ge_harmony/source/ gameengine: Making sure the prepass and light pass only run when they are actually being used .
Daniel Stokes
kupomail at gmail.com
Fri Jan 4 02:05:45 CET 2013
Revision: 53541
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53541
Author: kupoman
Date: 2013-01-04 01:05:41 +0000 (Fri, 04 Jan 2013)
Log Message:
-----------
Making sure the prepass and light pass only run when they are actually being used.
Modified Paths:
--------------
branches/ge_harmony/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
branches/ge_harmony/source/gameengine/Rasterizer/RAS_IRasterizer.h
branches/ge_harmony/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
branches/ge_harmony/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h
Modified: branches/ge_harmony/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
===================================================================
--- branches/ge_harmony/source/gameengine/Ketsji/KX_KetsjiEngine.cpp 2013-01-04 00:53:06 UTC (rev 53540)
+++ branches/ge_harmony/source/gameengine/Ketsji/KX_KetsjiEngine.cpp 2013-01-04 01:05:41 UTC (rev 53541)
@@ -1308,18 +1308,18 @@
#endif
// prepass
- //m_rasterizer->SetDepthMask(RAS_IRasterizer::KX_DEPTHMASK_ENABLED);
- m_rasterizer->BeginPrePass();
- scene->RenderBuckets(camtrans, m_rasterizer, m_rendertools);
- m_rasterizer->EndPrePass();
- //m_rasterizer->SetDepthMask(RAS_IRasterizer::KX_DEPTHMASK_DISABLED);
+ if (m_rasterizer->BeginPrePass()) {
+ scene->RenderBuckets(camtrans, m_rasterizer, m_rendertools);
+ m_rasterizer->EndPrePass();
+ }
// light pass
- m_rasterizer->BeginLightPass();
- CListValue *lightlist = scene->GetLightList();
- for (int i=0; i<lightlist->GetCount(); i++)
- m_rasterizer->RenderLight(((KX_LightObject*)lightlist->GetValue(i))->GetLightData());
- m_rasterizer->EndLightPass();
+ if (m_rasterizer->BeginLightPass()) {
+ CListValue *lightlist = scene->GetLightList();
+ for (int i=0; i<lightlist->GetCount(); i++)
+ m_rasterizer->RenderLight(((KX_LightObject*)lightlist->GetValue(i))->GetLightData());
+ m_rasterizer->EndLightPass();
+ }
scene->RenderBuckets(camtrans, m_rasterizer, m_rendertools);
Modified: branches/ge_harmony/source/gameengine/Rasterizer/RAS_IRasterizer.h
===================================================================
--- branches/ge_harmony/source/gameengine/Rasterizer/RAS_IRasterizer.h 2013-01-04 00:53:06 UTC (rev 53540)
+++ branches/ge_harmony/source/gameengine/Rasterizer/RAS_IRasterizer.h 2013-01-04 01:05:41 UTC (rev 53541)
@@ -430,12 +430,12 @@
virtual class RAS_IFilterManager* CreateFilterManager()=0;
virtual void SetLightShader(struct Shader** shader, int count)=0;
- virtual void BeginLightPass()=0;
+ virtual int BeginLightPass()=0;
virtual void RenderLight(RAS_LightObject *light)=0;
virtual void EndLightPass()=0;
virtual void SetPrePassShader(struct Shader** shader, int count)=0;
- virtual void BeginPrePass()=0;
+ virtual int BeginPrePass()=0;
virtual void EndPrePass()=0;
virtual void SetPrepassCount(int count)=0;
Modified: branches/ge_harmony/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
===================================================================
--- branches/ge_harmony/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp 2013-01-04 00:53:06 UTC (rev 53540)
+++ branches/ge_harmony/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp 2013-01-04 01:05:41 UTC (rev 53541)
@@ -1335,9 +1335,9 @@
set_shader_internal(&m_prepass_shader, m_prepass_shader_default, shaders, count);
}
-void RAS_OpenGLRasterizer::BeginLightPass()
+int RAS_OpenGLRasterizer::BeginLightPass()
{
- if (!m_light_shader) return;
+ if (!m_light_shader) return 0;
int bind;
glPushAttrib(GL_COLOR_BUFFER_BIT | GL_ENABLE_BIT);
@@ -1382,6 +1382,8 @@
float bounds[2] = {(float)m_width, (float)m_height};
bind = GPU_shader_get_uniform(m_light_shader, "bounds");
GPU_shader_uniform_vector(m_light_shader, bind, 2, 1, bounds);
+
+ return 1;
}
void RAS_OpenGLRasterizer::RenderLight(RAS_LightObject *light)
@@ -1468,9 +1470,9 @@
glPopAttrib();
}
-void RAS_OpenGLRasterizer::BeginPrePass()
+int RAS_OpenGLRasterizer::BeginPrePass()
{
- if (!m_prepass_shader) return;
+ if (!m_prepass_shader) return 0;
glPushAttrib(GL_VIEWPORT_BIT | GL_COLOR_BUFFER_BIT);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, m_fbo[1]);
@@ -1483,6 +1485,8 @@
m_saved_drawingmode = m_drawingmode;
SetDrawingMode(KX_OVERRIDE);
+
+ return 1;
}
void RAS_OpenGLRasterizer::EndPrePass()
Modified: branches/ge_harmony/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h
===================================================================
--- branches/ge_harmony/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h 2013-01-04 00:53:06 UTC (rev 53540)
+++ branches/ge_harmony/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h 2013-01-04 01:05:41 UTC (rev 53541)
@@ -359,13 +359,13 @@
/* Light Pass */
virtual void SetLightShader(struct Shader** shader, int count);
- virtual void BeginLightPass();
+ virtual int BeginLightPass();
virtual void RenderLight(RAS_LightObject *light);
virtual void EndLightPass();
/* Pre Pass */
virtual void SetPrePassShader(struct Shader** shader, int count);
- virtual void BeginPrePass();
+ virtual int BeginPrePass();
virtual void EndPrePass();
int GetFBOWidth() { return m_width; }
More information about the Bf-blender-cvs
mailing list