Index: GTP/trunk/App/Demos/Illum/Ogre/Media/materials/scripts/Particles.material
===================================================================
--- GTP/trunk/App/Demos/Illum/Ogre/Media/materials/scripts/Particles.material	(revision 1336)
+++ GTP/trunk/App/Demos/Illum/Ogre/Media/materials/scripts/Particles.material	(revision 1424)
@@ -109,8 +109,7 @@
 		{
 			texture 
-		}
-			 
-		
+		}		
 	}
   }
 }
+
Index: GTP/trunk/App/Demos/Illum/Ogre/Media/materials/scripts/GameTools.material
===================================================================
--- GTP/trunk/App/Demos/Illum/Ogre/Media/materials/scripts/GameTools.material	(revision 1336)
+++ GTP/trunk/App/Demos/Illum/Ogre/Media/materials/scripts/GameTools.material	(revision 1424)
@@ -11,8 +11,7 @@
 			//scene_blend_op_alpha add
 			//scene_blend_alpha add
+			depth_check off
 			depth_write off
 
-			ambient 1 0 0 1
-			diffuse 1 0 0 1
 			texture_unit
 			{
@@ -212,2 +211,37 @@
     }
 }
+
+vertex_program PhaseVS hlsl
+{
+	source GameTools_Phase.hlsl
+	entry_point PhaseVS
+	target vs_2_0
+} 
+
+fragment_program Phase_HenyeyGreenSteinPS hlsl
+{
+	source GameTools_Phase.hlsl
+	entry_point HenyeyGreensteinPS
+	target ps_2_0
+} 
+
+material Phase_HenyeyGreenStein
+{ 
+
+   technique 
+   { 
+      
+      pass 
+      { 		
+		vertex_program_ref PhaseVS
+        	{       
+                     
+	    	} 
+		fragment_program_ref  Phase_HenyeyGreenSteinPS
+       		{ 
+				
+        	}	        
+        
+       }
+    }
+}
Index: GTP/trunk/App/Demos/Illum/Ogre/Media/materials/scripts/GameTools_HPS.material
===================================================================
--- GTP/trunk/App/Demos/Illum/Ogre/Media/materials/scripts/GameTools_HPS.material	(revision 1355)
+++ GTP/trunk/App/Demos/Illum/Ogre/Media/materials/scripts/GameTools_HPS.material	(revision 1424)
@@ -75,5 +75,7 @@
 					particle_script GameTools/Little
 					perspective false
-				}			
+					vparam_radius baseRadius									
+				}
+								
 			}
 				
@@ -82,5 +84,5 @@
 				param_named_auto worldViewProj worldviewproj_matrix 
 				param_named_auto worldView worldview_matrix
-				param_named_auto Proj projection_matrix	    
+				param_named_auto Proj projection_matrix					    
 			} 
 			fragment_program_ref  HPS_Smoke_L_PS
@@ -92,8 +94,10 @@
 			scene_blend alpha_blend
 			
-			texture_unit
-			{
-				
-			}
+			//impostor texture
+			texture_unit
+			{
+				
+			}
+			
 
 		}
@@ -101,4 +105,134 @@
 }
 
