displacement
linoleum(
	 float distance = 1;
	 float Ka = 1;
         float Kd = .5;
         float Ks = .5;
         float roughness = .1;
	 color specularcolor = 1;
	)
{
/*
	float offset;
	float offsetx;
	float offsety;
        offsetx = 0.05*(sin(3*s)*sin(2*s)*cos(5*s)+cos(29*s+1)+cos(31*s));
	offsetx = offsetx+0.05*(cos(0.6*s)+sin(47*s)+sin(37*s+1));
	offsetx = offsetx+0.05*(cos(19*s+0.2)+sin(23*s+0.8));
        offsety = 0.05*(sin(0.2*t)*sin(31*t)*cos(29*t)+cos(57*t+1)+cos(7*t));
	offsety = offsety+0.05*(cos(17*t)+sin(43*t)+sin(5*t+1));
	offsety = offsety+0.05*(cos(3*t+0.2)+sin(2*t+0.8));
	offset = (offsetx+offsety)/2;
	P = P + (offset+0.05)*distance*normalize(N);
	N = calculatenormal(P);

	normal Nf = faceforward (normalize(N),I);
        Oi = Os;
        Ci = Os * ( Cs * (Ka*ambient() + Kd*diffuse(Nf)) +
	            specularcolor * Ks*specular(Nf,-normalize(I),roughness));
*/


	Oi = Os;
	Ci = Oi*(Cs*(Kd*diffuse(faceforward(normalize(N),I)) + Ka*ambient()) + 
		Ks*phong(faceforward(normalize(N),I),-normalize(I),distance));
//		Ks*specular(faceforward(normalize(N),I),-normalize(I),distance));

}