[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12345] branches/game_engine/source: 2d-Filters feature and actuators.
Hamed Zaghaghi
hamed.zaghaghi at gmail.com
Mon Oct 22 22:24:26 CEST 2007
Revision: 12345
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12345
Author: zaghaghi
Date: 2007-10-22 22:24:26 +0200 (Mon, 22 Oct 2007)
Log Message:
-----------
2d-Filters feature and actuators.
Modified Paths:
--------------
branches/game_engine/source/blender/blenkernel/intern/sca.c
branches/game_engine/source/blender/blenloader/intern/readfile.c
branches/game_engine/source/blender/blenloader/intern/writefile.c
branches/game_engine/source/blender/include/blendef.h
branches/game_engine/source/blender/makesdna/DNA_actuator_types.h
branches/game_engine/source/blender/src/buttons_logic.c
branches/game_engine/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp
branches/game_engine/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h
branches/game_engine/source/gameengine/Converter/KX_ConvertActuators.cpp
branches/game_engine/source/gameengine/GameLogic/CMakeLists.txt
branches/game_engine/source/gameengine/GameLogic/SConscript
branches/game_engine/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp
branches/game_engine/source/gameengine/GamePlayer/common/GPC_RenderTools.h
branches/game_engine/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
branches/game_engine/source/gameengine/Ketsji/KX_KetsjiEngine.h
branches/game_engine/source/gameengine/Rasterizer/RAS_IRenderTools.h
Added Paths:
-----------
branches/game_engine/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp
branches/game_engine/source/gameengine/GameLogic/SCA_2DFilterActuator.h
branches/game_engine/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp
branches/game_engine/source/gameengine/Rasterizer/RAS_2DFilterManager.h
branches/game_engine/source/gameengine/Rasterizer/RAS_OpenGLFilters/
branches/game_engine/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Blur2DFilter.h
branches/game_engine/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Dilation2DFilter.h
branches/game_engine/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Erosion2DFilter.h
branches/game_engine/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_GrayScale2DFilter.h
branches/game_engine/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Invert2DFilter.h
branches/game_engine/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Laplacian2DFilter.h
branches/game_engine/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Prewitt2DFilter.h
branches/game_engine/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Sepia2DFilter.h
branches/game_engine/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Sharpen2DFilter.h
branches/game_engine/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Sobel2DFilter.h
Modified: branches/game_engine/source/blender/blenkernel/intern/sca.c
===================================================================
--- branches/game_engine/source/blender/blenkernel/intern/sca.c 2007-10-22 16:16:16 UTC (rev 12344)
+++ branches/game_engine/source/blender/blenkernel/intern/sca.c 2007-10-22 20:24:26 UTC (rev 12345)
@@ -461,6 +461,9 @@
case ACT_VISIBILITY:
act->data= MEM_callocN(sizeof(bVisibilityActuator), "visibility act");
break;
+ case ACT_2DFILTER:
+ act->data = MEM_callocN(sizeof( bTwoDFilterActuator ), "2d filter act");
+ break;
default:
; /* this is very severe... I cannot make any memory for this */
/* logic brick... */
Modified: branches/game_engine/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/game_engine/source/blender/blenloader/intern/readfile.c 2007-10-22 16:16:16 UTC (rev 12344)
+++ branches/game_engine/source/blender/blenloader/intern/readfile.c 2007-10-22 20:24:26 UTC (rev 12345)
@@ -2819,6 +2819,9 @@
bMessageActuator *ma= act->data;
ma->toObject= newlibadr(fd, ob->id.lib, ma->toObject);
}
+ else if(act->type==ACT_2DFILTER){
+ /* bTwoDFilterActuator *_2dfa = act->data; */
+ }
act= act->next;
}
Modified: branches/game_engine/source/blender/blenloader/intern/writefile.c
===================================================================
--- branches/game_engine/source/blender/blenloader/intern/writefile.c 2007-10-22 16:16:16 UTC (rev 12344)
+++ branches/game_engine/source/blender/blenloader/intern/writefile.c 2007-10-22 20:24:26 UTC (rev 12345)
@@ -672,6 +672,9 @@
case ACT_VISIBILITY:
writestruct(wd, DATA, "bVisibilityActuator", 1, act->data);
break;
+ case ACT_2DFILTER:
+ writestruct(wd, DATA, "bTwoDFilterActuator", 1, act->data);
+ break;
default:
; /* error: don't know how to write this file */
}
Modified: branches/game_engine/source/blender/include/blendef.h
===================================================================
--- branches/game_engine/source/blender/include/blendef.h 2007-10-22 16:16:16 UTC (rev 12344)
+++ branches/game_engine/source/blender/include/blendef.h 2007-10-22 20:24:26 UTC (rev 12345)
@@ -452,5 +452,6 @@
/* Error messages */
#define ERROR_LIBDATA_MESSAGE "Can't edit external libdata"
+#define MAX_RENDER_PASS 100
#endif
Modified: branches/game_engine/source/blender/makesdna/DNA_actuator_types.h
===================================================================
--- branches/game_engine/source/blender/makesdna/DNA_actuator_types.h 2007-10-22 16:16:16 UTC (rev 12344)
+++ branches/game_engine/source/blender/makesdna/DNA_actuator_types.h 2007-10-22 20:24:26 UTC (rev 12345)
@@ -191,6 +191,17 @@
int flag;
} bVisibilityActuator;
+typedef struct bTwoDFilterActuator{
+ /* Tells what type of 2D Filter*/
+ short type;
+ /* (flag == 0) means 2D filter is activate and
+ (flag != 0) means 2D filter is inactive*/
+ short flag;
+ /* a float argument */
+ float float_arg;
+ int int_arg;
+}bTwoDFilterActuator;
+
typedef struct bActuator {
struct bActuator *next, *prev, *mynew;
short type;
@@ -259,6 +270,7 @@
#define ACT_CD 16
#define ACT_GAME 17
#define ACT_VISIBILITY 18
+#define ACT_2DFILTER 19
/* actuator flag */
#define ACT_SHOW 1
@@ -391,5 +403,20 @@
/* Set means the object will become invisible */
#define ACT_VISIBILITY_INVISIBLE (1 << 0)
+/* twodfilter->type */
+#define ACT_2DFILTER_NOFILTER -1
+#define ACT_2DFILTER_MOTIONBLUR 0
+#define ACT_2DFILTER_BLUR 1
+#define ACT_2DFILTER_SHARPEN 2
+#define ACT_2DFILTER_DILATION 3
+#define ACT_2DFILTER_EROSION 4
+#define ACT_2DFILTER_LAPLACIAN 5
+#define ACT_2DFILTER_SOBEL 6
+#define ACT_2DFILTER_PREWITT 7
+#define ACT_2DFILTER_GRAYSCALE 8
+#define ACT_2DFILTER_SEPIA 9
+#define ACT_2DFILTER_INVERT 10
+#define ACT_2DFILTER_NUMBER_OF_FILTERS 11
#endif
+
Modified: branches/game_engine/source/blender/src/buttons_logic.c
===================================================================
--- branches/game_engine/source/blender/src/buttons_logic.c 2007-10-22 16:16:16 UTC (rev 12344)
+++ branches/game_engine/source/blender/src/buttons_logic.c 2007-10-22 20:24:26 UTC (rev 12345)
@@ -712,6 +712,8 @@
return "Game";
case ACT_VISIBILITY:
return "Visibility";
+ case ACT_2DFILTER:
+ return "2D Filter";
}
return "unknown";
}
@@ -727,13 +729,13 @@
return "Actuators %t|Action %x15|Motion %x0|Constraint %x9|Ipo %x1"
"|Camera %x3|Sound %x5|Property %x6|Edit Object %x10"
"|Scene %x11|Random %x13|Message %x14|CD %x16|Game %x17"
- "|Visibility %x18";
+ "|Visibility %x18|2D Filter %x19";
break;
default:
return "Actuators %t|Motion %x0|Constraint %x9|Ipo %x1"
"|Camera %x3|Sound %x5|Property %x6|Edit Object %x10"
"|Scene %x11|Random %x13|Message %x14|CD %x16|Game %x17"
- "|Visibility %x18";
+ "|Visibility %x18|2D Filter %x19";
}
}
@@ -1476,6 +1478,7 @@
bActionActuator *aa = NULL;
bGameActuator *gma = NULL;
bVisibilityActuator *visAct = NULL;
+ bTwoDFilterActuator *tdfa = NULL;
float *fp;
short ysize = 0, wval;
@@ -2172,6 +2175,47 @@
yco -= ysize;
break;
+ case ACT_2DFILTER:
+ tdfa = act->data;
+
+ ysize= 50;
+ glRects( xco, yco-ysize, xco+width, yco );
+ uiEmboss( (float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1 );
+
+ switch(tdfa->type)
+ {
+ case ACT_2DFILTER_MOTIONBLUR:
+ if(!tdfa->flag)
+ {
+ uiDefButS(block, TOG, B_REDR, "D", xco+30,yco-44,19, 19, &tdfa->flag, 0.0, 0.0, 0.0, 0.0, "Disable Motion Blur");
+ uiDefButF(block, NUM, B_REDR, "Value:", xco+52,yco-44,width-82,19,&tdfa->float_arg,0.0,1.0,0.0,0.0,"Set motion blur value");
+ }
+ else
+ {
+ uiDefButS(block, TOG, B_REDR, "Disabled", xco+30,yco-44,width-60, 19, &tdfa->flag, 0.0, 0.0, 0.0, 0.0, "Enable Motion Blur");
+ }
+ break;
+ case ACT_2DFILTER_BLUR:
+ case ACT_2DFILTER_SHARPEN:
+ case ACT_2DFILTER_DILATION:
+ case ACT_2DFILTER_EROSION:
+ case ACT_2DFILTER_LAPLACIAN:
+ case ACT_2DFILTER_SOBEL:
+ case ACT_2DFILTER_PREWITT:
+ case ACT_2DFILTER_GRAYSCALE:
+ case ACT_2DFILTER_SEPIA:
+ case ACT_2DFILTER_INVERT:
+ case ACT_2DFILTER_NOFILTER:
+ uiDefButI(block, NUM, B_REDR, "Pass Number:", xco+30,yco-44,width-60,19,&tdfa->int_arg,-1.0,MAX_RENDER_PASS-1,0.0,0.0,"Set motion blur value");
+ break;
+ }
+
+ str= "2D Filter %t|Motion Blur %x0|Blur %x1|Sharpen %x2|Dilation %x3|Erosion %x4|"
+ "Laplacian %x5|Sobel %x6|Prewitt %x7|Gray Scale %x8|Sepia %x9|Invert %x10|No Filter %x-1|";
+ uiDefButS(block, MENU, B_REDR, str, xco+30,yco-24,width-60, 19, &tdfa->type, 0.0, 0.0, 0.0, 0.0, "2D filter type");
+
+ yco -= ysize;
+ break;
default:
ysize= 4;
@@ -2812,3 +2856,4 @@
if(idar) MEM_freeN(idar);
}
+
Modified: branches/game_engine/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp
===================================================================
--- branches/game_engine/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp 2007-10-22 16:16:16 UTC (rev 12344)
+++ branches/game_engine/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp 2007-10-22 20:24:26 UTC (rev 12345)
@@ -475,4 +475,14 @@
}
}
+void KX_BlenderRenderTools::Update2DFilter(RAS_2DFilterManager::RAS_2DFILTER_MODE filtermode, int pass)
+{
+ m_filtermanager.EnableFilter(filtermode, pass);
+}
+
+void KX_BlenderRenderTools::Render2DFilters(RAS_ICanvas* canvas)
+{
+ m_filtermanager.RenderFilters(canvas);
+}
+
unsigned int KX_BlenderRenderTools::m_numgllights;
Modified: branches/game_engine/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h
===================================================================
--- branches/game_engine/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h 2007-10-22 16:16:16 UTC (rev 12344)
+++ branches/game_engine/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h 2007-10-22 20:24:26 UTC (rev 12345)
@@ -55,6 +55,7 @@
bool m_lastlighting;
static unsigned int m_numgllights;
+
public:
KX_BlenderRenderTools();
@@ -102,8 +103,14 @@
bool RayHit(KX_ClientObjectInfo* client, MT_Point3& hit_point, MT_Vector3& hit_normal, void * const data);
virtual void MotionBlur(RAS_IRasterizer* rasterizer);
+
+ virtual void Update2DFilter(RAS_2DFilterManager::RAS_2DFILTER_MODE filtermode, int pass);
+
+ virtual void Render2DFilters(RAS_ICanvas* canvas);
+
};
#endif //__KX_BLENDERRENDERTOOLS
+
Modified: branches/game_engine/source/gameengine/Converter/KX_ConvertActuators.cpp
===================================================================
--- branches/game_engine/source/gameengine/Converter/KX_ConvertActuators.cpp 2007-10-22 16:16:16 UTC (rev 12344)
+++ branches/game_engine/source/gameengine/Converter/KX_ConvertActuators.cpp 2007-10-22 20:24:26 UTC (rev 12345)
@@ -45,6 +45,7 @@
#include "SCA_PropertyActuator.h"
#include "SCA_LogicManager.h"
#include "SCA_RandomActuator.h"
+#include "SCA_2DFilterActuator.h"
// Ketsji specific logicbricks
@@ -836,7 +837,63 @@
baseact = tmp_vis_act;
}
break;
+
+ case ACT_2DFILTER:
+ {
+ bTwoDFilterActuator *_2dfilter = (bTwoDFilterActuator*) bact->data;
+ SCA_2DFilterActuator *tmp = NULL;
+ RAS_2DFilterManager::RAS_2DFILTER_MODE filtermode;
+ switch(_2dfilter->type)
+ {
+ case ACT_2DFILTER_MOTIONBLUR:
+ filtermode = RAS_2DFilterManager::RAS_2DFILTER_MOTIONBLUR;
+ break;
+ case ACT_2DFILTER_BLUR:
+ filtermode = RAS_2DFilterManager::RAS_2DFILTER_BLUR;
+ break;
+ case ACT_2DFILTER_SHARPEN:
+ filtermode = RAS_2DFilterManager::RAS_2DFILTER_SHARPEN;
+ break;
+ case ACT_2DFILTER_DILATION:
+ filtermode = RAS_2DFilterManager::RAS_2DFILTER_DILATION;
+ break;
+ case ACT_2DFILTER_EROSION:
+ filtermode = RAS_2DFilterManager::RAS_2DFILTER_EROSION;
+ break;
+ case ACT_2DFILTER_LAPLACIAN:
+ filtermode = RAS_2DFilterManager::RAS_2DFILTER_LAPLACIAN;
+ break;
+ case ACT_2DFILTER_SOBEL:
+ filtermode = RAS_2DFilterManager::RAS_2DFILTER_SOBEL;
+ break;
+ case ACT_2DFILTER_PREWITT:
+ filtermode = RAS_2DFilterManager::RAS_2DFILTER_PREWITT;
+ break;
+ case ACT_2DFILTER_GRAYSCALE:
+ filtermode = RAS_2DFilterManager::RAS_2DFILTER_GRAYSCALE;
+ break;
+ case ACT_2DFILTER_SEPIA:
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list