-
-
+vertex_program HPS_Smoke_L_Depth_VS hlsl
+{
+	source GameTools_HPS_Smoke_L_Depth.hlsl
+	entry_point HPS_Smoke_L_Depth_Illum_VS
+	target vs_3_0
+} 
+
+fragment_program HPS_Smoke_L_Depth_PS hlsl
+{
+	source GameTools_HPS_Smoke_L_Depth.hlsl
+	entry_point HPS_Smoke_L_Depth_Illum_PS
+	target ps_3_0
+} 
+
+
+
+material HPS_SMOKE_L_Depth
+{
+	technique
+	{
+		pass
+		{	
+			IllumTechniques
+			{
+				RenderTechnique HPS
+				{
+					particle_script GameTools/Little
+					perspective false
+					vparam_radius baseRadius
+					update_interval 1				
+				}
+				RenderTechnique SphericalBillboard
+				{
+					texture_unit_id		1					
+				}			
+				RenderTechnique IllumVolume
+				{
+					update_interval 1
+					//depths 4
+					resolution 128
+				}	
+			}
+				
+			vertex_program_ref HPS_Smoke_L_Depth_VS
+			{       
+				param_named_auto worldViewProj worldviewproj_matrix 
+				param_named_auto worldView worldview_matrix
+				param_named_auto worldViewInv inverse_worldview_matrix
+				param_named_auto Proj projection_matrix	
+				param_named_auto width viewport_width 	
+				param_named_auto height viewport_height								    
+			} 
+			fragment_program_ref  HPS_Smoke_L_Depth_PS
+			{ 
+				param_named_auto Proj projection_matrix
+				param_named_auto farplane far_clip_distance
+				
+				
+			}
+			
+			depth_check off			
+			depth_write off
+			scene_blend alpha_blend
+			
+			//impostor texture
+			texture_unit
+			{
+				//filtering none
+			}
+			//scene depth texture
+			texture_unit
+			{
+				filtering none
+			}
+			//lightVolume
+			texture_unit
+			{
+				//filtering none
+			}
+
+		}
+	}
+}
+
+vertex_program Smoke_IllumVolume_VS hlsl
+{
+	source GameTools_Smoke_IllumVolume.hlsl
+	entry_point SmokeIllumVolumeVS
+	target vs_3_0
+} 
+
+fragment_program HPS_IllumVolume_PS hlsl
+{
+	source GameTools_Smoke_IllumVolume.hlsl
+	entry_point SmokeIllumVolumePS
+	target ps_3_0
+} 
+
+material Smoke_IllumVolume
+{ 
+
+   technique 
+   { 
+   	pass 
+      { 
+		
+		cull_hardware none
+		cull_software none
+		lighting off
+		scene_blend zero one_minus_src_colour
+		depth_write off
+
+		vertex_program_ref Smoke_IllumVolume_VS
+			{       
+				param_named_auto worldViewProj worldviewproj_matrix 
+				param_named_auto worldView worldview_matrix
+				param_named_auto Proj projection_matrix	    
+			} 
+		fragment_program_ref  HPS_IllumVolume_PS
+			{ 
+			 
+			}
+
+		texture_unit
+		{
+		texture pamacs.dds
+		}
+
+       }
+    }
+}
+
Index: GTP/trunk/App/Demos/Illum/Ogre/Media/materials/programs/GameTools_Smoke_IllumVolume.hlsl
===================================================================
--- GTP/trunk/App/Demos/Illum/Ogre/Media/materials/programs/GameTools_Smoke_IllumVolume.hlsl	(revision 1424)
+++ GTP/trunk/App/Demos/Illum/Ogre/Media/materials/programs/GameTools_Smoke_IllumVolume.hlsl	(revision 1424)
@@ -0,0 +1,53 @@
+struct VS_OUT
+{
+	float4 hPosition	: POSITION;
+	float4 texCoord		: TEXCOORD0;
+	float4 color		: COLOR0;
+};
+
+VS_OUT SmokeIllumVolumeVS(float4 position : POSITION,	
+		float4 texCoord : TEXCOORD0,
+		float4 color 	: COLOR0,
+		uniform float baseRadius,
+		uniform float4x4 worldView,
+		uniform float4x4 Proj,
+		uniform float4x4 worldViewProj)
+{
+	VS_OUT OUT;
+
+   texCoord.y = 1.0 - texCoord.y;
+   float2 offset = texCoord.zw * baseRadius;
+   float4 cPosition = mul(worldView, position);
+   cPosition.xy += offset;
+   
+   OUT.hPosition = mul( Proj, cPosition );
+   OUT.texCoord = texCoord;
+   OUT.color = 1;
+   
+   float z = OUT.hPosition.z / OUT.hPosition.w;
+	
+   float4 planes = float4(0.33, 0.5, 0.66, 1);
+   if(z > planes.x)
+	{
+		OUT.color.r = 0;
+	}
+	if(z > planes.y)
+	{
+		OUT.color.g = 0;
+	}
+	if(z > planes.z)
+	{
+		OUT.color.b = 0;
+	}
+
+   
+   return OUT;
+}
+
+
+float4 SmokeIllumVolumePS(VS_OUT IN ,
+		uniform sampler2D colorTexture : register(s0)):COLOR
+{
+
+	return tex2D( colorTexture, IN.texCoord.xy).a * 0.1 * IN.color;
+}
Index: GTP/trunk/App/Demos/Illum/Ogre/Media/materials/programs/GameTools_HPS_Smoke_S.hlsl
===================================================================
--- GTP/trunk/App/Demos/Illum/Ogre/Media/materials/programs/GameTools_HPS_Smoke_S.hlsl	(revision 1355)
+++ GTP/trunk/App/Demos/Illum/Ogre/Media/materials/programs/GameTools_HPS_Smoke_S.hlsl	(revision 1424)
@@ -7,9 +7,10 @@
 	float r				: TEXCOORD2;	
 	float4 center		: TEXCOORD3;
