24,27c24,27
<   new sphere(new vec(0.,6.,.5),new vec(1.,1.,1.), .9, .05, .2, .85, 0.,  1.7),
<   new sphere(new vec( -1.,8.,-.5),new vec(1.,.5,.2), 1., .7, .3,0., .05, 1.2),
<   new sphere(new vec(1.,8.,-.5), new vec(.1,.8,.8), 1.,.3, .7, 0., 0., 1.2),
<   new sphere(new vec(3.,-6.,15.), new vec(1.,.8, 1.),7., 0.,0.,0.,.6, 1.5),
---
>   new sphere(new vec(0.,6.,.5),new vec(1.,1.,1.), .9, 0., .2, .85, 0., 1.7),
>   new sphere(new vec( -1.,8.,-.5),new vec(1.,.5,.2), 1., .7, .3, 0., 0., 1.2),
>   new sphere(new vec(1.,8.,-.5), new vec(.1,.8,.8), 1., .3, .7, 0., 0., 1.2),
>   new sphere(new vec(3.,-6.,15.), new vec(1.,.8, 1.), 7., 0., 0., 0., .6, 1.5),
45c45
<   this.kd = kd; /* difuse */
---
>   this.kd = kd; /* diffuse */
127,131c127,133
<         return vcomb(s.kt, e > 0 ?
<               trace(level, P,
<               vcomb(eta, D, vcomb(eta*d-Math.sqrt(e), N, black)))
<           : black,
<               vcomb(s.ks, trace(level, P, vcomb(2*d, N, D)), Dt));
---
>         if (s.ks != 0.0)
>             Dt = vcomb(s.ks, trace(level, P, vcomb(2*d, N, D)), Dt);
>
>         if (e > 0 && s.kt != 0.0)
>                 Dt = vcomb(s.kt, trace(level, P, vcomb(eta, D, vcomb(eta*d-Math.sqrt(e), N, black))), Dt);
>
>         return Dt;
154,155c156,165
<                 var color = vcomb(255.0, trace(DEPTH, black, vunit(U)), black);
<                 p.set_pixel(x, y, color.x, color.y, color.z);
---
>          var color = trace(DEPTH, black, vunit(U));
>
>          if (color.x > 1.0)
>              color.x = 1.0;
>          if (color.y > 1.0)
>              color.y = 1.0;
>          if (color.z > 1.0)
>              color.z = 1.0;
>
>          color = vcomb(255.0, color, black);

