#include "rmannotes.sl" surface five(float Ka = 0.7, Kd = 0.3, Ks = 1, roughness = 0.1; color specularcolor = 1; color color1 = color(1,0,0), color2 = color(0,0,1); float horzrep = 4, vertrep = 4) { color paper, ink; float paper_opac, ink_opac; float ss, tt; float fuzz = 0.05; point p1, p2; float width; float d; float radius; point center; point Nf, V; color amb, diff, spec; Nf = faceforward(normalize(N), I); V = -normalize(I); paper = 0; paper_opac = 0; s= repeat (s, horzrep); t= repeat (t, vertrep); /* vertical bar */ ink = noise(s * 30, t * 10); p1 = (.5, 0, 0); p2 = (.5, 1, 0); width = .4; d = ptlined(p1, p2, (s, t, 0)); ink_opac = 1 - smoothstep(width /2 - fuzz, width /2 + fuzz, d); paper = mix(paper, ink, ink_opac); /* horizontal bar */ ink = spline (s, color(0,0,.5), color(0,0,.5), color(.5,0,0), color(.5,0,0), color(0,0,.5), color(0,0,.5)); p1 = (0, .5,0); p2 = (1, .5, 0); width = 0.3; d = ptlined(p1, p2, (s, t, 0)); ink_opac = 1 - smoothstep(width /2 - fuzz, width /2 + fuzz, d); paper = mix(paper, ink, ink_opac); /*diagonal bar */ ink = spline (s, color1, color1, color2, color1, color1); p1 = (0,0,0); p2 = (1,1,0); width = 0.2; d = ptlined(p1, p2, (s, t, 0)); ink_opac = 1 - smoothstep(width /2 - fuzz, width /2 + fuzz, d); paper = mix(paper, ink, ink_opac); /*diagonal bar */ ink = spline (s, color1, color1, color2, color1, color1); p1 = (1,0,0); p2 = (0,1,0); width = 0.2; d = ptlined(p1, p2, (s, t, 0)); ink_opac = 1 - smoothstep(width /2 - fuzz, width /2 + fuzz, d); paper = mix(paper, ink, ink_opac); /*center disk*/ ink = 0; center = (0.5, 0.5, 0); radius = 0.1; d = distance(center, (s,t,0)); ink_opac = 1 - smoothstep(radius - fuzz, radius + fuzz, d); paper = mix(paper, ink, ink_opac); /* output */ amb = Cs * Ka * ambient(); diff = Cs * Kd * diffuse(Nf); spec = specularcolor * Ks * specular(Nf, V, roughness); paper_opac = complement(ink_opac); Oi = Os * paper_opac; Ci = paper_opac * paper * (amb + diff + spec); }