#include "rmannotes.sl" #define circle(cx, cy, fuzz, x, y) \ (1-smoothstep(0.5-fuzz, 0.5+fuzz, distance((x, y, 0), (cx, cy ,0)))) surface ass32(float Ka = 1, Kd = 1) { color paper, ink; float tile_s, tile_t; float opac, fuzz, o1, o2, o3, o4; float left, right; point Nf; Nf = faceforward(normalize(N), I); paper = color(.545, .270, .504); fuzz = 0.01; Oi = .5; tile_s = repeat(s, 3); tile_t = repeat(t, 3); ink = color(1, 1, 1); o1 = circle(0.5, 0, fuzz, tile_s, tile_t); o2 = circle(0, 0.5, fuzz, tile_s, tile_t); o3 = circle(0.5, 1, fuzz, tile_s, tile_t); o4 = circle(1, 0.5, fuzz, tile_s, tile_t); left = union(intersection(o1, o2), intersection(o2, o3)); right = union(intersection(o3, o4), intersection(o4, o1)); opac = union(left, right); paper = mix(paper, ink, opac); ink = color(.803, .4, 0); opac = circle(0.5, 0.5, fuzz, tile_s, tile_t); opac *= .5; paper = mix(paper, ink, opac); Ci = Oi * paper * (Ka * ambient() + Kd * diffuse(Nf)); }