Index: GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/include/RenderingRuns/OgreCausticCubeMapRenderingRun.h
===================================================================
--- GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/include/RenderingRuns/OgreCausticCubeMapRenderingRun.h	(revision 1351)
+++ GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/include/RenderingRuns/OgreCausticCubeMapRenderingRun.h	(revision 1688)
@@ -42,10 +42,17 @@
 								 bool updateAllFace,
 								 float attenuation,
-								 bool useTriangles
+								 bool useTriangles,
+								 bool blurMap
 								 );
 	/**
 		@brief returns the name of the resulting caustic cubemap texture
 	*/
-	String& getCausticCubeMapTextureName(){return name;}
+	const String& getCausticCubeMapTextureName()
+	{
+		if(blurMap)
+			return bluredCausticCubemapTexture->getName();
+		else
+			return name;
+	}
 
 	//inherited
@@ -79,4 +86,8 @@
 	Texture* causticCubemapTexture;
 	/**
+		@brief a pointer to the blurred cubemap texture that was created by this run
+	*/
+	Texture* bluredCausticCubemapTexture;
+	/**
 		@brief the name of the material that should be used when rendering the caustic cubemap
 	*/
@@ -84,4 +95,5 @@
 	float attenuation;
 	bool useTriangles;
+	bool blurMap;
 	
 	//inherited
Index: GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/include/RenderingRuns/OgreDepthShadowMapRenderingRun.h
===================================================================
--- GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/include/RenderingRuns/OgreDepthShadowMapRenderingRun.h	(revision 1670)
+++ GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/include/RenderingRuns/OgreDepthShadowMapRenderingRun.h	(revision 1688)
@@ -42,5 +42,5 @@
 		@brief returns the depth shadow map texture created by this run
 	*/
-	String getDepthMapTextureName();
+	const String& getDepthMapTextureName();
 	
 	/**
Index: GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/include/RenderTechniques/OgreCausticCasterRenderTechnique.h
===================================================================
--- GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/include/RenderTechniques/OgreCausticCasterRenderTechnique.h	(revision 1351)
+++ GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/include/RenderTechniques/OgreCausticCasterRenderTechnique.h	(revision 1688)
@@ -45,4 +45,5 @@
 							float attenuation,
 							bool useTriangles,
+							bool blurCauCubeMap,
 							Pass* pass,
 							OgreRenderable* parentRenderable,
@@ -58,5 +59,5 @@
 		@return name of the caustic cubemap texture
 	*/
-	String& getCausticCubeMapName();
+	const String& getCausticCubeMapName();
 	float getAttenuation(){return attenuation;}
 
@@ -77,4 +78,5 @@
 	float attenuation;
 	bool useTriangles;
+	bool blurCauCubeMap;
 	
 	//inherited
@@ -118,4 +120,5 @@
 	bool useDistance;
 	bool useTriangles;
+	bool blurCauCubeMap;
 	
 
Index: GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderingRuns/OgreCausticCubeMapRenderingRun.cpp
===================================================================
--- GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderingRuns/OgreCausticCubeMapRenderingRun.cpp	(revision 1351)
+++ GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderingRuns/OgreCausticCubeMapRenderingRun.cpp	(revision 1688)
@@ -14,5 +14,6 @@
 														   bool updateAllFace,
 														   float attenuation,
-														   bool useTriangles)
+														   bool useTriangles,
+														   bool blurMap)
 		:CausticCubeMapRenderingRun(startFrame, updateInterval, resolution, updateAllFace)
 		, OgreRenderingRun(startFrame, updateInterval)
@@ -25,4 +26,5 @@
 	this->materialName =  materialName;
 	this->photonMapTexId = photonMapTexId;
+	this->blurMap = blurMap;
 
 	spriteSetName = name + String("_pixelSpriteSet");
