Fix for bug [#26122] "Overlay scene gets transparent when motion blur is enabled...
authorMitchell Stokes <mogurijin@gmail.com>
Mon, 23 Jul 2012 01:00:56 +0000 (01:00 +0000)
committerMitchell Stokes <mogurijin@gmail.com>
Mon, 23 Jul 2012 01:00:56 +0000 (01:00 +0000)
The problem is motion blur was being treated as a per scene operation, but all scenes were trying to use the same accumulation buffer. Now motion blur is done in EndFrame() instead of PostRenderScene().

source/gameengine/Ketsji/KX_KetsjiEngine.cpp

index 21c3198b8f9136043265777655280945a8cf2bfc..940f8e5c6fe66eb59cf191dba261ca66761b27c7 100644 (file)
@@ -503,6 +503,8 @@ bool KX_KetsjiEngine::BeginFrame()
 
 void KX_KetsjiEngine::EndFrame()
 {
+       m_rendertools->MotionBlur(m_rasterizer);
+
        // Show profiling info
        m_logger->StartLog(tc_overhead, m_kxsystem->GetTimeInSeconds(), true);
        if (m_show_framerate || m_show_profile || (m_show_debug_properties && m_propertiesPresent))
@@ -1344,7 +1346,6 @@ void KX_KetsjiEngine::PostRenderScene(KX_Scene* scene)
        m_canvas->SetViewPort(0, 0, m_canvas->GetWidth(), m_canvas->GetHeight());
        
        m_rasterizer->FlushDebugShapes();
-       m_rendertools->MotionBlur(m_rasterizer);
        scene->Render2DFilters(m_canvas);
 #ifdef WITH_PYTHON
        scene->RunDrawingCallbacks(scene->GetPostDrawCB());