+	float4 Color		: TEXCOORD4;
 };
 
 VS_OUT HPS_Smoke_S_VS (float4 position : POSITION,	
 		float4 texCoord : TEXCOORD0,
-		
+		float4 Color: COLOR0,
 		uniform float4x4 worldView,
 		uniform float4x4 Proj,
@@ -28,5 +29,6 @@
     OUT.hPosition = mul( Proj, cPosition );
      
-    OUT.texCoord = texCoord.xy;    
+    OUT.texCoord = texCoord.xy;
+    OUT.Color = Color;    
 	return OUT;
 } 
@@ -42,5 +44,5 @@
 	float alpha = 0;
 		
-	float d = length( IN.cPosition.xyz - IN.center.xyz);
+	float d = length( IN.cPosition.xy- IN.center.xy);
 	
 	if( d < IN.r )
@@ -53,6 +55,6 @@
 	 fPosition = mul(Proj, fPosition);
 	 bPosition = mul(Proj, bPosition);
-	 f = (fPosition.z / fPosition.w + 1.0) / 2.0;
-	 b = (bPosition.z / bPosition.w + 1.0) / 2.0;
+	 f = fPosition.z / fPosition.w;
+	 b = bPosition.z / bPosition.w;
 	 
 	 alpha = pow(w / IN.r, 4) * 0.5;		
@@ -63,5 +65,5 @@
 	Color.r = b;
 	Color.g = 1 - f;
-	Color.a = alpha;
+	Color.a = alpha * IN.Color.a;
 	//Color.a = tex2D(Texture, IN.texCoord).a * 0.2;
 	
