/* Copyrighted Pixar 1989 */ /* From the RenderMan Companion p.352 */ /* Listing 16.16 Displacement shader to dent a surface */ /* * dented(): Create a worn surface. */ displacement dented ( float Km = 1.0) { float size = 1.0, magnitude = 0.0, i; point P2; P2 = transform ("shader", P); for (i = 0; i < 6.0; i += 1.0) { /* Calculate a simple fractal 1/f noise function */ magnitude += abs (.5 - noise (P2 * size)) / size; size *= 2.0; } P = P - normalize (N) * (magnitude * magnitude * magnitude)* Km; N = calculatenormal(P); }