#include "rmannotes.sl" surface pattern2(string texname = "nails.tex"; float Ka = 1, Ks = 1, roughness = .25) { color paper, ink; float opac; float tile_s, tile_t; float fuzz; float d; color black = color(0, 0, 0); color white = color(1, 1, 1); color gray = color(.611, .611, .611); point Nf, V; Nf = faceforward(normalize(N), I); V = normalize(-I); Oi = 1; fuzz = .02; paper = black; rotate2d(s, t, 45, .5, .5, tile_s, tile_t); tile_s = repeat(tile_s, 5); tile_t = repeat(tile_t, 5); /*white stripe*/ ink = white; opac = 1 - pulse(tile_s, 0, .5, fuzz); paper = mix(paper, ink, opac); /*texture stripe*/ ink = texture("nails.tex"); opac = (1 - pulse(tile_s, 0, .5, fuzz))*.5; paper = mix(paper, ink, opac); /*black circle*/ ink = black; opac = pulse(distance((.5, .5, 0), (tile_s, tile_t, 0)), .35, .45, fuzz); paper = mix(paper, ink, opac); /*white circle*/ ink = white; opac = pulse(distance((.5, .5, 0), (tile_s, tile_t, 0)), .25, .35, fuzz); paper = mix(paper, ink, opac); /*gray stripe*/ rotate2d(s, t, 315, .5, .5, tile_s, tile_t); tile_s = repeat(tile_s, 5); tile_t = repeat(tile_t, 5); ink = gray; opac = pulse(tile_s, 0, .5, fuzz)*.3; paper = mix(paper, ink, opac); Ci = Oi * paper * (Ka * ambient() + Ks * specular(Nf, V, roughness)); }