[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12497] branches/game_engine/source: 2d Filters updated, now you can use custom filter and write your own GLSL shader program to filter rendering result .
Hamed Zaghaghi
hamed.zaghaghi at gmail.com
Tue Nov 6 13:16:12 CET 2007
Revision: 12497
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12497
Author: zaghaghi
Date: 2007-11-06 13:16:12 +0100 (Tue, 06 Nov 2007)
Log Message:
-----------
2d Filters updated, now you can use custom filter and write your own GLSL shader program to filter rendering result.
Modified Paths:
--------------
branches/game_engine/source/blender/blenloader/intern/readfile.c
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/SCA_2DFilterActuator.cpp
branches/game_engine/source/gameengine/GameLogic/SCA_2DFilterActuator.h
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/Rasterizer/RAS_2DFilterManager.cpp
branches/game_engine/source/gameengine/Rasterizer/RAS_2DFilterManager.h
branches/game_engine/source/gameengine/Rasterizer/RAS_IRenderTools.h
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/blenloader/intern/readfile.c
===================================================================
--- branches/game_engine/source/blender/blenloader/intern/readfile.c 2007-11-06 12:10:59 UTC (rev 12496)
+++ branches/game_engine/source/blender/blenloader/intern/readfile.c 2007-11-06 12:16:12 UTC (rev 12497)
@@ -2820,7 +2820,8 @@
ma->toObject= newlibadr(fd, ob->id.lib, ma->toObject);
}
else if(act->type==ACT_2DFILTER){
- /* bTwoDFilterActuator *_2dfa = act->data; */
+ bTwoDFilterActuator *_2dfa = act->data;
+ _2dfa->text= newlibadr(fd, ob->id.lib, _2dfa->text);
}
act= act->next;
}
Modified: branches/game_engine/source/blender/makesdna/DNA_actuator_types.h
===================================================================
--- branches/game_engine/source/blender/makesdna/DNA_actuator_types.h 2007-11-06 12:10:59 UTC (rev 12496)
+++ branches/game_engine/source/blender/makesdna/DNA_actuator_types.h 2007-11-06 12:16:12 UTC (rev 12497)
@@ -38,6 +38,7 @@
struct Mesh;
struct Scene;
struct Group;
+struct Text;
/* ****************** ACTUATORS ********************* */
@@ -192,14 +193,16 @@
} bVisibilityActuator;
typedef struct bTwoDFilterActuator{
+ char pad[4];
/* 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;
+ int int_arg;
/* a float argument */
float float_arg;
- int int_arg;
+ struct Text *text;
}bTwoDFilterActuator;
typedef struct bActuator {
@@ -404,19 +407,22 @@
#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
+#define ACT_2DFILTER_ENABLED -2
+#define ACT_2DFILTER_DISABLED -1
+#define ACT_2DFILTER_NOFILTER 0
+#define ACT_2DFILTER_MOTIONBLUR 1
+#define ACT_2DFILTER_BLUR 2
+#define ACT_2DFILTER_SHARPEN 3
+#define ACT_2DFILTER_DILATION 4
+#define ACT_2DFILTER_EROSION 5
+#define ACT_2DFILTER_LAPLACIAN 6
+#define ACT_2DFILTER_SOBEL 7
+#define ACT_2DFILTER_PREWITT 8
+#define ACT_2DFILTER_GRAYSCALE 9
+#define ACT_2DFILTER_SEPIA 10
+#define ACT_2DFILTER_INVERT 11
+#define ACT_2DFILTER_CUSTOMFILTER 12
+#define ACT_2DFILTER_NUMBER_OF_FILTERS 13
#endif
Modified: branches/game_engine/source/blender/src/buttons_logic.c
===================================================================
--- branches/game_engine/source/blender/src/buttons_logic.c 2007-11-06 12:10:59 UTC (rev 12496)
+++ branches/game_engine/source/blender/src/buttons_logic.c 2007-11-06 12:16:12 UTC (rev 12497)
@@ -2178,7 +2178,11 @@
case ACT_2DFILTER:
tdfa = act->data;
- ysize= 50;
+ ysize = 50;
+ if(tdfa->type == ACT_2DFILTER_CUSTOMFILTER)
+ {
+ ysize +=20;
+ }
glRects( xco, yco-ysize, xco+width, yco );
uiEmboss( (float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1 );
@@ -2206,12 +2210,19 @@
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");
+ case ACT_2DFILTER_DISABLED:
+ case ACT_2DFILTER_ENABLED:
+ uiDefButI(block, NUM, B_REDR, "Pass Number:", xco+30,yco-44,width-60,19,&tdfa->int_arg,0.0,MAX_RENDER_PASS-1,0.0,0.0,"Set motion blur value");
break;
+ case ACT_2DFILTER_CUSTOMFILTER:
+ uiDefButI(block, NUM, B_REDR, "Pass Number:", xco+30,yco-44,width-60,19,&tdfa->int_arg,0.0,MAX_RENDER_PASS-1,0.0,0.0,"Set motion blur value");
+ uiDefIDPoinBut(block, test_scriptpoin_but, ID_SCRIPT, 1, "Script: ", xco+30,yco-64,width-60, 19, &tdfa->text, "");
+ 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|";
+ str= "2D Filter %t|Motion Blur %x1|Blur %x2|Sharpen %x3|Dilation %x4|Erosion %x5|"
+ "Laplacian %x6|Sobel %x7|Prewitt %x8|Gray Scale %x9|Sepia %x10|Invert %x11|Custom Filter %x12|"
+ "Enable Filter %x-2|Disable Filter %x-1|Remove Filter %x0|";
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;
Modified: branches/game_engine/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp
===================================================================
--- branches/game_engine/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp 2007-11-06 12:10:59 UTC (rev 12496)
+++ branches/game_engine/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp 2007-11-06 12:16:12 UTC (rev 12497)
@@ -475,9 +475,9 @@
}
}
-void KX_BlenderRenderTools::Update2DFilter(RAS_2DFilterManager::RAS_2DFILTER_MODE filtermode, int pass)
+void KX_BlenderRenderTools::Update2DFilter(RAS_2DFilterManager::RAS_2DFILTER_MODE filtermode, int pass, STR_String& text)
{
- m_filtermanager.EnableFilter(filtermode, pass);
+ m_filtermanager.EnableFilter(filtermode, pass, text);
}
void KX_BlenderRenderTools::Render2DFilters(RAS_ICanvas* canvas)
Modified: branches/game_engine/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h
===================================================================
--- branches/game_engine/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h 2007-11-06 12:10:59 UTC (rev 12496)
+++ branches/game_engine/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h 2007-11-06 12:16:12 UTC (rev 12497)
@@ -104,7 +104,7 @@
virtual void MotionBlur(RAS_IRasterizer* rasterizer);
- virtual void Update2DFilter(RAS_2DFilterManager::RAS_2DFILTER_MODE filtermode, int pass);
+ virtual void Update2DFilter(RAS_2DFilterManager::RAS_2DFILTER_MODE filtermode, int pass, STR_String& text);
virtual void Render2DFilters(RAS_ICanvas* canvas);
Modified: branches/game_engine/source/gameengine/Converter/KX_ConvertActuators.cpp
===================================================================
--- branches/game_engine/source/gameengine/Converter/KX_ConvertActuators.cpp 2007-11-06 12:10:59 UTC (rev 12496)
+++ branches/game_engine/source/gameengine/Converter/KX_ConvertActuators.cpp 2007-11-06 12:16:12 UTC (rev 12497)
@@ -37,6 +37,8 @@
#define BLENDER_HACK_DTIME 0.02
+#include "MEM_guardedalloc.h"
+
#include "KX_BlenderSceneConverter.h"
#include "KX_ConvertActuators.h"
@@ -70,7 +72,7 @@
#include "KX_GameObject.h"
/* This little block needed for linking to Blender... */
-
+#include "BKE_text.h"
#include "BLI_blenlib.h"
#include "KX_NetworkMessageActuator.h"
@@ -879,9 +881,18 @@
case ACT_2DFILTER_INVERT:
filtermode = RAS_2DFilterManager::RAS_2DFILTER_INVERT;
break;
+ case ACT_2DFILTER_CUSTOMFILTER:
+ filtermode = RAS_2DFilterManager::RAS_2DFILTER_CUSTOMFILTER;
+ break;
case ACT_2DFILTER_NOFILTER:
filtermode = RAS_2DFilterManager::RAS_2DFILTER_NOFILTER;
break;
+ case ACT_2DFILTER_DISABLED:
+ filtermode = RAS_2DFilterManager::RAS_2DFILTER_DISABLED;
+ break;
+ case ACT_2DFILTER_ENABLED:
+ filtermode = RAS_2DFilterManager::RAS_2DFILTER_ENABLED;
+ break;
default:
filtermode = RAS_2DFilterManager::RAS_2DFILTER_NOFILTER;
break;
@@ -890,6 +901,18 @@
tmp = new SCA_2DFilterActuator(gameobj, filtermode, _2dfilter->flag,
_2dfilter->float_arg,_2dfilter->int_arg,ketsjiEngine->GetRasterizer(),rendertools);
+ if (_2dfilter->text)
+ {
+ char *buf;
+ // this is some blender specific code
+ buf = txt_to_buf(_2dfilter->text);
+ if (buf)
+ {
+ tmp->SetShaderText(STR_String(buf));
+ MEM_freeN(buf);
+ }
+ }
+
baseact = tmp;
}
Modified: branches/game_engine/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp
===================================================================
--- branches/game_engine/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp 2007-11-06 12:10:59 UTC (rev 12496)
+++ branches/game_engine/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp 2007-11-06 12:16:12 UTC (rev 12497)
@@ -8,6 +8,9 @@
#include <iostream>
+SCA_2DFilterActuator::~SCA_2DFilterActuator()
+{
+}
SCA_2DFilterActuator::SCA_2DFilterActuator(
SCA_IObject *gameobj,
@@ -28,13 +31,13 @@
{
}
-
-SCA_2DFilterActuator::~SCA_2DFilterActuator()
+void SCA_2DFilterActuator::SetShaderText(STR_String& text)
{
-
+ m_shaderText = text;
}
+
CValue* SCA_2DFilterActuator::GetReplica()
{
SCA_2DFilterActuator* replica = new SCA_2DFilterActuator(*this);
@@ -69,7 +72,7 @@
}
else if(m_type < RAS_2DFilterManager::RAS_2DFILTER_NUMBER_OF_FILTERS)
{
- m_rendertools->Update2DFilter(m_type, m_int_arg);
+ m_rendertools->Update2DFilter(m_type, m_int_arg, m_shaderText);
}
return true;
}
Modified: branches/game_engine/source/gameengine/GameLogic/SCA_2DFilterActuator.h
===================================================================
--- branches/game_engine/source/gameengine/GameLogic/SCA_2DFilterActuator.h 2007-11-06 12:10:59 UTC (rev 12496)
+++ branches/game_engine/source/gameengine/GameLogic/SCA_2DFilterActuator.h 2007-11-06 12:16:12 UTC (rev 12497)
@@ -16,6 +16,7 @@
short m_flag;
float m_float_arg;
int m_int_arg;
+ STR_String m_shaderText;
RAS_IRasterizer* m_rasterizer;
RAS_IRenderTools* m_rendertools;
@@ -32,7 +33,7 @@
PyTypeObject* T=&Type
);
-
+ void SetShaderText(STR_String& text);
virtual ~SCA_2DFilterActuator();
virtual bool Update();
Modified: branches/game_engine/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp
===================================================================
--- branches/game_engine/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp 2007-11-06 12:10:59 UTC (rev 12496)
+++ branches/game_engine/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp 2007-11-06 12:16:12 UTC (rev 12497)
@@ -593,9 +593,9 @@
}
}
-void GPC_RenderTools::Update2DFilter(RAS_2DFilterManager::RAS_2DFILTER_MODE filtermode, int pass)
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list