/* * 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); }