/* Paul Badger */ surface bub(float tile_no = 8) { float d, opac, rand, per, blend, sd; float tile_s, tile_t, tileX, tileY; color paper, ink, color1, color2, color3, color4, layer1, layer2; float fuzz = .02; tile_s = mod( s * tile_no, 1); tile_t = mod( t * tile_no, 1); tileX = floor(s * tile_no); tileY = floor(t * tile_no); color1 = color(1.0, 1, 1); /* yel */ color2 = color(0, 0, 0); /* brown */ color3 = color(.04, .65, 1.0); /* blue */ color4 = color(.35, .19, .6); /* grape */ paper = color1; ink = color2; fuzz= .05; per = mod(tileX, tile_no/5); blend = tile_no/20; sd = tile_no/10 +tile_no/20; rand =(noise(tileX+.21, tileY + .37) * mod(tileX, tile_no/2)) + ( 1 - mod(tileX * tileY, tile_no/2 )); /* mod( 3 * noise((tileX +.31),(tileY+.27)) * (tileX/tile_no), 1) ;*/ /* mod((sin(tile_no * tileX * 6.18/360) + 17* noise(tileY + .27)), 5)/4 */ /* mod(tileX + 5 * sin(tileX*6.18/360)+7*tileY+17* noise(tileY+.27), 29)/28; */ /* mod((tileX) + (tileY*5), 28)); */ /* noise((tileX+.371)/2 , (tileY+.271) /2); */ /* mod (tileY*tileY + tileX * tileX, 40) / 39; */ /* noise((tileX+.371)/2 , (tileY+.271) /2); get values off integers) */ if (mod(tileX + tileY, 2) == 0) { if (rand > 0.5) { paper = color2; ink = color1; opac = smoothstep(.5-fuzz, .5+fuzz , distance((tile_s, tile_t, 0), (0, 1, 0)) ); /* a code */ paper = mix(ink, paper, opac); opac = smoothstep(.5-fuzz, .5+fuzz, distance((tile_s, tile_t, 0), (1, 0, 0)) ); paper = mix ( ink, paper, opac); } else { opac = smoothstep(.5-fuzz, .5+fuzz, distance((tile_s, tile_t, 0), (0, 0, 0)) ); /* b code */ paper = mix(ink, paper, opac); opac = smoothstep(.5-fuzz, .5+fuzz, distance((tile_s, tile_t, 0), (1, 1, 0)) ); paper = mix(ink, paper, opac); } } else { if (rand > .5) { opac =1-smoothstep(.5-fuzz, .5+fuzz, distance((tile_s, tile_t, 0), (0,1, 0)) ); /* c code */ paper = mix(paper, ink, opac); opac =1-smoothstep(.5-fuzz, .5+fuzz, distance((tile_s, tile_t, 0), (1, 0, 0)) ); paper = mix(paper, ink, opac); } else { paper = color2; ink = color1; opac =1 -smoothstep(.5-fuzz, .5+fuzz, distance((tile_s, tile_t, 0), (0,0, 0)) ); /* d code */ paper = mix(paper, ink, opac); opac =1 -smoothstep(.5-fuzz, .5+fuzz, distance((tile_s, tile_t, 0), (1, 1, 0)) ); paper = mix(paper, ink, opac); } } layer1 = paper; tileX *= 2; tileY *= 2; rand = noise((tileX+.371)/2 , (tileY+.271) /2); /* layer2 */ ink = color3; paper = color4; fuzz = .3; if (mod(tileX + tileY, 2) == 0) { if (rand > 0.5) { paper = color3; ink = color4; opac = smoothstep(.5-fuzz, .5+fuzz , distance((tile_s, tile_t, 0), (0, 1, 0)) ); /* a code */ paper = mix(ink, paper, opac); opac = smoothstep(.5-fuzz, .5+fuzz, distance((tile_s, tile_t, 0), (1, 0, 0)) ); paper = mix ( ink, paper, opac); } else { opac = smoothstep(.5-fuzz, .5+fuzz, distance((tile_s, tile_t, 0), (0, 0, 0)) ); /* b code */ paper = mix(ink, paper, opac); opac = smoothstep(.5-fuzz, .5+fuzz, distance((tile_s, tile_t, 0), (1, 1, 0)) ); paper = mix(ink, paper, opac); } } else { if (rand > .5) { opac =1-smoothstep(.5-fuzz, .5+fuzz, distance((tile_s, tile_t, 0), (0,1, 0)) ); /* c code */ paper = mix(paper, ink, opac); opac =1-smoothstep(.5-fuzz, .5+fuzz, distance((tile_s, tile_t, 0), (1, 0, 0)) ); paper = mix(paper, ink, opac); } else { paper = color3; ink = color4; opac =1 -smoothstep(.5-fuzz, .5+fuzz, distance((tile_s, tile_t, 0), (0,0, 0)) ); /* d code */ paper = mix(paper, ink, opac); opac =1 -smoothstep(.5-fuzz, .5+fuzz, distance((tile_s, tile_t, 0), (1, 1, 0)) ); paper = mix(paper, ink, opac); } } layer2 = paper; Ci = mix(layer1, layer2, .5); }