[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27231] trunk/blender: BGE 2D Filters: filters run per scene now (fix for [#18152]) - it (slightly) breaks backward compatibility !!!

Dalai Felinto dfelinto at gmail.com
Wed Mar 3 07:40:59 CET 2010


oops. I sent way too much files :/ going to revert the extra ones now ...
sorry

2010/3/2 Dalai Felinto <dfelinto at gmail.com>

> Revision: 27231
>
> http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27231
> Author:   dfelinto
> Date:     2010-03-03 07:38:47 +0100 (Wed, 03 Mar 2010)
>
> Log Message:
> -----------
> BGE 2D Filters: filters run per scene now (fix for [#18152]) - it
> (slightly) breaks backward compatibility !!!
>
> Originally we had 2DFilters (m_filtermanager) stored in RenderTools. That
> way filters were stored globally and were being called once per each scene.
> This was producing two big problems: (1) performance and (2) flexibility of
> use.
>
> (1) Performance - To run the filters 2X == 2X slower
> (2) flexibility of use - Very often we want the filter in the scene but not
> in the UI for example.
>
> For those reasons I believe that 2DFilters with multiple scenes was very
> useless or unpredictable. I hope they work fine now.
> To make it work as before (2.4) you can simply recreate the 2dfilter
> actuators across the scenes.
>
> * * * * *
>
> Imagine that we have:
> (a) Main Scene
> (b) Overlay Scene
>
> in Main Scene the Z Buffer and RGB will be from the main scene.
> in Overlay Scene the Z Buffer will be from the Overlay Scene and the RBG
> buffer is from both [(a + 2D Filter) + b].
>
> So in pseudo code if we have a,b,c,d,e scenes we have:
> (2DFilterE(2DFilterD(2DFilterC(2DFilterB(2DFilterA(a) + b) + c) + d) + e)
>
> Modified Paths:
> --------------
>    trunk/blender/CMakeLists.txt
>    trunk/blender/source/blender/editors/screen/screen_ops.c
>
>  trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp
>    trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h
>    trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp
>    trunk/blender/source/gameengine/GameLogic/CMakeLists.txt
>    trunk/blender/source/gameengine/GameLogic/Makefile
>    trunk/blender/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp
>    trunk/blender/source/gameengine/GameLogic/SCA_2DFilterActuator.h
>    trunk/blender/source/gameengine/GameLogic/SConscript
>    trunk/blender/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp
>    trunk/blender/source/gameengine/GamePlayer/common/GPC_RenderTools.h
>    trunk/blender/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
>    trunk/blender/source/gameengine/Ketsji/KX_KetsjiEngine.h
>    trunk/blender/source/gameengine/Ketsji/KX_Scene.cpp
>    trunk/blender/source/gameengine/Ketsji/KX_Scene.h
>    trunk/blender/source/gameengine/Rasterizer/CMakeLists.txt
>    trunk/blender/source/gameengine/Rasterizer/Makefile
>    trunk/blender/source/gameengine/Rasterizer/RAS_2DFilterManager.h
>    trunk/blender/source/gameengine/Rasterizer/RAS_IRenderTools.h
>
> Modified: trunk/blender/CMakeLists.txt
> ===================================================================
> --- trunk/blender/CMakeLists.txt        2010-03-03 00:32:51 UTC (rev 27230)
> +++ trunk/blender/CMakeLists.txt        2010-03-03 06:38:47 UTC (rev 27231)
> @@ -261,7 +261,7 @@
>        # this file is included anyway when building under Windows with
> cl.exe
>        #  INCLUDE(${CMAKE_ROOT}/Modules/Platform/Windows-cl.cmake)
>
> -       SET(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/windows)
> +       SET(LIBDIR ${CMAKE_SOURCE_DIR}/../../../lib/windows)
>
>        # Setup 64bit and 64bit windows systems
>        IF(CMAKE_CL_64)
>
> Modified: trunk/blender/source/blender/editors/screen/screen_ops.c
> ===================================================================
> --- trunk/blender/source/blender/editors/screen/screen_ops.c    2010-03-03
> 00:32:51 UTC (rev 27230)
> +++ trunk/blender/source/blender/editors/screen/screen_ops.c    2010-03-03
> 06:38:47 UTC (rev 27231)
> @@ -2250,7 +2250,53 @@
>        ot->poll= ED_operator_areaactive;
>        ot->flag= 0;
>  }
> +/* ************** header pan to left + mouse over editor changes operator
> ***************************** */
> +// This is a hacky, or a workaround if you prefer
> +// I like being able to quickly switch Editors (ALT+MOUSEWHEEL)
> +// Since the editor switcher is not always visible (and it should IMHO)
> this operator helps you with that :)
>
> +static int header_focus_exec(bContext *C, wmOperator *op)
> +{
> +       int i;
> +       int bounds[4] = {0,20,0,0};
> +       ARegion *ar= CTX_wm_region(C);
> +
> +       /* find the header region
> +        *      - try context first, but upon failing, search all regions
> in area...
> +        */
> +       if((ar == NULL) || (ar->regiontype != RGN_TYPE_HEADER)) {
> +               ScrArea *sa= CTX_wm_area(C);
> +
> +               /* loop over all regions until a matching one is found */
> +               for (ar= sa->regionbase.first; ar; ar= ar->next) {
> +                       if(ar->regiontype == RGN_TYPE_HEADER)
> +                               break;
> +               }
> +
> +               /* don't do anything if no region */
> +               if(ar == NULL)
> +                       return OPERATOR_CANCELLED;
> +       }
> +       for (i =0; i <40; i++){
> +               WM_operator_name_call(C, "VIEW2D_OT_scroll_left",
> WM_OP_INVOKE_DEFAULT, NULL);
> +       }
> +
> +       return OPERATOR_FINISHED;
> +}
> +
> +static void SCREEN_OT_header_focus(wmOperatorType *ot)
> +{
> +       /* identifiers */
> +       ot->name= "Header Focus";
> +       ot->idname= "SCREEN_OT_header_focus";
> +
> +       /* api callbacks */
> +       ot->exec= header_focus_exec;
> +
> +       ot->poll= ED_operator_areaactive;
> +       ot->flag= 0;
> +}
> +
>  /* ************** header flip operator ***************************** */
>
>  /* flip a header region alignment */
> @@ -2325,7 +2371,7 @@
>                uiItemO(layout, "Flip to Bottom", 0,
> "SCREEN_OT_header_flip");
>        else
>                uiItemO(layout, "Flip to Top", 0, "SCREEN_OT_header_flip");
> -
> +       uiItemO(layout, "Focus on Editor Type", 0,
> "SCREEN_OT_header_focus");
>        uiItemS(layout);
>
>        /* file browser should be fullscreen all the time, but other regions
> can be maximised/restored... */
> @@ -3996,6 +4042,7 @@
>        WM_operatortype_append(SCREEN_OT_region_flip);
>        WM_operatortype_append(SCREEN_OT_header_flip);
>        WM_operatortype_append(SCREEN_OT_header_toolbox);
> +       WM_operatortype_append(SCREEN_OT_header_focus);
>        WM_operatortype_append(SCREEN_OT_screen_set);
>        WM_operatortype_append(SCREEN_OT_screen_full_area);
>        WM_operatortype_append(SCREEN_OT_back_to_previous);
> @@ -4080,6 +4127,7 @@
>        keymap= WM_keymap_find(keyconf, "Header", 0, 0);
>
>        WM_keymap_add_item(keymap, "SCREEN_OT_header_toolbox", RIGHTMOUSE,
> KM_PRESS, 0, 0);
> +       WM_keymap_add_item(keymap, "SCREEN_OT_header_focus", MIDDLEMOUSE,
> KM_PRESS, KM_ALT, 0);
>
>        /* Screen General ------------------------------------------------
> */
>        keymap= WM_keymap_find(keyconf, "Screen", 0, 0);
>
> Modified:
> trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp
> ===================================================================
> ---
> trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp
> 2010-03-03 00:32:51 UTC (rev 27230)
> +++
> trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp
> 2010-03-03 06:38:47 UTC (rev 27231)
> @@ -379,13 +379,3 @@
>                }
>        }
>  }
> -
> -void KX_BlenderRenderTools::Update2DFilter(vector<STR_String>& propNames,
> void* gameObj, RAS_2DFilterManager::RAS_2DFILTER_MODE filtermode, int pass,
> STR_String& text)
> -{
> -       m_filtermanager.EnableFilter(propNames, gameObj, filtermode, pass,
> text);
> -}
> -
> -void KX_BlenderRenderTools::Render2DFilters(RAS_ICanvas* canvas)
> -{
> -       m_filtermanager.RenderFilters(canvas);
> -}
>
> Modified:
> trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h
> ===================================================================
> --- trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h
>     2010-03-03 00:32:51 UTC (rev 27230)
> +++ trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h
>     2010-03-03 06:38:47 UTC (rev 27231)
> @@ -94,10 +94,6 @@
>
>        virtual void MotionBlur(RAS_IRasterizer* rasterizer);
>
> -       virtual void Update2DFilter(vector<STR_String>& propNames, void*
> gameObj, RAS_2DFilterManager::RAS_2DFILTER_MODE filtermode, int pass,
> STR_String& text);
> -
> -       virtual void Render2DFilters(RAS_ICanvas* canvas);
> -
>        virtual void SetClientObject(RAS_IRasterizer *rasty, void* obj);
>
>
>
> Modified: trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp
> ===================================================================
> --- trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp
> 2010-03-03 00:32:51 UTC (rev 27230)
> +++ trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp
> 2010-03-03 06:38:47 UTC (rev 27231)
> @@ -969,7 +969,7 @@
>                        }
>
>                        tmp = new SCA_2DFilterActuator(gameobj, filtermode,
> _2dfilter->flag,
> -
> _2dfilter->float_arg,_2dfilter->int_arg,ketsjiEngine->GetRasterizer(),rendertools);
> +
> _2dfilter->float_arg,_2dfilter->int_arg,ketsjiEngine->GetRasterizer(),scene);
>
>                        if (_2dfilter->text)
>                        {
>
> Modified: trunk/blender/source/gameengine/GameLogic/CMakeLists.txt
> ===================================================================
> --- trunk/blender/source/gameengine/GameLogic/CMakeLists.txt    2010-03-03
> 00:32:51 UTC (rev 27230)
> +++ trunk/blender/source/gameengine/GameLogic/CMakeLists.txt    2010-03-03
> 06:38:47 UTC (rev 27231)
> @@ -32,6 +32,7 @@
>        ../../../intern/string
>        ../../../source/gameengine/Expressions
>        ../../../source/gameengine/SceneGraph
> +       ../../../source/gameengine/Ketsji
>        ../../../intern/moto/include
>        ../../../source/gameengine/Rasterizer
>  )
>
> Modified: trunk/blender/source/gameengine/GameLogic/Makefile
> ===================================================================
> --- trunk/blender/source/gameengine/GameLogic/Makefile  2010-03-03 00:32:51
> UTC (rev 27230)
> +++ trunk/blender/source/gameengine/GameLogic/Makefile  2010-03-03 06:38:47
> UTC (rev 27231)
> @@ -41,6 +41,7 @@
>  CPPFLAGS += -I../Expressions
>  CPPFLAGS += -I../SceneGraph
>  CPPFLAGS += -I../Rasterizer
> +CPPFLAGS += -I../Ketsji
>  CPPFLAGS += -I$(NAN_STRING)/include
>  CPPFLAGS += -I$(NAN_MOTO)/include
>  CPPFLAGS += -I../../blender/makesdna
>
> Modified:
> trunk/blender/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp
> ===================================================================
> --- trunk/blender/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp
>  2010-03-03 00:32:51 UTC (rev 27230)
> +++ trunk/blender/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp
>  2010-03-03 06:38:47 UTC (rev 27231)
> @@ -42,14 +42,14 @@
>                float float_arg,
>                int int_arg,
>                RAS_IRasterizer* rasterizer,
> -               RAS_IRenderTools* rendertools)
> +               KX_Scene* scene)
>     : SCA_IActuator(gameobj, KX_ACT_2DFILTER),
>      m_type(type),
>         m_disableMotionBlur(flag),
>         m_float_arg(float_arg),
>         m_int_arg(int_arg),
>         m_rasterizer(rasterizer),
> -        m_rendertools(rendertools)
> +        m_scene(scene)
>  {
>        m_gameObj = NULL;
>        if(gameobj){
> @@ -87,7 +87,7 @@
>        }
>        else if(m_type <
> RAS_2DFilterManager::RAS_2DFILTER_NUMBER_OF_FILTERS)
>        {
> -               m_rendertools->Update2DFilter(m_propNames, m_gameObj,
> m_type, m_int_arg, m_shaderText);
> +               m_scene->Update2DFilter(m_propNames, m_gameObj, m_type,
> m_int_arg, m_shaderText);
>        }
>        // once the filter is in place, no need to update it again =>
> disable the actuator
>     return false;
>
> Modified: trunk/blender/source/gameengine/GameLogic/SCA_2DFilterActuator.h
> ===================================================================
> --- trunk/blender/source/gameengine/GameLogic/SCA_2DFilterActuator.h
>  2010-03-03 00:32:51 UTC (rev 27230)
> +++ trunk/blender/source/gameengine/GameLogic/SCA_2DFilterActuator.h
>  2010-03-03 06:38:47 UTC (rev 27231)
> @@ -29,8 +29,8 @@
>  #define __SCA_2DFILETRACTUATOR_H__
>
>  #include "RAS_IRasterizer.h"
> -#include "RAS_IRenderTools.h"
>  #include "SCA_IActuator.h"
> +#include "KX_Scene.h"
>
>  class SCA_2DFilterActuator : public SCA_IActuator
>  {
> @@ -45,7 +45,7 @@
>        int   m_int_arg;
>        STR_String      m_shaderText;
>        RAS_IRasterizer* m_rasterizer;
> -       RAS_IRenderTools* m_rendertools;
> +       KX_Scene* m_scene;
>
>  public:
>
> @@ -56,7 +56,7 @@
>                float float_arg,
>                int int_arg,
>                RAS_IRasterizer* rasterizer,
> -               RAS_IRenderTools* rendertools);
> +               KX_Scene* scene);
>
>        void    SetShaderText(const char *text);
>     virtual ~SCA_2DFilterActuator();
>
> Modified: trunk/blender/source/gameengine/GameLogic/SConscript
> ===================================================================
> --- trunk/blender/source/gameengine/GameLogic/SConscript        2010-03-03
> 00:32:51 UTC (rev 27230)
> +++ trunk/blender/source/gameengine/GameLogic/SConscript        2010-03-03
> 06:38:47 UTC (rev 27231)
> @@ -6,6 +6,7 @@
>  incs = '. #/source/kernel/gen_system #/intern/string'
>  incs += ' #/source/gameengine/Expressions #/intern/moto/include'
>  incs += ' #/source/gameengine/Rasterizer #/source/gameengine/SceneGraph'
> +incs += ' #/source/gameengine/Ketsji'
>
>  defs = []
>
>
> Modified:
> trunk/blender/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp
> ===================================================================
> --- trunk/blender/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp
>     2010-03-03 00:32:51 UTC (rev 27230)
> +++ trunk/blender/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp
>     2010-03-03 06:38:47 UTC (rev 27231)
> @@ -433,13 +433,3 @@
>        }
>  }
>
> -void GPC_RenderTools::Update2DFilter(vector<STR_String>& propNames, void*
> gameObj, RAS_2DFilterManager::RAS_2DFILTER_MODE filtermode, int pass,
> STR_String& text)
> -{
> -       m_filtermanager.EnableFilter(propNames, gameObj, filtermode, pass,
> text);
> -}
> -
> -void GPC_RenderTools::Render2DFilters(RAS_ICanvas* canvas)
> -{
> -       m_filtermanager.RenderFilters(canvas);
> -}
> -
>
> Modified:
> trunk/blender/source/gameengine/GamePlayer/common/GPC_RenderTools.h
> ===================================================================
>
> @@ Diff output truncated at 10240 characters. @@
>
> _______________________________________________
> Bf-blender-cvs mailing list
> Bf-blender-cvs at blender.org
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.blender.org/pipermail/bf-blender-cvs/attachments/20100302/9ae1c4f0/attachment.html>


More information about the Bf-blender-cvs mailing list