/* Rick Grandy */ #include "rmannotes.sl" surface onk2(color grey = color (.8, .8, .8); float Ka = 1, Ks = 1, roughness = 0.15; string texname = "brick.tex") { color paper, ink, map; float opac; float fuzz, d, wide, wide2, wide3, wide4, wide5, vertline, horzline; float tile_s, tile_t; point a,b, c,e, f,g, h,i, j,k, l,m, n,o, p,q, w,x, y,z, Nf,V; color black = color(0,0,0); fuzz = .03; Nf = faceforward(normalize(N), I); V = normalize(-I); paper = black; Oi = 0; wide = .15; wide2 = .1; wide3 = .225; wide4 = .3; wide5 = .125; a = (.5, .5, 0); b = (.5, 1, 0); c = (0, .5, 0); e = (1, .5, 0); f = (.1, .1, 0); g = (.9, .1, 0); h = (.1, .37, 0); i = (.9, .37, 0); j = (.1, .65, 0); k = (.3, .65, 0); l = (.7, .65, 0); m = (.9, .65, 0); n = (.5, .2, 0); o = (.5, .3, 0); p = (.5, .195, 0); q = (.5, .325, 0); w = (.35, .66, 0); x = (.35, .9, 0); y = (.65, .66, 0); z = (.65, .9, 0); tile_s = repeat(s, 2); tile_t = repeat(t, 1); /* Vertical Line (a,b) */ ink = grey; d = ptlined(a, b, (tile_s, tile_t, 0)); vertline = 1 - smoothstep(wide - fuzz,wide + fuzz, d); paper = mix(paper, ink, vertline); Oi = mix(Oi, grey, vertline); /* Horizontal line (c,e) */ ink = grey; d = ptlined(c, e, (tile_s, tile_t, 0)); horzline = union(vertline, 1 - smoothstep(wide - fuzz,wide + fuzz, d)); paper = mix(paper, ink, horzline); Oi = mix(Oi, grey, horzline); /* Hor-line reduce #1 (h,i) */ ink = black; d = ptlined(h, i, (tile_s, tile_t, 0)); opac = 1 - smoothstep(wide2 - fuzz,wide2 + fuzz, d); paper = mix(paper, ink, opac); Oi = mix(Oi, black, opac); /* Hor-line reduce #2 (j,k) */ ink = black; d = ptlined(j, k, (tile_s, tile_t, 0)); opac = 1 - smoothstep(wide2 - fuzz,wide2 + fuzz, d); paper = mix(paper, ink, opac); Oi = mix(Oi, black, opac); /* Hor-line reduce #3 (l,m) */ ink = black; d = ptlined(l, m, (tile_s, tile_t, 0)); opac = 1 - smoothstep(wide2 - fuzz,wide2 + fuzz, d); paper = mix(paper, ink, opac); Oi = mix(Oi, black, opac); /* Vert-line reduce #1 (w,x) */ ink = black; d = ptlined(w, x, (tile_s, tile_t, 0)); opac = 1 - smoothstep(wide2 - fuzz,wide2 + fuzz, d); paper = mix(paper, ink, opac); Oi = mix(Oi, black, opac); /* Vert-line reduce #2 (y,z) */ ink = black; d = ptlined(y, z, (tile_s, tile_t, 0)); opac = 1 - smoothstep(wide2 - fuzz,wide2 + fuzz, d); paper = mix(paper, ink, opac); Oi = mix(Oi, black, opac); /* Grey oval (p,q) */ ink = grey; d = ptlined(p, q, (tile_s, tile_t, 0)); opac = 1 - smoothstep(wide3 - fuzz,wide3 + fuzz, d); paper = mix(paper, ink, opac); Oi = mix(Oi, grey, opac); /* Inner oval (n,o) */ ink = black; d = ptlined(n, o, (tile_s, tile_t, 0)); opac = 1 - smoothstep(wide5 - fuzz,wide5 + fuzz, d); paper = mix(paper, ink, opac); Oi = mix(Oi, black, opac); /* Texture */ map = texture(texname, tile_s, tile_t); paper = mix(paper, map, opac); Oi = mix(Oi, map, opac); Ci = Oi *paper*map* (Ka * ambient() + Ks * specular(Nf, V, roughness)); }