Index: GTP/trunk/App/Demos/Illum/Ogre/Media/materials/programs/GameTools_HPS_Smoke_L_Depth.hlsl
===================================================================
--- GTP/trunk/App/Demos/Illum/Ogre/Media/materials/programs/GameTools_HPS_Smoke_L_Depth.hlsl	(revision 1424)
+++ GTP/trunk/App/Demos/Illum/Ogre/Media/materials/programs/GameTools_HPS_Smoke_L_Depth.hlsl	(revision 1424)
@@ -0,0 +1,264 @@
+#define method1
+
+struct VS_OUT
+{
+	float4 hPosition	: POSITION;
+	float4 cPosition	: TEXCOORD1;
+	float2 texCoord		: TEXCOORD0;
+	float r				: TEXCOORD2;	
+	float4 center		: TEXCOORD3;
+	float4 Color		: TEXCOORD4;	
+	float2 screenCoord	: TEXCOORD5;
+};
+
+VS_OUT HPS_Smoke_L_Depth_VS (float4 position : POSITION,	
+		float4 texCoord : TEXCOORD0,
+		float4 Color: COLOR0,
+		uniform float baseRadius,
+		uniform float4x4 worldView,
+		uniform float4x4 Proj,
+		uniform float4x4 worldViewProj)
+{
+	VS_OUT OUT;
+	//texCoord.z = normalize(texCoord.z);
+	//texCoord.w = normalize(texCoord.w);
+    float2 offset = texCoord.zw * baseRadius;
+	OUT.r = abs(offset.x);
+	float4 cPosition;   
+	cPosition = mul(worldView, position);
+	OUT.center = cPosition;	
+	cPosition.xy += offset;	
+	OUT.cPosition = cPosition;
+	OUT.cPosition.z *= -1;
+	//OUT.cPosition.z = OUT.cPosition.z - OUT.r;	
+	
+    OUT.hPosition = mul( Proj, cPosition );
+    float4 sPosition = OUT.hPosition / OUT.hPosition.w;
+    OUT.screenCoord = (sPosition.xy + float2(1, 1)) / 2.0;
+    OUT.screenCoord.y = 1.0 - OUT.screenCoord.y;
+     
+    OUT.texCoord = texCoord.xy;  
+    OUT.Color = Color;  
+	return OUT;
+} 
+
+
+float4 HPS_Smoke_L_Depth_PS(VS_OUT IN,
+						uniform float4x4 Proj,
+						uniform sampler2D Texture  : register(s0),
+						uniform sampler2D depthTexture : register(s1),
+						uniform float farplane,
+						uniform float width = 800,
+						uniform float height = 600
+							) : COLOR
+{
+	float4 Color = 0;
+	float4 impostor = tex2D(Texture, IN.texCoord);
+	float f = 1.0 - impostor.g;
+	float b = impostor.r;
+	float alpha = 0;
+	
+	if(b == 0)
+		discard;
+	
+	float2 halfpixel = float2(1.0 / width, 1.0 / height);
+    IN.screenCoord += halfpixel;
+   
+	float sceneDepth = tex2D(depthTexture, IN.screenCoord).r;
+	if(sceneDepth == 0)
+		//discard;
+		sceneDepth = farplane;
+	
+	float size = 2.0 * IN.r;
+	float frontDepth = IN.cPosition.z + size * (f - 0.5);
+	float backDepth = IN.cPosition.z +  size * (b - 0.5);
+	
+	alpha = (sceneDepth - frontDepth) / (backDepth - frontDepth);
+	alpha = saturate(alpha) * impostor.a;
+	
+	//Color = float4(Color.g, 0, 0, 1);
+	Color = float4(1, 1, 1, alpha) * IN.Color;
+	//Color = float4(b - 0.5, 0, 0, 1);
+	//Color = sceneDepth / farplane;
+	//Color = 1;
+	return Color; 
+	
+}
+
+struct VS_OUT_ILLUM
+{
+	float4 hPosition	: POSITION;
+	float4 cPosition	: TEXCOORD1;
+	float2 texCoord		: TEXCOORD0;
+	float r				: TEXCOORD2;	
+	float4 center		: TEXCOORD3;
+	float4 Color		: TEXCOORD4;	
+	float2 screenCoord	: TEXCOORD5;
+	float4 lightCoord	: TEXCOORD6;
+};
+
+VS_OUT_ILLUM HPS_Smoke_L_Depth_Illum_VS (float4 position : POSITION,	
+		float4 texCoord : TEXCOORD0,
+		float4 Color: COLOR0,
+		uniform float width,
+		uniform float height,
+		uniform float baseRadius,
+		uniform float4x4 worldView,
+		uniform float4x4 worldViewInv,
+		uniform float4x4 lightViewProj,
+		uniform float4x4 Proj,
+		uniform float4x4 worldViewProj)
+{
+	VS_OUT_ILLUM OUT;
+	//texCoord.z = normalize(texCoord.z);
+	//texCoord.w = normalize(texCoord.w);
+    float2 offset = texCoord.zw * baseRadius;
+	OUT.r = abs(offset.x);
+	float4 cPosition;   
+	cPosition = mul(worldView, position);
+	OUT.center = cPosition;	
+	cPosition.xy += offset;	
+	OUT.cPosition = cPosition;
+	OUT.cPosition.z *= -1;
+	//OUT.cPosition.z = OUT.cPosition.z - OUT.r;	
+	
+    OUT.hPosition = mul( Proj, cPosition );
+    float4 sPosition = OUT.hPosition / OUT.hPosition.w;
+    OUT.screenCoord = (sPosition.xy + float2(1, 1)) / 2.0;
+    OUT.screenCoord.y = 1.0 - OUT.screenCoord.y;
+    float2 halfpixel = float2(1.0 / width, 1.0 / height);
+    OUT.screenCoord += halfpixel;
+   
+     
+    OUT.texCoord = texCoord.xy;  
+    OUT.Color = Color;
+    float4 wPosition = mul(worldViewInv, cPosition);
+    OUT.lightCoord = mul(lightViewProj, wPosition);
+	return OUT;
+} 
+
+float ext(float z, sampler2D illumVolume, float2 lightCoord)
+{
+	float4 extintion = tex2D(illumVolume, lightCoord);
+	
+	float intensities[5];
+	intensities[0] = 1.0;
+	intensities[1] = extintion.r;
+	intensities[2] = extintion.g;
+	intensities[3] = extintion.b;
+	intensities[4] = extintion.a;
+	
+	z = 4.0 * z;
+	int start = floor(z);
+	return lerp( intensities[start], intensities[start + 1], z - ((float) start));	
+}
+
+float4 HPS_Smoke_L_Depth_Illum_PS(VS_OUT_ILLUM IN,
+						uniform float4x4 Proj,
+						uniform sampler2D Texture  : register(s0),
+						uniform sampler2D depthTexture : register(s1),
+						uniform sampler2D illumVolume : register(s2),
+						uniform float farplane						
+							) : COLOR
+{
+	float4 Color = 0;
+	float4 impostor = tex2D(Texture, IN.texCoord);
+	float f = 1.0 - impostor.g;
+	float b = impostor.r;
+	float alpha = 0;
+	
+	if(b == 0)
+		discard;	
+
+	float sceneDepth = tex2D(depthTexture, IN.screenCoord).r;
+	if(sceneDepth == 0)
+	{
+		alpha = impostor.a;
+	}
+	else
+	{	
+		float size = 2.0 * IN.r;
+		float frontDepth = IN.cPosition.z + size * (f - 0.5);
+		float backDepth = IN.cPosition.z +  size * (b - 0.5);
+		
+		alpha = (sceneDepth - frontDepth) / (backDepth - frontDepth);
+		alpha = saturate(alpha) * impostor.a;
+	}
+	
+	float2 lightCoord;
+	lightCoord = (IN.lightCoord.xy + float2(1.0, 1.0)) / 2.0;
+	lightCoord.y = 1.0 - lightCoord.y;
+	float z = IN.lightCoord.z / IN.lightCoord.w;
+	
+#ifdef method1
+	
+		float4 extintion = tex2D(illumVolume, lightCoord);
+	
+		float intensities[5];
+		intensities[0] = 1.0;
+		intensities[1] = extintion.r;
+		intensities[2] = extintion.g;
+		intensities[3] = extintion.b;
+		intensities[4] = extintion.a;
+			
+		float3 start;
+		float3 end;
+		float3 temp = 1.0;
+		float t;
+		
+		float4 planes = float4(0.33, 0.5, 0.66, 1);
+		if(z < planes.x)
+		{
+			start = intensities[0];
+			end = intensities[1];
+			t = z / planes.x;
+			temp = lerp(start, end, t);				
+		}
+		if(z > planes.x && z < planes.y)
+		{
+			start = intensities[1];
+			end = intensities[2];
+			t = (z - planes.x) / (planes.y - planes.x);
+			temp = lerp(start, end, t);					
+		}
+		if(z > planes.y && z < planes.z)
+		{
+			start = intensities[2];
+			end = intensities[3];
+			t = (z - planes.y) / (planes.z - planes.y);
+			temp = lerp(start, end, t);				
+		}
+		if(z > planes.z)
+		{
+			start = intensities[3];
+			end = intensities[4];
+			t = (z - planes.z) / (planes.a - planes.z);
+			temp = lerp(start, end, t);					
+		}
+		IN.Color.rgb *= temp;
+
+#else
+	
+	float4 extintion = tex3D(illumVolume, float3(lightCoord, z));
+	IN.Color.rgb *= extintion;
+	/*
+	float intensities[5];
+	intensities[0] = 1.0;
+	intensities[1] = extintion.r;
+	intensities[2] = extintion.g;
+	intensities[3] = extintion.b;
+	intensities[4] = extintion.a;
+	
+	z = 4.0 * z;
+	int start = floor(z);
+	float ext = lerp( intensities[start], intensities[start + 1], z - ((float) start));	
+	IN.Color.rgb *= ext;*/
+
+#endif
+	
+	Color = float4(1, 1, 1, alpha) * IN.Color;
+	return Color; 
+	
+}
+
+
Index: GTP/trunk/App/Demos/Illum/Ogre/Media/materials/programs/GameTools_Phase.hlsl
===================================================================
--- GTP/trunk/App/Demos/Illum/Ogre/Media/materials/programs/GameTools_Phase.hlsl	(revision 1424)
+++ GTP/trunk/App/Demos/Illum/Ogre/Media/materials/programs/GameTools_Phase.hlsl	(revision 1424)
@@ -0,0 +1,29 @@
+struct VS_INPUT {           // vertex shader input
+    float4 Position : POSITION;
+};
+
+struct VS_OUTPUT {          // vertex shader output, pixel shader input
+    float4 hPosition : POSITION;
+    float2 Position  : TEXCOORD0;
+};
+
+VS_OUTPUT PhaseVS(VS_INPUT IN) {
+	VS_OUTPUT OUT;
+    OUT.hPosition = IN.Position;
+    OUT.Position = IN.Position.xy;
+    return OUT;
+}
+
+float4 HenyeyGreensteinPS(VS_OUTPUT IN):COLOR0
+{
+	float4 Color;
+	
+	float2 UV = IN.Position;
+	float g2 = UV.x * UV.x;
+	float phase = 3 * (1 - g2) * (1 + UV.y * UV.y) / 2 
+		    /(2 + g2) / pow((1 + g2 - 2 * (UV.y) * (UV.x)), 1.5);
+	Color=float4(phase, phase, phase, 1);
+	
+	return Color;
+
+}
Index: GTP/trunk/App/Demos/Illum/Ogre/Media/materials/programs/GameTools_HPS_Smoke_L.hlsl
===================================================================
--- GTP/trunk/App/Demos/Illum/Ogre/Media/materials/programs/GameTools_HPS_Smoke_L.hlsl	(revision 1355)
+++ GTP/trunk/App/Demos/Illum/Ogre/Media/materials/programs/GameTools_HPS_Smoke_L.hlsl	(revision 1424)
@@ -7,9 +7,11 @@
 	float r				: TEXCOORD2;	
 	float4 center		: TEXCOORD3;
