surface lab7
    ( float w1 = 0.2; float w2 = 0.1; float w3 = 0.15; float w4 = 0.2;
	color bg1 = 0.3; color fg1 = 0.7;
	color bg2 = 0.4; color fg2 = 0.6;
	color bg3 = 0.5; color fg3 = 0.5;
	color bg4 = 0.6; color fg4 = 0.4
) 
     {

	float Kd = 0.5;
	float Ka = 0.2;
	point p;
	float width = w1+w2+w3+w4;
 	point Nf = faceforward( normalize(N), I);

	if (mod(xcomp(p)-xcomp(P), width) > 0) {
		if (mod(xcomp(p)-xcomp(P), width) <= w1)	 {
			Ci = .33*fg1;
		}
	}	else {
		Ci = .33*bg1;
	}

        if (mod(xcomp(p)-xcomp(P), width) > w1-.01) {
		if (mod(xcomp(p)-xcomp(P), width) <= w1+w2)	 {
			Ci = .33*fg2;
		}
	}	else {
		Ci = .33*bg2;
	}

 	if (mod(zcomp(p)-zcomp(P), width) > w2+w1) {
		if (mod(zcomp(p)-zcomp(P), width) <= w1+w2+w3)	 {
			Ci = Ci + .33*fg3;
		}
	}	else {
		Ci = Ci + .33*bg3;
	}

	if (mod(zcomp(p)-zcomp(P), width) > w3+w2+w1-.01) {
		if (mod(zcomp(p)-zcomp(P), width) <= width)	 {
			Ci = Ci + .33*fg4;
		}
	}	else {
		Ci = Ci + .33*bg4;
	}

	if (mod(ycomp(p)-ycomp(P), width) > w2+w1) {
		if (mod(ycomp(p)-ycomp(P), width) <= w1+w2+w3)	 {
			Ci = Ci + .33*fg1;
		}
	}	else {
		Ci = Ci + .33*bg2;
	}

	if (mod(ycomp(p)-ycomp(P), width) > w3+w2+w1) {
		if (mod(ycomp(p)-ycomp(P), width) <= width)	 {
			Ci = Ci + .33*fg3;
		}
	}	else {
		Ci = Ci + .33*bg4;
	}

	Ci = Ci * (Ka*ambient() + Kd*diffuse(Nf));
 
	float d;
    	point sN,PP;
  	float freq = 500;
	float depth = 0.03;
    	d = noise(freq*s) + noise(freq*t) - 1; /* from -1 to 1 */
    	PP = transform("shader",P);
    	sN = normalize(transform("shader",N)-transform("shader",(0,0,0)));
    	P = transform("shader","current",PP + sN*depth*d);
    	N = calculatenormal(P);



     }

/*
surface
test ( float Ka=1, Kd=1 )
{
    point Nf;

    Nf = faceforward(normalize(N),I);

    Oi = Os;
    Ci = Os * Os * Cs * ( Ka*ambient() + Kd*diffuse(Nf) ) ;
}
*/