208d207
< 	Spectrum Ll = 0.0;
215c214
< 	    Ll += brdf->fr(wi) * Dot(wi, Nw) * dE;
---
> 	    L += brdf->fr(wi) * Dot(wi, Nw) * dE;
218,219c217
< 	Ll /= lt->NumSamples();
< 	L += Ll;
---
> 	L /= lt->NumSamples();
236c234
<       float RAY_MARCH_STEP = *hitDist / 5;
---
>       float RAY_MARCH_STEP = 0.2;
241,242c239,240
< 	L = ComputeRayLuminance(ray, L, RAY_MARCH_STEP);
< 	return L;
---
> 		  L = ComputeRayLuminance(ray, L);
> 		  return L;
255a254
> 	  //L += dE * opacity(Pw);
259,261c258,262
< 	  //Spectrum baseColor = Spectrum(0.5,0.5,0.5);
< 	  if ( scene->Unoccluded(Pw, Plight) ) {
< 	    L = (L + factor * op * phase(ray,lightRay)*ComputeRayLuminance(lightRay, dE, RAY_MARCH_STEP)) * (1 - factor*op);// + factor*op*baseColor*2;
---
> 	  if (op > 0.0) {
> 		 Spectrum baseColor = Spectrum(0.5,0.5,0.5);
> 		 if ( scene->Unoccluded(Pw, Plight) ) {
> 			L = (L + (0.5) * factor * op * phase(ray,lightRay)*ComputeRayLuminance(lightRay, dE)) * (1 - factor*op) + factor*op*baseColor*5.0;
> 		 }
276,277c277,278
<   return scene->atmosAttributes->opacity;
<   //return (scene->atmosDensity->grid(p));
---
>   // return scene->atmosAttributes->opacity;
>   return (scene->atmosDensity->grid(p));
294c295
<   float phase = ((1.0-g2))/(1.0 - 2*g*costheta + g2);
---
>   float phase = pow(((1.0-g2))/(1.0 - 2*g*costheta + g2),1.5);
303c304
< Spectrum MCIntegrator::ComputeRayLuminance( const Ray &lightRay, Spectrum dE, float step ) const {
---
> Spectrum MCIntegrator::ComputeRayLuminance( const Ray &lightRay, Spectrum dE ) const {
306c307,308
<   float factor = step / 2.0;
---
>   float RAY_MARCH_STEP = 1.0;
>   float factor = RAY_MARCH_STEP / 2.0;
308c310
<   for ( index = lightRay.D.Length(); index > 0; index -= step ) {
---
>   for ( index = lightRay.D.Length(); index > 0; index -= RAY_MARCH_STEP ) {
311c313,315
<     L = L * (1 - factor * op);
---
> 	 if (op > 0.0) {
> 		L = L * (1 - factor * op);
> 	 }
