[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