@@ -34,4 +36,11 @@
 {
 	causticCubemapTexture = createCubeRenderTexture(name, 
+												Vector3(0,0,0),
+												resolution,
+												PF_FLOAT16_RGBA,
+												0);
+
+	if(blurMap)
+		bluredCausticCubemapTexture = createCubeRenderTexture(name + "_BLURED", 
 												Vector3(0,0,0),
 												resolution,
@@ -72,4 +81,13 @@
 		renderFullscreenGrid(materialName, rt, tex->getWidth(), tex->getHeight());
 
+	if(blurMap)
+	{
+		rt = bluredCausticCubemapTexture->getBuffer(facenum, 0).getPointer()->getRenderTarget();
+		Material*  mat = (Material*) MaterialManager::getSingleton().getByName("GameTools/BlurCubeFace").getPointer();
+		mat->getTechnique(0)->getPass(0)->getTextureUnitState(0)->setTextureName(causticCubemapTexture->getName());
+		mat->getTechnique(0)->getPass(0)->getFragmentProgramParameters()->setNamedConstant("face", facenum);
+		renderFullscreenQuad("GameTools/BlurCubeFace", rt);
+	}
+
 	//rt->writeContentsToFile("caucube" + this->name + StringConverter::toString(facenum) + ".dds");
 }
Index: GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderingRuns/OgreDepthShadowMapRenderingRun.cpp
===================================================================
--- GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderingRuns/OgreDepthShadowMapRenderingRun.cpp	(revision 1670)
+++ GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderingRuns/OgreDepthShadowMapRenderingRun.cpp	(revision 1688)
@@ -105,5 +105,6 @@
 	//depthMapTexture->();
 }
-String OgreDepthShadowMapRenderingRun::getDepthMapTextureName()
+
+const String& OgreDepthShadowMapRenderingRun::getDepthMapTextureName()
 {
 		if(OgreIlluminationManager::getSingleton().getBlurShadowMap())
Index: GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderTechniques/OgreCausticCasterRenderTechnique.cpp
===================================================================
--- GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderTechniques/OgreCausticCasterRenderTechnique.cpp	(revision 1351)
+++ GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderTechniques/OgreCausticCasterRenderTechnique.cpp	(revision 1688)
@@ -17,4 +17,5 @@
 																float attenuation,
 																bool useTriangles,
+																bool blurCauCubeMap,
 																Pass* pass,
 																OgreRenderable* parentRenderable,
@@ -27,4 +28,5 @@
 	this->useTriangles = useTriangles;
 	this->photonMapMaterialName = photonMapMaterialName;
+	this->blurCauCubeMap = blurCauCubeMap;
 	
 	String newMaterialName = causticMapMaterialName + parentRenderable->getName() + "_clone";
@@ -109,5 +111,6 @@
 												updateAllFace,
 												attenuation,
-												useTriangles
+												useTriangles,
+												blurCauCubeMap
 												);
 
@@ -130,5 +133,5 @@
 }
 
-String& OgreCausticCasterRenderTechnique::getCausticCubeMapName()
+const String& OgreCausticCasterRenderTechnique::getCausticCubeMapName()
 {
 	return ((OgreCausticCubeMapRenderingRun*) sharedRuns->getRun(ILLUMRUN_CAUSTIC_CUBEMAP)->asOgreRenderingRun())->
@@ -203,4 +206,10 @@
 		OgreCausticCasterRenderTechniqueFactory* f = (OgreCausticCasterRenderTechniqueFactory*) factory;
 		f->useTriangles =  StringConverter::parseBool(params);
+	}
+
+	void parseBlurCauCubeMap(String& params, RenderTechniqueFactory* factory)
+	{
+		OgreCausticCasterRenderTechniqueFactory* f = (OgreCausticCasterRenderTechniqueFactory*) factory;
+		f->blurCauCubeMap =  StringConverter::parseBool(params);
 	}
 }
@@ -226,4 +235,5 @@
 	this->attributeParsers.insert(AttribParserList::value_type("attenuation", (ILLUM_ATTRIBUTE_PARSER) parseAttenuation));
 	this->attributeParsers.insert(AttribParserList::value_type("use_triangles", (ILLUM_ATTRIBUTE_PARSER) parseUseTriangles));
+	this->attributeParsers.insert(AttribParserList::value_type("blur_caustic_cubemap", (ILLUM_ATTRIBUTE_PARSER) parseBlurCauCubeMap));
 	
 }
@@ -247,4 +257,5 @@
 	updateAllFace = false;
 	useTriangles = false;
+	blurCauCubeMap = false;
 
 	parseParams(params);
@@ -262,4 +273,5 @@
 												attenuation,
 												useTriangles,
+												blurCauCubeMap,
 												pass,
 												parentRenderable,
