Procedural Textures - Example of A Procedural Marble Texture

Example of A Procedural Marble Texture

(Taken from The Renderman Companion Book, by Steve Upstill)

/* Copyrighted Pixar 1988 */ /* From the RenderMan Companion p. 355 */ /* Listing 16.19 Blue marble surface shader*/ /* * blue_marble: a marble stone texture in shades of blue * surface */ blue_marble( float Ks = .4, Kd = .6, Ka = .1, roughness = .1, txtscale = 1; color specularcolor = 1) { point PP; /* scaled point in shader space */ float csp; /* color spline parameter */ point Nf; /* forward-facing normal */ point V; /* for specular */ float pixelsize, twice, scale, weight, turbulence; /* Obtain a forward-facing normal for lighting calculations. */ Nf = faceforward( normalize(N), I); V = normalize(-I); /* * Compute "turbulence" a la . Turbulence is a sum of * "noise" components with a "fractal" 1/f power spectrum. It gives the * visual impression of turbulent fluid flow (for example, as in the * formation of blue_marble from molten color splines!). Use the * surface element area in texture space to control the number of * noise components so that the frequency content is appropriate * to the scale. This prevents aliasing of the texture. */ PP = transform("shader", P) * txtscale; pixelsize = sqrt(area(PP)); twice = 2 * pixelsize; turbulence = 0; for (scale = 1; scale > twice; scale /= 2) turbulence += scale * noise(PP/scale); /* Gradual fade out of highest-frequency component near limit */ if (scale > pixelsize) { weight = (scale / pixelsize) - 1; weight = clamp(weight, 0, 1); turbulence += weight * scale * noise(PP/scale); } /* * Magnify the upper part of the turbulence range 0.75:1 * to fill the range 0:1 and use it as the parameter of * a color spline through various shades of blue. */ csp = clamp(4 * turbulence - 3, 0, 1); Ci = color spline(csp, color (0.25, 0.25, 0.35), /* pale blue */ color (0.25, 0.25, 0.35), /* pale blue */ color (0.20, 0.20, 0.30), /* medium blue */ color (0.20, 0.20, 0.30), /* medium blue */ color (0.20, 0.20, 0.30), /* medium blue */ color (0.25, 0.25, 0.35), /* pale blue */ color (0.25, 0.25, 0.35), /* pale blue */ color (0.15, 0.15, 0.26), /* medium dark blue */ color (0.15, 0.15, 0.26), /* medium dark blue */ color (0.10, 0.10, 0.20), /* dark blue */ color (0.10, 0.10, 0.20), /* dark blue */ color (0.25, 0.25, 0.35), /* pale blue */ color (0.10, 0.10, 0.20) /* dark blue */ ); /* Multiply this color by the diffusely reflected light. */ Ci *= Ka*ambient + Kd*diffuse(Nf); /* Adjust for opacity. */ Oi = Os; Ci = Ci * Oi; /* Add in specular highlights. */ Ci += specularcolor * Ks * specular(Nf,V,roughness); }

This article was taken from The Photoshop Roadmap with written authorization

Read more about this topic:  Procedural Textures

Famous quotes containing the words marble and/or texture:

    In a time of confusion and rapid change like the present, when terms are continually turning inside out and the names of things hardly keep their meaning from day to day, it’s not possible to write two honest paragraphs without stopping to take crossbearings on every one of the abstractions that were so well ranged in ornate marble niches in the minds of our fathers.
    John Dos Passos (1896–1970)

    For it is the nature and end of this relation, that they should represent the human race to each other. All that is in the world, which is or ought to be known, is cunningly wrought into the texture of man, of woman.
    Ralph Waldo Emerson (1803–1882)