Index: /branches/atmospheric_engine/src/lib/graphics/effects/fog_effect.cc
===================================================================
--- /branches/atmospheric_engine/src/lib/graphics/effects/fog_effect.cc	(revision 7682)
+++ /branches/atmospheric_engine/src/lib/graphics/effects/fog_effect.cc	(revision 7683)
@@ -35,7 +35,8 @@
 	
 	this->fogMode = GL_LINEAR;
-	this->fogDensity = 0.001f;
-	this->fogStart = 10.0f;
-	this->fogEnd = 1000.0f;
+	this->fogDensity = 0.1f;
+	this->fogStart = 0.0f;
+	this->fogEnd = 5000.0f;
+  this->colorVector = Vector(0.7, 0.7, 0.7);
 
 	if (root != NULL)
Index: /branches/atmospheric_engine/src/lib/graphics/effects/snow_effect.cc
===================================================================
--- /branches/atmospheric_engine/src/lib/graphics/effects/snow_effect.cc	(revision 7682)
+++ /branches/atmospheric_engine/src/lib/graphics/effects/snow_effect.cc	(revision 7683)
@@ -67,5 +67,5 @@
 	LoadParam(root, "emissionRate", this, SnowEffect, emissionRate);
 	LoadParam(root, "emissionVelocity", this, SnowEffect, emissionVelocity);
-	LoadParam(root, "spread", this, SnowEffect, spread);
+  LoadParam(root, "wind", this, SnowEffect, wind);
 	LoadParam(root, "size", this, SnowEffect, size);
 	LoadParam(root, "coord", this, SnowEffect, coord);
@@ -77,5 +77,5 @@
 
 	// Default values
-	particles = 10000;
+	particles = 12000;
 	texture = "maps/snow_flake_01_32x32.png";
 	life = 8;
@@ -88,9 +88,9 @@
 	velocity = -100;
 	randomVelocity = 5;
-	angle = 0;
-	randomAngle = 0.3;
+	angle = 0.5;
+	randomAngle = 0.2;
 	alpha = 0.5;
-	snowSize = Vector2D(1200, 1200);
-	snowCoord = Vector(100, 600, 200);
+	snowSize = Vector2D(2500, 2500);
+  snowCoord = Vector(100,450,400);
 
 	activated = false;
@@ -107,6 +107,6 @@
 	SnowEffect::snowParticles->setLifeSpan(life, randomLife);
 	SnowEffect::snowParticles->setRadius(0.0, snowRadius, randomRadius);
-	SnowEffect::snowParticles->setRadius(0.2, snowRadius, randomRadius);
-	SnowEffect::snowParticles->setRadius(1.0, snowRadius, randomRadius);
+	SnowEffect::snowParticles->setRadius(0.2, snowRadius, randomRadius*0.8);
+	SnowEffect::snowParticles->setRadius(1.0, snowRadius, randomRadius*0.5);
 	SnowEffect::snowParticles->setMass(0, snowMass, randomMass);
 	SnowEffect::snowParticles->setColor(0,1, 1, 1, alpha);
@@ -116,5 +116,4 @@
 	this->emitter->setSystem(SnowEffect::snowParticles);
 
-// this->updateNode(0);
 	this->emitter->setRelCoor(snowCoord);
 	this->emitter->setEmissionRate(rate);
@@ -122,4 +121,6 @@
 	this->emitter->setSpread(angle, randomAngle);
 	this->emitter->setSize(snowSize);
+  
+  //SnowEffect::snowParticles->precache(8);
 }
 
@@ -149,9 +150,36 @@
 void SnowEffect::tick(float dt)
 {
-	float distance = (State::getCameraNode()->getAbsCoor() - snowCoord).len();
-	if( activated && ( distance > 0.6*snowSize.x || distance > 0.6*snowSize.y) )
-		this->deactivate();
-	if( !activated && ( distance < 0.6*snowSize.x || distance < 0.6*snowSize.y ))
-		this->activate();
+  float distance = (State::getCameraNode()->getAbsCoor() - Vector(snowCoord.x, State::getCameraNode()->getAbsCoor().y, snowCoord.z)).len();
+  
+  if(activated)
+  {
+    if(distance > 0.3*snowSize.x || distance > 0.3*snowSize.y)
+		  this->deactivate();
+    else if(distance > 0.25*snowSize.x || distance > 0.25*snowSize.y) 
+      this->alpha = 0.15;
+    else if(distance > 0.2*snowSize.x || distance > 0.2*snowSize.y) 
+      this->alpha = 0.25;
+    else if(distance > 0.1*snowSize.x || distance > 0.1*snowSize.y) 
+      this->alpha = 0.4;
+
+    SnowEffect::snowParticles->setColor(0,1, 1, 1, alpha);
+    SnowEffect::snowParticles->setColor(.5, .6, .6, .6, alpha/2);
+    SnowEffect::snowParticles->setColor(1, .0, .0, .0, .0);
+  }
+  else
+  {
+  if(distance < 0.3*snowSize.x || distance < 0.3*snowSize.y )
+    this->activate();
+  if( distance < 0.25*snowSize.x || distance < 0.25*snowSize.y )
+    this->alpha = 0.25;
+  else if( distance < 0.2*snowSize.x || distance < 0.2*snowSize.y )
+    this->alpha = 0.4;
+  else if( distance < 0.1*snowSize.x || distance < 0.1*snowSize.y )
+    this->alpha = 0.5;
+
+    SnowEffect::snowParticles->setColor(0,1, 1, 1, alpha);
+    SnowEffect::snowParticles->setColor(.5, .6, .6, .6, alpha/2);
+    SnowEffect::snowParticles->setColor(1, .0, .0, .0, .0);
+  }
 }
 
Index: /branches/atmospheric_engine/src/lib/graphics/effects/snow_effect.h
===================================================================
--- /branches/atmospheric_engine/src/lib/graphics/effects/snow_effect.h	(revision 7682)
+++ /branches/atmospheric_engine/src/lib/graphics/effects/snow_effect.h	(revision 7683)
@@ -44,7 +44,7 @@
 		void emissionRate(float emissionRate){ this->rate = emissionRate; }
 		void emissionVelocity(float velocity, float randomVelocity){ this->velocity = velocity; this->randomVelocity = randomVelocity; }
-		void spread(float angle, float randomAngle) { this->angle = angle; this->randomAngle = randomAngle; }
 		void size(float sizeX, float sizeY) { this->snowSize = Vector2D(sizeX, sizeY); }
 		void coord(float x, float y, float z) { this->snowCoord = Vector(x, y, z); }
+    void wind(int force) { this->angle = angle*force; this->randomAngle = randomAngle*force; }
 
 		int particles;