+	float4 Color		: TEXCOORD4;	
 };
 
 VS_OUT HPS_Smoke_L_VS (float4 position : POSITION,	
 		float4 texCoord : TEXCOORD0,
-		
+		float4 Color: COLOR0,
+		uniform float baseRadius,
 		uniform float4x4 worldView,
 		uniform float4x4 Proj,
@@ -17,6 +19,5 @@
 {
 	VS_OUT OUT;
-  
-	float2 offset = texCoord.zw;
+    float2 offset = texCoord.zw * baseRadius;
 	float4 cPosition;   
 	cPosition = mul(worldView, position);
@@ -24,9 +25,10 @@
 	cPosition.xy += offset;				
 	OUT.cPosition = cPosition;
-	OUT.r = abs(texCoord.z);		
+	OUT.r = abs(offset.x);		
  
     OUT.hPosition = mul( Proj, cPosition );
      
-    OUT.texCoord = texCoord.xy;    
+    OUT.texCoord = texCoord.xy;  
+    OUT.Color = Color;  
 	return OUT;
 } 
@@ -39,5 +41,5 @@
 	float4 Color = 0;
 	Color = tex2D(Texture, IN.texCoord);
-	Color = float4(1, 1, 1, Color.a);
+	Color = float4(1, 1, 1, Color.a) * IN.Color;
 	return Color; 
 }
