#define repeat(x,freq)    (mod((x) * (freq), 1.0))
#define pulse(a,b,fuzz,x) (smoothstep((a)-(fuzz),(a),(x)) - smoothstep((b)-(fuzz),(b),(x)))


surface lab7(float Ka = 0.7, Kd = 0.7, Ks = 0.3, roughness = 0.1, freq = 5;
		color specularcolor = 1, color1 = color (1, 1, 1), color2= color(0.2,0.2,0.2),
                                                                 color3= color(0.6,0.6,0.6))
{
  color surface_color;

  float ss, tt;
  point Nf, V;


  surface_color =  Cs;

  ss = repeat(s, freq);
  ss =pulse(0.35,0.65,0.02,ss);
  
  tt = repeat(t, freq);
  tt =pulse(0.35,0.65,0.01,tt);

  if (ss==0) {
       surface_color=surface_color*(1-tt)+color2*tt;
  }
  else if (tt==0) {
   	surface_color=surface_color*(1-ss)+color1*ss;  
  }
  else surface_color=(color1*(1-tt)+color2*(1-ss)+color3*(ss+tt))/2;




  /* illum */

  Nf = faceforward(normalize(N), I);
  V = -normalize(I);
  surface_color = surface_color * (Ka * ambient() + Kd * diffuse(Nf))
    + specularcolor * Ks * specular(Nf, V, roughness);

  /* output */
  Oi=Os;
  Ci = surface_color *Os;
}