From 9d3157eed000e7c543d04f5ad3efc5990675903b Mon Sep 17 00:00:00 2001 From: Mitchell Stokes Date: Sat, 29 May 2010 21:22:24 +0000 Subject: Reversing the last merge because I botched it. --- .../gameengine/Rasterizer/RAS_2DFilterManager.cpp | 129 ++++++++++++++++++++- source/gameengine/Rasterizer/RAS_2DFilterManager.h | 8 +- .../RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp | 2 + 3 files changed, 131 insertions(+), 8 deletions(-) (limited to 'source/gameengine/Rasterizer') diff --git a/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp b/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp index 4527850a8e9..c0e08dba992 100644 --- a/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp +++ b/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp @@ -194,6 +194,15 @@ void RAS_2DFilterManager::AnalyseShader(int passindex, vector& propN { texflag[passindex] |= 0x2; } + if(glGetUniformLocationARB(m_filters[passindex], "bgl_QuarteredRenderTexture") != -1) + { + texflag[passindex] |= 0x4; + } + if(glGetUniformLocationARB(m_filters[passindex], "bgl_QuartedDepthTexture") != -1) + { + if(GLEW_ARB_depth_texture) + texflag[passindex] |= 0x8; + } if(m_gameObjects[passindex]) { @@ -241,6 +250,29 @@ void RAS_2DFilterManager::StartShaderProgram(int passindex) glUniform1iARB(uniformLoc, 2); } } + + /* Send the quartered render texture to glsl program if it needs */ + if(texflag[passindex] & 0x4){ + uniformLoc = glGetUniformLocationARB(m_filters[passindex], "bgl_QuarteredRenderTexture"); + glActiveTextureARB(GL_TEXTURE3); + glBindTexture(GL_TEXTURE_2D, texname[3]); + + if (uniformLoc != -1) + { + glUniform1iARB(uniformLoc, 3); + } + } + + if(texflag[passindex] & 0x5){ + uniformLoc = glGetUniformLocationARB(m_filters[passindex], "bgl_QuarteredDepthTexture"); + glActiveTextureARB(GL_TEXTURE4); + glBindTexture(GL_TEXTURE_2D, texname[4]); + + if (uniformLoc != -1) + { + glUniform1iARB(uniformLoc, 4); + } + } uniformLoc = glGetUniformLocationARB(m_filters[passindex], "bgl_TextureCoordinateOffset"); if (uniformLoc != -1) @@ -277,15 +309,24 @@ void RAS_2DFilterManager::EndShaderProgram() void RAS_2DFilterManager::FreeTextures() { - if(texname[0]!=(unsigned int)-1) + // Update this when adding new textures! + for (int i=0; i<5; i++) + { + if(texname[i]!=(unsigned int)-1) + glDeleteTextures(1, (GLuint*)&texname[i]); + } + + if(fbo != (unsigned int)-1) + glDeleteFramebuffersEXT(1, &fbo); + /*if(texname[0]!=(unsigned int)-1) glDeleteTextures(1, (GLuint*)&texname[0]); if(texname[1]!=(unsigned int)-1) glDeleteTextures(1, (GLuint*)&texname[1]); if(texname[2]!=(unsigned int)-1) - glDeleteTextures(1, (GLuint*)&texname[2]); + glDeleteTextures(1, (GLuint*)&texname[2]);*/ } -void RAS_2DFilterManager::SetupTextures(bool depth, bool luminance) +void RAS_2DFilterManager::SetupTextures(bool depth, bool luminance, bool qrender, bool qdepth) { FreeTextures(); @@ -321,6 +362,25 @@ void RAS_2DFilterManager::SetupTextures(bool depth, bool luminance) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); } + + if(qrender){ + glGenTextures(1, (GLuint*)&texname[3]); + glBindTexture(GL_TEXTURE_2D, texname[3]); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, texturewidth/2, textureheight/2, 0, GL_RGBA8, + GL_UNSIGNED_BYTE, 0); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); + + glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + + glGenFramebuffersEXT(1, &fbo); + glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo); + glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, texname[3], 0); + glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); + } + } void RAS_2DFilterManager::UpdateOffsetMatrix(RAS_ICanvas* canvas) @@ -377,6 +437,8 @@ void RAS_2DFilterManager::RenderFilters(RAS_ICanvas* canvas) { bool need_depth=false; bool need_luminance=false; + bool need_qrender=false; + bool need_qdepth=false; int num_filters = 0; int passindex; @@ -392,7 +454,11 @@ void RAS_2DFilterManager::RenderFilters(RAS_ICanvas* canvas) need_depth = true; if(texflag[passindex] & 0x2) need_luminance = true; - if(need_depth && need_luminance) + if(texflag[passindex] & 0x4) + need_qrender = true; + if(texflag[passindex] & 0x8) + need_qdepth = true; + if(need_depth && need_luminance && need_qrender && need_qdepth) break; } } @@ -412,7 +478,7 @@ void RAS_2DFilterManager::RenderFilters(RAS_ICanvas* canvas) if(need_tex_update) { - SetupTextures(need_depth, need_luminance); + SetupTextures(need_depth, need_luminance, need_qrender, need_qdepth); need_tex_update = false; } @@ -428,6 +494,12 @@ void RAS_2DFilterManager::RenderFilters(RAS_ICanvas* canvas) glCopyTexImage2D(GL_TEXTURE_2D,0,GL_LUMINANCE16, 0, 0, texturewidth,textureheight, 0); } + if(need_qdepth){ + glActiveTextureARB(GL_TEXTURE4); + glBindTexture(GL_TEXTURE_2D, texname[4]); + glCopyTexImage2D(GL_TEXTURE_2D, 1, GL_DEPTH_COMPONENT, 0, 0, texturewidth, textureheight, 0); + } + glViewport(0,0, texturewidth, textureheight); glDisable(GL_DEPTH_TEST); @@ -448,6 +520,53 @@ void RAS_2DFilterManager::RenderFilters(RAS_ICanvas* canvas) glActiveTextureARB(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, texname[0]); glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 0, 0, texturewidth, textureheight, 0); + //glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, im_buff); + + if(need_qrender){ + //glActiveTextureARB(GL_TEXTURE3); + //glBindTexture(GL_TEXTURE_2D, texname[3]); + //glReadPixels(0, 0, texturewidth, textureheight, GL_RGB, GL_UNSIGNED_BYTE, im_buff); + //gluScaleImage(GL_RGB, texturewidth, textureheight, GL_UNSIGNED_BYTE, im_buff, + // texturewidth/2, textureheight/2, GL_UNSIGNED_BYTE, scaled_buff); + //glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, texturewidth, textureheight, GL_RGBA, GL_UNSIGNED_BYTE, im_buff); + glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo); + if(glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT) == GL_FRAMEBUFFER_COMPLETE_EXT) { + glPushAttrib(GL_VIEWPORT_BIT | GL_COLOR_BUFFER_BIT); + glViewport(0, 0, texturewidth/2, textureheight/2); + + /* glMatrixMode(GL_PROJECTION); + glPushMatrix(); + glLoadIdentity(); + gluOrtho2D(0, texturewidth/2, 0, textureheight/2); + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glLoadIdentity();*/ + glClearColor(0, 0, 0, 1); + + glClear(GL_COLOR_BUFFER_BIT); + /*glBindTexture(GL_TEXTURE_2D, texname[0]); + glBegin(GL_QUADS); + glColor4f(0.f, 1.f, 1.f, 1.f); + glTexCoord2f(1.f, 1.f); glVertex2f(1,1); + glTexCoord2f(0.f, 1.f); glVertex2f(-1,1); + glTexCoord2f(0.f, 0.f); glVertex2f(-1,-1); + glTexCoord2f(1.f, 0.f); glVertex2f(1,-1); + glEnd();*/ + + glFlush(); + //glPopMatrix(); + //glMatrixMode(GL_PROJECTION); + //glPopMatrix(); + + glPopAttrib(); + } else { + printf("Could not use the framebuffer\n"); + } + glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); + + } + + glClearColor(1, 0, 1, 1); glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_QUADS); diff --git a/source/gameengine/Rasterizer/RAS_2DFilterManager.h b/source/gameengine/Rasterizer/RAS_2DFilterManager.h index 7ff7cde7882..2519473520a 100644 --- a/source/gameengine/Rasterizer/RAS_2DFilterManager.h +++ b/source/gameengine/Rasterizer/RAS_2DFilterManager.h @@ -45,7 +45,7 @@ private: void EndShaderProgram(); void PrintShaderErrors(unsigned int shader, const char *task, const char *code); - void SetupTextures(bool depth, bool luminance); + void SetupTextures(bool depth, bool luminance, bool qrender, bool qdepth); void FreeTextures(); void UpdateOffsetMatrix(RAS_ICanvas* canvas); @@ -54,13 +54,15 @@ private: float canvascoord[4]; float textureoffsets[18]; float view[4]; - /* texname[0] contains render to texture, texname[1] contains depth texture, texname[2] contains luminance texture*/ - unsigned int texname[3]; + /* texname[0] contains render to texture, texname[1] contains depth texture, texname[2] contains luminance texture + * texname[3] contains quartered render to texture, texname[4] contains quartered depth texture*/ + unsigned int texname[5]; int texturewidth; int textureheight; int canvaswidth; int canvasheight; int numberoffilters; + unsigned int fbo; /* bit 0: enable/disable depth texture * bit 1: enable/disable luminance texture*/ short texflag[MAX_RENDER_PASS]; diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp index 122a738e4f3..ec5f4c4ac6d 100644 --- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp +++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp @@ -297,6 +297,7 @@ bool RAS_OpenGLRasterizer::BeginFrame(int drawingmode, double time) m_last_frontface = true; glShadeModel(GL_SMOOTH); + glEnable(GL_MULTISAMPLE_ARB); m_2DCanvas->BeginFrame(); @@ -382,6 +383,7 @@ void RAS_OpenGLRasterizer::EndFrame() FlushDebugLines(); glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); + glDisable(GL_MULTISAMPLE_ARB); m_2DCanvas->EndFrame(); } -- cgit v1.2.3 From c6bec43330be0874b4116d259bbaf9fb90ed0556 Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Sat, 29 May 2010 21:31:57 +0000 Subject: reverting previous commit from Mitchell. His commit went to the trunk instead of the branch :) svn merge -r 29067:29066 https://svn.blender.org/svnroot/bf-blender/trunk/blender --- .../gameengine/Rasterizer/RAS_2DFilterManager.cpp | 129 +-------------------- source/gameengine/Rasterizer/RAS_2DFilterManager.h | 8 +- .../RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp | 2 - 3 files changed, 8 insertions(+), 131 deletions(-) (limited to 'source/gameengine/Rasterizer') diff --git a/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp b/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp index c0e08dba992..4527850a8e9 100644 --- a/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp +++ b/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp @@ -194,15 +194,6 @@ void RAS_2DFilterManager::AnalyseShader(int passindex, vector& propN { texflag[passindex] |= 0x2; } - if(glGetUniformLocationARB(m_filters[passindex], "bgl_QuarteredRenderTexture") != -1) - { - texflag[passindex] |= 0x4; - } - if(glGetUniformLocationARB(m_filters[passindex], "bgl_QuartedDepthTexture") != -1) - { - if(GLEW_ARB_depth_texture) - texflag[passindex] |= 0x8; - } if(m_gameObjects[passindex]) { @@ -250,29 +241,6 @@ void RAS_2DFilterManager::StartShaderProgram(int passindex) glUniform1iARB(uniformLoc, 2); } } - - /* Send the quartered render texture to glsl program if it needs */ - if(texflag[passindex] & 0x4){ - uniformLoc = glGetUniformLocationARB(m_filters[passindex], "bgl_QuarteredRenderTexture"); - glActiveTextureARB(GL_TEXTURE3); - glBindTexture(GL_TEXTURE_2D, texname[3]); - - if (uniformLoc != -1) - { - glUniform1iARB(uniformLoc, 3); - } - } - - if(texflag[passindex] & 0x5){ - uniformLoc = glGetUniformLocationARB(m_filters[passindex], "bgl_QuarteredDepthTexture"); - glActiveTextureARB(GL_TEXTURE4); - glBindTexture(GL_TEXTURE_2D, texname[4]); - - if (uniformLoc != -1) - { - glUniform1iARB(uniformLoc, 4); - } - } uniformLoc = glGetUniformLocationARB(m_filters[passindex], "bgl_TextureCoordinateOffset"); if (uniformLoc != -1) @@ -309,24 +277,15 @@ void RAS_2DFilterManager::EndShaderProgram() void RAS_2DFilterManager::FreeTextures() { - // Update this when adding new textures! - for (int i=0; i<5; i++) - { - if(texname[i]!=(unsigned int)-1) - glDeleteTextures(1, (GLuint*)&texname[i]); - } - - if(fbo != (unsigned int)-1) - glDeleteFramebuffersEXT(1, &fbo); - /*if(texname[0]!=(unsigned int)-1) + if(texname[0]!=(unsigned int)-1) glDeleteTextures(1, (GLuint*)&texname[0]); if(texname[1]!=(unsigned int)-1) glDeleteTextures(1, (GLuint*)&texname[1]); if(texname[2]!=(unsigned int)-1) - glDeleteTextures(1, (GLuint*)&texname[2]);*/ + glDeleteTextures(1, (GLuint*)&texname[2]); } -void RAS_2DFilterManager::SetupTextures(bool depth, bool luminance, bool qrender, bool qdepth) +void RAS_2DFilterManager::SetupTextures(bool depth, bool luminance) { FreeTextures(); @@ -362,25 +321,6 @@ void RAS_2DFilterManager::SetupTextures(bool depth, bool luminance, bool qrender glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); } - - if(qrender){ - glGenTextures(1, (GLuint*)&texname[3]); - glBindTexture(GL_TEXTURE_2D, texname[3]); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, texturewidth/2, textureheight/2, 0, GL_RGBA8, - GL_UNSIGNED_BYTE, 0); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - - glGenFramebuffersEXT(1, &fbo); - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo); - glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, texname[3], 0); - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); - } - } void RAS_2DFilterManager::UpdateOffsetMatrix(RAS_ICanvas* canvas) @@ -437,8 +377,6 @@ void RAS_2DFilterManager::RenderFilters(RAS_ICanvas* canvas) { bool need_depth=false; bool need_luminance=false; - bool need_qrender=false; - bool need_qdepth=false; int num_filters = 0; int passindex; @@ -454,11 +392,7 @@ void RAS_2DFilterManager::RenderFilters(RAS_ICanvas* canvas) need_depth = true; if(texflag[passindex] & 0x2) need_luminance = true; - if(texflag[passindex] & 0x4) - need_qrender = true; - if(texflag[passindex] & 0x8) - need_qdepth = true; - if(need_depth && need_luminance && need_qrender && need_qdepth) + if(need_depth && need_luminance) break; } } @@ -478,7 +412,7 @@ void RAS_2DFilterManager::RenderFilters(RAS_ICanvas* canvas) if(need_tex_update) { - SetupTextures(need_depth, need_luminance, need_qrender, need_qdepth); + SetupTextures(need_depth, need_luminance); need_tex_update = false; } @@ -494,12 +428,6 @@ void RAS_2DFilterManager::RenderFilters(RAS_ICanvas* canvas) glCopyTexImage2D(GL_TEXTURE_2D,0,GL_LUMINANCE16, 0, 0, texturewidth,textureheight, 0); } - if(need_qdepth){ - glActiveTextureARB(GL_TEXTURE4); - glBindTexture(GL_TEXTURE_2D, texname[4]); - glCopyTexImage2D(GL_TEXTURE_2D, 1, GL_DEPTH_COMPONENT, 0, 0, texturewidth, textureheight, 0); - } - glViewport(0,0, texturewidth, textureheight); glDisable(GL_DEPTH_TEST); @@ -520,53 +448,6 @@ void RAS_2DFilterManager::RenderFilters(RAS_ICanvas* canvas) glActiveTextureARB(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, texname[0]); glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 0, 0, texturewidth, textureheight, 0); - //glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, im_buff); - - if(need_qrender){ - //glActiveTextureARB(GL_TEXTURE3); - //glBindTexture(GL_TEXTURE_2D, texname[3]); - //glReadPixels(0, 0, texturewidth, textureheight, GL_RGB, GL_UNSIGNED_BYTE, im_buff); - //gluScaleImage(GL_RGB, texturewidth, textureheight, GL_UNSIGNED_BYTE, im_buff, - // texturewidth/2, textureheight/2, GL_UNSIGNED_BYTE, scaled_buff); - //glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, texturewidth, textureheight, GL_RGBA, GL_UNSIGNED_BYTE, im_buff); - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo); - if(glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT) == GL_FRAMEBUFFER_COMPLETE_EXT) { - glPushAttrib(GL_VIEWPORT_BIT | GL_COLOR_BUFFER_BIT); - glViewport(0, 0, texturewidth/2, textureheight/2); - - /* glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - gluOrtho2D(0, texturewidth/2, 0, textureheight/2); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity();*/ - glClearColor(0, 0, 0, 1); - - glClear(GL_COLOR_BUFFER_BIT); - /*glBindTexture(GL_TEXTURE_2D, texname[0]); - glBegin(GL_QUADS); - glColor4f(0.f, 1.f, 1.f, 1.f); - glTexCoord2f(1.f, 1.f); glVertex2f(1,1); - glTexCoord2f(0.f, 1.f); glVertex2f(-1,1); - glTexCoord2f(0.f, 0.f); glVertex2f(-1,-1); - glTexCoord2f(1.f, 0.f); glVertex2f(1,-1); - glEnd();*/ - - glFlush(); - //glPopMatrix(); - //glMatrixMode(GL_PROJECTION); - //glPopMatrix(); - - glPopAttrib(); - } else { - printf("Could not use the framebuffer\n"); - } - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); - - } - - glClearColor(1, 0, 1, 1); glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_QUADS); diff --git a/source/gameengine/Rasterizer/RAS_2DFilterManager.h b/source/gameengine/Rasterizer/RAS_2DFilterManager.h index 2519473520a..7ff7cde7882 100644 --- a/source/gameengine/Rasterizer/RAS_2DFilterManager.h +++ b/source/gameengine/Rasterizer/RAS_2DFilterManager.h @@ -45,7 +45,7 @@ private: void EndShaderProgram(); void PrintShaderErrors(unsigned int shader, const char *task, const char *code); - void SetupTextures(bool depth, bool luminance, bool qrender, bool qdepth); + void SetupTextures(bool depth, bool luminance); void FreeTextures(); void UpdateOffsetMatrix(RAS_ICanvas* canvas); @@ -54,15 +54,13 @@ private: float canvascoord[4]; float textureoffsets[18]; float view[4]; - /* texname[0] contains render to texture, texname[1] contains depth texture, texname[2] contains luminance texture - * texname[3] contains quartered render to texture, texname[4] contains quartered depth texture*/ - unsigned int texname[5]; + /* texname[0] contains render to texture, texname[1] contains depth texture, texname[2] contains luminance texture*/ + unsigned int texname[3]; int texturewidth; int textureheight; int canvaswidth; int canvasheight; int numberoffilters; - unsigned int fbo; /* bit 0: enable/disable depth texture * bit 1: enable/disable luminance texture*/ short texflag[MAX_RENDER_PASS]; diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp index ec5f4c4ac6d..122a738e4f3 100644 --- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp +++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp @@ -297,7 +297,6 @@ bool RAS_OpenGLRasterizer::BeginFrame(int drawingmode, double time) m_last_frontface = true; glShadeModel(GL_SMOOTH); - glEnable(GL_MULTISAMPLE_ARB); m_2DCanvas->BeginFrame(); @@ -383,7 +382,6 @@ void RAS_OpenGLRasterizer::EndFrame() FlushDebugLines(); glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - glDisable(GL_MULTISAMPLE_ARB); m_2DCanvas->EndFrame(); } -- cgit v1.2.3 From ed338da8c963cfcc26315584bb694a95f2c89088 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 6 Jun 2010 01:15:44 +0000 Subject: - WITH_CXX_GUARDEDALLOC working again - CMake building without python or fluidsim working again (broke in recent commit) - remove BLI_short_filename(), it wasnt used anywhere. --- source/gameengine/Rasterizer/RAS_2DFilterManager.h | 2 +- source/gameengine/Rasterizer/RAS_BucketManager.h | 2 +- source/gameengine/Rasterizer/RAS_Deformer.h | 2 +- source/gameengine/Rasterizer/RAS_FramingManager.h | 4 ++-- source/gameengine/Rasterizer/RAS_ICanvas.h | 2 +- source/gameengine/Rasterizer/RAS_IPolygonMaterial.h | 2 +- source/gameengine/Rasterizer/RAS_IRasterizer.h | 2 +- source/gameengine/Rasterizer/RAS_IRenderTools.h | 2 +- source/gameengine/Rasterizer/RAS_MaterialBucket.h | 6 +++--- source/gameengine/Rasterizer/RAS_MeshObject.h | 2 +- .../gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h | 2 +- .../Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h | 2 +- .../Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.h | 2 +- source/gameengine/Rasterizer/RAS_Polygon.h | 2 +- source/gameengine/Rasterizer/RAS_Rect.h | 2 +- source/gameengine/Rasterizer/RAS_TexVert.h | 2 +- 16 files changed, 19 insertions(+), 19 deletions(-) (limited to 'source/gameengine/Rasterizer') diff --git a/source/gameengine/Rasterizer/RAS_2DFilterManager.h b/source/gameengine/Rasterizer/RAS_2DFilterManager.h index 7ff7cde7882..9671f914fcd 100644 --- a/source/gameengine/Rasterizer/RAS_2DFilterManager.h +++ b/source/gameengine/Rasterizer/RAS_2DFilterManager.h @@ -106,7 +106,7 @@ public: #ifdef WITH_CXX_GUARDEDALLOC public: - void *operator new( unsigned int num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_2DFilterManager"); } + void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_2DFilterManager"); } void operator delete( void *mem ) { MEM_freeN(mem); } #endif }; diff --git a/source/gameengine/Rasterizer/RAS_BucketManager.h b/source/gameengine/Rasterizer/RAS_BucketManager.h index 0c871a87428..9edac8dcdc8 100644 --- a/source/gameengine/Rasterizer/RAS_BucketManager.h +++ b/source/gameengine/Rasterizer/RAS_BucketManager.h @@ -85,7 +85,7 @@ private: #ifdef WITH_CXX_GUARDEDALLOC public: - void *operator new( unsigned int num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_BucketManager"); } + void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_BucketManager"); } void operator delete( void *mem ) { MEM_freeN(mem); } #endif }; diff --git a/source/gameengine/Rasterizer/RAS_Deformer.h b/source/gameengine/Rasterizer/RAS_Deformer.h index 396b6717144..17c2cb4695e 100644 --- a/source/gameengine/Rasterizer/RAS_Deformer.h +++ b/source/gameengine/Rasterizer/RAS_Deformer.h @@ -89,7 +89,7 @@ protected: #ifdef WITH_CXX_GUARDEDALLOC public: - void *operator new( unsigned int num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_Deformer"); } + void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_Deformer"); } void operator delete( void *mem ) { MEM_freeN(mem); } #endif }; diff --git a/source/gameengine/Rasterizer/RAS_FramingManager.h b/source/gameengine/Rasterizer/RAS_FramingManager.h index c058c8cd3e8..aedac230cbe 100644 --- a/source/gameengine/Rasterizer/RAS_FramingManager.h +++ b/source/gameengine/Rasterizer/RAS_FramingManager.h @@ -161,7 +161,7 @@ private : #ifdef WITH_CXX_GUARDEDALLOC public: - void *operator new( unsigned int num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_FrameSettings"); } + void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_FrameSettings"); } void operator delete( void *mem ) { MEM_freeN(mem); } #endif }; @@ -288,7 +288,7 @@ private : #ifdef WITH_CXX_GUARDEDALLOC public: - void *operator new( unsigned int num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_FramingManager"); } + void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_FramingManager"); } void operator delete( void *mem ) { MEM_freeN(mem); } #endif }; diff --git a/source/gameengine/Rasterizer/RAS_ICanvas.h b/source/gameengine/Rasterizer/RAS_ICanvas.h index 339521cb093..826fe732b94 100644 --- a/source/gameengine/Rasterizer/RAS_ICanvas.h +++ b/source/gameengine/Rasterizer/RAS_ICanvas.h @@ -210,7 +210,7 @@ protected: #ifdef WITH_CXX_GUARDEDALLOC public: - void *operator new( unsigned int num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_ICanvas"); } + void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_ICanvas"); } void operator delete( void *mem ) { MEM_freeN(mem); } #endif }; diff --git a/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h b/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h index bcc8c32e54e..e7bd78c2309 100644 --- a/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h +++ b/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h @@ -176,7 +176,7 @@ public: #ifdef WITH_CXX_GUARDEDALLOC public: - void *operator new( unsigned int num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_IPolyMaterial"); } + void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_IPolyMaterial"); } void operator delete( void *mem ) { MEM_freeN(mem); } #endif }; diff --git a/source/gameengine/Rasterizer/RAS_IRasterizer.h b/source/gameengine/Rasterizer/RAS_IRasterizer.h index 3ffbfcd5a8a..630a43daddc 100644 --- a/source/gameengine/Rasterizer/RAS_IRasterizer.h +++ b/source/gameengine/Rasterizer/RAS_IRasterizer.h @@ -414,7 +414,7 @@ public: #ifdef WITH_CXX_GUARDEDALLOC public: - void *operator new( unsigned int num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_IRasterizer"); } + void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_IRasterizer"); } void operator delete( void *mem ) { MEM_freeN(mem); } #endif }; diff --git a/source/gameengine/Rasterizer/RAS_IRenderTools.h b/source/gameengine/Rasterizer/RAS_IRenderTools.h index 0d89cb41e3c..50de4980e1d 100644 --- a/source/gameengine/Rasterizer/RAS_IRenderTools.h +++ b/source/gameengine/Rasterizer/RAS_IRenderTools.h @@ -180,7 +180,7 @@ public: #ifdef WITH_CXX_GUARDEDALLOC public: - void *operator new( unsigned int num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_IRenderTools"); } + void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_IRenderTools"); } void operator delete( void *mem ) { MEM_freeN(mem); } #endif }; diff --git a/source/gameengine/Rasterizer/RAS_MaterialBucket.h b/source/gameengine/Rasterizer/RAS_MaterialBucket.h index 0f7db93049d..c9ccac8e8a7 100644 --- a/source/gameengine/Rasterizer/RAS_MaterialBucket.h +++ b/source/gameengine/Rasterizer/RAS_MaterialBucket.h @@ -176,7 +176,7 @@ public: #ifdef WITH_CXX_GUARDEDALLOC public: - void *operator new( unsigned int num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_MeshSlot"); } + void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_MeshSlot"); } void operator delete( void *mem ) { MEM_freeN(mem); } #endif }; @@ -193,7 +193,7 @@ public: #ifdef WITH_CXX_GUARDEDALLOC public: - void *operator new( unsigned int num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_MeshMaterial"); } + void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_MeshMaterial"); } void operator delete( void *mem ) { MEM_freeN(mem); } #endif }; @@ -252,7 +252,7 @@ private: #ifdef WITH_CXX_GUARDEDALLOC public: - void *operator new( unsigned int num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_MaterialBucket"); } + void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_MaterialBucket"); } void operator delete( void *mem ) { MEM_freeN(mem); } #endif }; diff --git a/source/gameengine/Rasterizer/RAS_MeshObject.h b/source/gameengine/Rasterizer/RAS_MeshObject.h index 87314a104d1..5a834bf26b0 100644 --- a/source/gameengine/Rasterizer/RAS_MeshObject.h +++ b/source/gameengine/Rasterizer/RAS_MeshObject.h @@ -171,7 +171,7 @@ public: #ifdef WITH_CXX_GUARDEDALLOC public: - void *operator new( unsigned int num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_MeshObject"); } + void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_MeshObject"); } void operator delete( void *mem ) { MEM_freeN(mem); } #endif }; diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h index d3c14b4758c..28c56b92c3c 100644 --- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h +++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h @@ -72,7 +72,7 @@ public: #ifdef WITH_CXX_GUARDEDALLOC public: - void *operator new( unsigned int num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_ListRasterizer"); } + void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_ListRasterizer"); } void operator delete( void *mem ) { MEM_freeN(mem); } #endif }; diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h index 6bbf65f72a4..7b516cb53a0 100644 --- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h +++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h @@ -292,7 +292,7 @@ public: #ifdef WITH_CXX_GUARDEDALLOC public: - void *operator new( unsigned int num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_OpenGLRasterizer"); } + void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_OpenGLRasterizer"); } void operator delete( void *mem ) { MEM_freeN(mem); } #endif }; diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.h b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.h index 92833d9b17d..96f6344b403 100644 --- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.h +++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.h @@ -61,7 +61,7 @@ private: #ifdef WITH_CXX_GUARDEDALLOC public: - void *operator new( unsigned int num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_VAOpenGLRasterizer"); } + void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_VAOpenGLRasterizer"); } void operator delete( void *mem ) { MEM_freeN(mem); } #endif }; diff --git a/source/gameengine/Rasterizer/RAS_Polygon.h b/source/gameengine/Rasterizer/RAS_Polygon.h index 48fa4a206f0..8dc9813f5b9 100644 --- a/source/gameengine/Rasterizer/RAS_Polygon.h +++ b/source/gameengine/Rasterizer/RAS_Polygon.h @@ -93,7 +93,7 @@ public: #ifdef WITH_CXX_GUARDEDALLOC public: - void *operator new( unsigned int num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_Polygon"); } + void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_Polygon"); } void operator delete( void *mem ) { MEM_freeN(mem); } #endif }; diff --git a/source/gameengine/Rasterizer/RAS_Rect.h b/source/gameengine/Rasterizer/RAS_Rect.h index 828257dcecc..7a1d21b8905 100644 --- a/source/gameengine/Rasterizer/RAS_Rect.h +++ b/source/gameengine/Rasterizer/RAS_Rect.h @@ -96,7 +96,7 @@ public: #ifdef WITH_CXX_GUARDEDALLOC public: - void *operator new( unsigned int num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_Rect"); } + void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_Rect"); } void operator delete( void *mem ) { MEM_freeN(mem); } #endif }; diff --git a/source/gameengine/Rasterizer/RAS_TexVert.h b/source/gameengine/Rasterizer/RAS_TexVert.h index b74cfb47152..bdf2a6487ad 100644 --- a/source/gameengine/Rasterizer/RAS_TexVert.h +++ b/source/gameengine/Rasterizer/RAS_TexVert.h @@ -141,7 +141,7 @@ public: #ifdef WITH_CXX_GUARDEDALLOC public: - void *operator new( unsigned int num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_TexVert"); } + void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_TexVert"); } void operator delete( void *mem ) { MEM_freeN(mem); } #endif }; -- cgit v1.2.3 From 08a94f9bbdf74a2d87da5908d919d018445ca222 Mon Sep 17 00:00:00 2001 From: Mitchell Stokes Date: Wed, 16 Jun 2010 19:07:20 +0000 Subject: BGE: When dynamically loading scenes (bge.logic.LibLoad()) in GLSL mode, the lights in the loaded scene would not affect the current scene and vice versa. To fix this, I've updated to merge code to update the scenes that the shaders are using to the scene being merged into. --- source/gameengine/Rasterizer/RAS_BucketManager.cpp | 10 +++++++++- source/gameengine/Rasterizer/RAS_BucketManager.h | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'source/gameengine/Rasterizer') diff --git a/source/gameengine/Rasterizer/RAS_BucketManager.cpp b/source/gameengine/Rasterizer/RAS_BucketManager.cpp index 4c22f4dcfc7..32fb1e31780 100644 --- a/source/gameengine/Rasterizer/RAS_BucketManager.cpp +++ b/source/gameengine/Rasterizer/RAS_BucketManager.cpp @@ -346,13 +346,21 @@ void RAS_BucketManager::RemoveMaterial(RAS_IPolyMaterial * mat) //#include -void RAS_BucketManager::MergeBucketManager(RAS_BucketManager *other) +void RAS_BucketManager::MergeBucketManager(RAS_BucketManager *other, SCA_IScene *scene) { /* concatinate lists */ // printf("BEFORE %d %d\n", GetSolidBuckets().size(), GetAlphaBuckets().size()); + BucketList::iterator it; + + for (it = other->GetSolidBuckets().begin(); it != other->GetSolidBuckets().end(); ++it) + (*it)->GetPolyMaterial()->Replace_IScene(scene); + GetSolidBuckets().insert( GetSolidBuckets().end(), other->GetSolidBuckets().begin(), other->GetSolidBuckets().end() ); other->GetSolidBuckets().clear(); + for (it = other->GetAlphaBuckets().begin(); it != other->GetAlphaBuckets().end(); ++it) + (*it)->GetPolyMaterial()->Replace_IScene(scene); + GetAlphaBuckets().insert( GetAlphaBuckets().end(), other->GetAlphaBuckets().begin(), other->GetAlphaBuckets().end() ); other->GetAlphaBuckets().clear(); //printf("AFTER %d %d\n", GetSolidBuckets().size(), GetAlphaBuckets().size()); diff --git a/source/gameengine/Rasterizer/RAS_BucketManager.h b/source/gameengine/Rasterizer/RAS_BucketManager.h index 9edac8dcdc8..487df50802c 100644 --- a/source/gameengine/Rasterizer/RAS_BucketManager.h +++ b/source/gameengine/Rasterizer/RAS_BucketManager.h @@ -63,7 +63,7 @@ public: void RemoveMaterial(RAS_IPolyMaterial * mat); // freeing scenes only /* for merging */ - void MergeBucketManager(RAS_BucketManager *other); + void MergeBucketManager(RAS_BucketManager *other, SCA_IScene *scene); BucketList & GetSolidBuckets() {return m_SolidBuckets;}; BucketList & GetAlphaBuckets() {return m_AlphaBuckets;}; -- cgit v1.2.3 From f65c15cd5a269b0a95171e5168dfd6795265cdf6 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 7 Jul 2010 15:26:02 +0000 Subject: Fix #22772: remove unnecessary -fpascal-strings flag on OS X, only some debug code in webplugin needed it. --- source/gameengine/Rasterizer/Makefile | 4 ---- source/gameengine/Rasterizer/RAS_OpenGLRasterizer/Makefile | 4 ---- 2 files changed, 8 deletions(-) (limited to 'source/gameengine/Rasterizer') diff --git a/source/gameengine/Rasterizer/Makefile b/source/gameengine/Rasterizer/Makefile index a12d599b60b..c877e423a71 100644 --- a/source/gameengine/Rasterizer/Makefile +++ b/source/gameengine/Rasterizer/Makefile @@ -49,10 +49,6 @@ CPPFLAGS += -I../Ketsji CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) -ifeq ($(OS),darwin) - CPPFLAGS += -fpascal-strings -endif - ############### SOURCEDIR = source/gameengine/Rasterizer diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/Makefile b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/Makefile index 0327714dc5f..aedbc2705f0 100644 --- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/Makefile +++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/Makefile @@ -51,7 +51,3 @@ CPPFLAGS += -I../../SceneGraph CPPFLAGS += -I.. CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -ifeq ($(OS),darwin) - CPPFLAGS += -fpascal-strings -endif - -- cgit v1.2.3