Index: GTP/trunk/App/Demos/Illum/Ogre/Media/particle/GameTools.particle
===================================================================
--- GTP/trunk/App/Demos/Illum/Ogre/Media/particle/GameTools.particle	(revision 1355)
+++ GTP/trunk/App/Demos/Illum/Ogre/Media/particle/GameTools.particle	(revision 1424)
@@ -44,36 +44,38 @@
 GameTools/Big
 {
-	//material		GameTools/HPS
-	material		HPS_SMOKE_L
-	//material		Flare
-    particle_width  200
-    particle_height 200
+	renderer sprite
+	
+	material		HPS_SMOKE_L_Depth
+	//material		GameTools/SpriteShader
+	particle_width  1.6
+    particle_height 1.6
     cull_each       false
-    quota           30
+    quota           20
     billboard_type  point
+    sorted			true
     
     // Area emitter
-    emitter Box
+    emitter Ellipsoid
     {
-       // colour 0.7 0.8 0.3 0
-       // colour_range_start 1 1 1 0
-		//colour_range_end 0.8 1 0.5 0
+       colour 1 1 1 0
+       //colour_range_start 1 1 1 0
+	   //colour_range_end 1 1 1 0
 
         angle           30
         emission_rate   6
-        time_to_live    3
+        time_to_live    6000000000
         direction       0 1 0
         velocity    	0
-        width           120
-        height          120
-        depth           30
+        width           100       
+        height          100
+        depth           100
     }
 
     // Make em float upwards
-    affector LinearForce
-    {
-        force_vector      0 40 0
-        force_application add
-    }
+  //  affector LinearForce
+  //  {
+  //      force_vector      0 40 0
+  //      force_application add
+  //  }
 
     affector ColourFader2
@@ -81,5 +83,5 @@
        alpha1 +0.5
        alpha2 -0.5
-       state_change 0.5
+       state_change 3
     }
 }
@@ -91,25 +93,26 @@
 	material        HPS_SMOKE_S
 	renderer sprite
-    particle_width  40
-    particle_height 40
+    particle_width  32
+    particle_height 32
     cull_each       false
-    quota           100
+    quota           400
     billboard_type  point
     
     // Area emitter
-    emitter Point
+    emitter Ellipsoid
     {
-       // colour 0.7 0.8 0.3 0
-        colour_range_start 1 1 1 0
-		colour_range_end 0.8 1 0.5 0
+        colour 1 1 1 0
+        //colour_range_start 1 1 1 0
+		//colour_range_end 1 1 1 0
 
         angle           160
         emission_rate   20
-        time_to_live    3
+        time_to_live    6
         direction       0 1 0
-        velocity    	20
-       // width           120
-      //  height          120
-       // depth           30
+        velocity    	5 
+        
+        width           50        
+        height          50
+        depth           50    
     }  
 
@@ -118,5 +121,5 @@
        alpha1 +0.5
        alpha2 -0.5
-       state_change 0.5
+       state_change 2
     }
 }
