[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [15546] trunk/blender/source: improvement of 2d-filter custom shader,

Hamed Zaghaghi hamed.zaghaghi at gmail.com
Sat Jul 12 12:21:38 CEST 2008


Revision: 15546
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15546
Author:   zaghaghi
Date:     2008-07-12 12:21:37 +0200 (Sat, 12 Jul 2008)

Log Message:
-----------
improvement of 2d-filter custom shader, 
some bugfixes,
now you can use depth buffer and luminance buffer without any settings,
also you can use object's properties in a shader

Modified Paths:
--------------
    trunk/blender/source/blender/makesdna/DNA_actuator_types.h
    trunk/blender/source/blender/src/buttons_logic.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/Expressions/Value.cpp
    trunk/blender/source/gameengine/Expressions/Value.h
    trunk/blender/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp
    trunk/blender/source/gameengine/GameLogic/SCA_2DFilterActuator.h
    trunk/blender/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp
    trunk/blender/source/gameengine/GamePlayer/common/GPC_RenderTools.h
    trunk/blender/source/gameengine/Rasterizer/CMakeLists.txt
    trunk/blender/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp
    trunk/blender/source/gameengine/Rasterizer/RAS_2DFilterManager.h
    trunk/blender/source/gameengine/Rasterizer/RAS_IRenderTools.h
    trunk/blender/source/gameengine/Rasterizer/SConscript

Modified: trunk/blender/source/blender/makesdna/DNA_actuator_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_actuator_types.h	2008-07-12 06:49:33 UTC (rev 15545)
+++ trunk/blender/source/blender/makesdna/DNA_actuator_types.h	2008-07-12 10:21:37 UTC (rev 15546)
@@ -196,9 +196,7 @@
 } bVisibilityActuator;
 
 typedef struct bTwoDFilterActuator{
-	char pad[2];
-	/* bitwise flag for enabling or disabling depth(bit 0) and luminance(bit 1) */
-	short texture_flag;
+	char pad[4];
 	/* Tells what type of 2D Filter */
 	short type;
 	/* (flag == 0) means 2D filter is activate and

Modified: trunk/blender/source/blender/src/buttons_logic.c
===================================================================
--- trunk/blender/source/blender/src/buttons_logic.c	2008-07-12 06:49:33 UTC (rev 15545)
+++ trunk/blender/source/blender/src/buttons_logic.c	2008-07-12 10:21:37 UTC (rev 15546)
@@ -2536,11 +2536,7 @@
 				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/2-32, 19, &tdfa->text, "");
-				uiDefButS(block, TOG|BIT|0, B_REDR, "Depth", xco+width/2+2 , yco - 64, width/4-16 , 19,
-						&tdfa->texture_flag, 0.0, 0.0, 0, 0, "Includes Depth Texture (bgl_DepthTexture)");
-				uiDefButS(block, TOG|BIT|1, B_REDR, "Luminance", xco+3*width/4-14 , yco - 64, width/4-16 , 19,
-						&tdfa->texture_flag, 0.0, 0.0, 0, 0, "Includes Luminance Texture (bgl_LuminanceTexture)");
+				uiDefIDPoinBut(block, test_scriptpoin_but, ID_SCRIPT, 1, "Script: ", xco+30,yco-64,width-60, 19, &tdfa->text, "");
 				break;
 		}
 		

Modified: trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp
===================================================================
--- trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp	2008-07-12 06:49:33 UTC (rev 15545)
+++ trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp	2008-07-12 10:21:37 UTC (rev 15546)
@@ -483,9 +483,9 @@
 	}
 }
 
-void KX_BlenderRenderTools::Update2DFilter(RAS_2DFilterManager::RAS_2DFILTER_MODE filtermode, int pass, STR_String& text, short texture_flag)
+void KX_BlenderRenderTools::Update2DFilter(vector<STR_String>& propNames, void* gameObj, RAS_2DFilterManager::RAS_2DFILTER_MODE filtermode, int pass, STR_String& text)
 {
-	m_filtermanager.EnableFilter(filtermode, pass, text, texture_flag);
+	m_filtermanager.EnableFilter(propNames, gameObj, filtermode, pass, text);
 }
 
 void KX_BlenderRenderTools::Render2DFilters(RAS_ICanvas* canvas)

Modified: trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h
===================================================================
--- trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h	2008-07-12 06:49:33 UTC (rev 15545)
+++ trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h	2008-07-12 10:21:37 UTC (rev 15546)
@@ -101,7 +101,7 @@
 
 	virtual void MotionBlur(RAS_IRasterizer* rasterizer);
 
-	virtual void Update2DFilter(RAS_2DFilterManager::RAS_2DFILTER_MODE filtermode, int pass, STR_String& text, short texture_flag);
+	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);
 

Modified: trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp	2008-07-12 06:49:33 UTC (rev 15545)
+++ trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp	2008-07-12 10:21:37 UTC (rev 15546)
@@ -1000,7 +1000,7 @@
 			}
             
 			tmp = new SCA_2DFilterActuator(gameobj, filtermode, _2dfilter->flag,
-				_2dfilter->float_arg,_2dfilter->int_arg,_2dfilter->texture_flag,ketsjiEngine->GetRasterizer(),rendertools);
+				_2dfilter->float_arg,_2dfilter->int_arg,ketsjiEngine->GetRasterizer(),rendertools);
 
 			if (_2dfilter->text)
 			{

Modified: trunk/blender/source/gameengine/Expressions/Value.cpp
===================================================================
--- trunk/blender/source/gameengine/Expressions/Value.cpp	2008-07-12 06:49:33 UTC (rev 15545)
+++ trunk/blender/source/gameengine/Expressions/Value.cpp	2008-07-12 10:21:37 UTC (rev 15546)
@@ -405,8 +405,21 @@
 	return false;
 }
 
+//
+// Get Property Names
+//
+vector<STR_String> CValue::GetPropertyNames()
+{
+	vector<STR_String> result;
+	if(!m_pNamedPropertyArray) return result;
+	for ( std::map<STR_String,CValue*>::iterator it = m_pNamedPropertyArray->begin();
+	!(it == m_pNamedPropertyArray->end());it++)
+	{
+		result.push_back((*it).first);
+	}
+	return result;
+}
 
-
 //
 // Clear all properties
 //

Modified: trunk/blender/source/gameengine/Expressions/Value.h
===================================================================
--- trunk/blender/source/gameengine/Expressions/Value.h	2008-07-12 06:49:33 UTC (rev 15545)
+++ trunk/blender/source/gameengine/Expressions/Value.h	2008-07-12 10:21:37 UTC (rev 15546)
@@ -286,6 +286,7 @@
 	STR_String			GetPropertyText(const STR_String & inName,const STR_String& deftext="");						// Get text description of property with name <inName>, returns an empty string if there is no property named <inName>
 	float				GetPropertyNumber(const STR_String& inName,float defnumber);
 	virtual bool		RemoveProperty(const STR_String & inName);						// Remove the property named <inName>, returns true if the property was succesfully removed, false if property was not found or could not be removed
+	virtual vector<STR_String>	GetPropertyNames();
 	virtual void		ClearProperties();										// Clear all properties
 
 	virtual void		SetPropertiesModified(bool inModified);					// Set all properties' modified flag to <inModified>

Modified: trunk/blender/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp
===================================================================
--- trunk/blender/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp	2008-07-12 06:49:33 UTC (rev 15545)
+++ trunk/blender/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp	2008-07-12 10:21:37 UTC (rev 15546)
@@ -7,7 +7,6 @@
 #endif
 #include <iostream>
 
-
 SCA_2DFilterActuator::~SCA_2DFilterActuator()
 {
 }
@@ -18,7 +17,6 @@
 		short flag,
 		float float_arg,
 		int int_arg,
-		short texture_flag,
 		RAS_IRasterizer* rasterizer,
 		RAS_IRenderTools* rendertools,
         PyTypeObject* T)
@@ -26,11 +24,15 @@
      m_type(type),
 	 m_flag(flag),
 	 m_int_arg(int_arg),
-	 m_texture_flag(texture_flag),
 	 m_float_arg(float_arg),
 	 m_rasterizer(rasterizer),
 	 m_rendertools(rendertools)
 {
+	m_gameObj = NULL;
+	if(gameobj){
+		m_propNames = gameobj->GetPropertyNames();
+		m_gameObj = gameobj;
+	}
 }
 
 void SCA_2DFilterActuator::SetShaderText(STR_String text)
@@ -52,8 +54,6 @@
 
 bool SCA_2DFilterActuator::Update()
 {
-	bool result = false;
-
 	bool bNegativeEvent = IsNegativeEvent();
 	RemoveAllEvents();
 
@@ -74,7 +74,7 @@
 	}
 	else if(m_type < RAS_2DFilterManager::RAS_2DFILTER_NUMBER_OF_FILTERS)
 	{
-		m_rendertools->Update2DFilter(m_type, m_int_arg, m_shaderText, m_texture_flag);
+		m_rendertools->Update2DFilter(m_propNames, m_gameObj, m_type, m_int_arg, m_shaderText);
 	}
     return true;
 }

Modified: trunk/blender/source/gameengine/GameLogic/SCA_2DFilterActuator.h
===================================================================
--- trunk/blender/source/gameengine/GameLogic/SCA_2DFilterActuator.h	2008-07-12 06:49:33 UTC (rev 15545)
+++ trunk/blender/source/gameengine/GameLogic/SCA_2DFilterActuator.h	2008-07-12 10:21:37 UTC (rev 15546)
@@ -5,18 +5,17 @@
 #include "RAS_IRenderTools.h"
 #include "SCA_IActuator.h"
 
-
 class SCA_2DFilterActuator : public SCA_IActuator
 {
     Py_Header;
 
 private:
-	
+	vector<STR_String> m_propNames;
+	void * m_gameObj;
 	RAS_2DFilterManager::RAS_2DFILTER_MODE m_type;
 	short m_flag;
 	float m_float_arg;
 	int   m_int_arg;
-	short m_texture_flag;
 	STR_String	m_shaderText;
 	RAS_IRasterizer* m_rasterizer;
 	RAS_IRenderTools* m_rendertools;
@@ -29,7 +28,6 @@
 		short flag,
 		float float_arg,
 		int int_arg,
-		short texture_flag,
 		RAS_IRasterizer* rasterizer,
 		RAS_IRenderTools* rendertools,
         PyTypeObject* T=&Type

Modified: trunk/blender/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp
===================================================================
--- trunk/blender/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp	2008-07-12 06:49:33 UTC (rev 15545)
+++ trunk/blender/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp	2008-07-12 10:21:37 UTC (rev 15546)
@@ -602,9 +602,9 @@
 	}
 }
 
-void GPC_RenderTools::Update2DFilter(RAS_2DFilterManager::RAS_2DFILTER_MODE filtermode, int pass, STR_String& text, short texture_flag)
+void GPC_RenderTools::Update2DFilter(vector<STR_String>& propNames, void* gameObj, RAS_2DFilterManager::RAS_2DFILTER_MODE filtermode, int pass, STR_String& text)
 {
-	m_filtermanager.EnableFilter(filtermode, pass, text, texture_flag);
+	m_filtermanager.EnableFilter(propNames, gameObj, filtermode, pass, text);
 }
 
 void GPC_RenderTools::Render2DFilters(RAS_ICanvas* canvas)

Modified: trunk/blender/source/gameengine/GamePlayer/common/GPC_RenderTools.h
===================================================================
--- trunk/blender/source/gameengine/GamePlayer/common/GPC_RenderTools.h	2008-07-12 06:49:33 UTC (rev 15545)
+++ trunk/blender/source/gameengine/GamePlayer/common/GPC_RenderTools.h	2008-07-12 10:21:37 UTC (rev 15546)
@@ -142,7 +142,7 @@
 
 	virtual void MotionBlur(RAS_IRasterizer* rasterizer);
 
-	virtual void Update2DFilter(RAS_2DFilterManager::RAS_2DFILTER_MODE filtermode, int pass, STR_String& text, short texture_flag);
+	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);
 

Modified: trunk/blender/source/gameengine/Rasterizer/CMakeLists.txt
===================================================================
--- trunk/blender/source/gameengine/Rasterizer/CMakeLists.txt	2008-07-12 06:49:33 UTC (rev 15545)

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list