/*
 * grass_displacement.sl -- dislacement shader to puts grass on a patch
 */

displacement
grass_displacement (float urepeat = 1.0,
										 vrepeat = 1.0,
										 Km = 0.8;
               string texturename = "grass.tif")
{
		 float size = 1.8,
					 magnitude = 0.0,
					 i;

		 for(i=0; i<6.0; i+= 1.0){
				magnitude += (.5 - noise(P * size)) / size;
				size *= 2.0;
		 }

		 P += (-Km * normalize(N) * magnitude * magnitude * texture(texturename [3], u*urepeat, v*vrepeat)) * normalize(N);

      N = calculatenormal(P);


}