/*By David M Bailey for Matt Lewis -- ACAAD/OSU 2008*/ /*Stochastic Pattern generated from 2 layers of mirrored (both s &t) Perturbed squares over a bw noise background. Input = float for background color, foreground opacity, fuzz level, noise frequencies, jitter magnitude for top layer... Output = dynamic puddle appearance with opacity and sharp highlights*/ #include "rmannotes.sl" surface noi( float bakclr = .25; float noifreq1 = 4, noifreq2 = 5; float noiscale1 = 6, noiscale2 = 7; float fuz = 0.35; float multopac = 0.5; float jitterlow = -0.33, jitterhigh = 0.33; ) { color surface_color, layer_color; color surface_opac, layer_opac; float ss, tt; float left, right, top, bottom; float freq = 4; float noi; //background surface_color = float bakclr *(noise(s*5 + 200, t*25 + 100)); //background noise //turbulent -->rectangles under noi = noise(s * noifreq1, t * noifreq1); /*turbulance for layer "rectangles under"*/ ss = s + snoise(noi + 748) * noiscale1; tt = t + snoise(noi + 358) * noiscale1; ss = repeat(ss, freq); tt = repeat(tt, freq); //rectangles under layer_color = color "hsv" (.5, 0, .85); left = 0.05; right = 0.5; top = 0.05; bottom = 0.5; layer_opac= pulse(left, right, fuz, ss) * pulse(top, bottom, fuz, tt); surface_color = blend(surface_color, layer_color, layer_opac); //Bombing of "rectangles over" float tmps, tmpt; float col, row; float noi2; /*noise bomb coords*/ float freq2 = 3; /*freqency for bombing only*/ float negrad = 30, posrad = 120; /*radian range for "jitter"*/ col = whichtile(s, freq2); row = whichtile(t, freq2); noi2 = noise(col * 10 + 0.5, row * 10 + 0.5); //turbulent -->rectangles over noi = noise(s * noifreq2, t * noifreq2); /*turbulance for layer "rectangles over"*/ ss = s + snoise(noi + 748) * noiscale2; /*scale bump for horizontal*/ tt = t + snoise(noi + 358) * noiscale2; /*scale bump for vertical*/ ss = repeat(ss, freq); tt = repeat(tt, freq); //Jitter & Rotate Tiles for "rectangles over" tmps = repeat(s, freq2) + udn(noi2 * 864, jitterlow, jitterhigh); tmpt = repeat(t, freq2) + udn(noi2 * 465, jitterlow, jitterhigh); rotate2d(tmps, tmpt, radians(udn(noi2 * 846, negrad, posrad)), 0.5, 0.5, ss, tt); /*rotation of tiles*/ //rectangles over layer_color = color "hsv" (.5, 0, .15); left = 0.05; right = 0.5; top = 0.05; bottom = 0.5; layer_opac= multopac *(1-pulse(left, right, fuz, ss) * 1-pulse(top, bottom, fuz, tt)); surface_color = blend(surface_color, layer_color, layer_opac); Ci = surface_color; }