/* sky shader, works better with a surface color, Cs of (0.05, 0.02, 0.5), a skyish blue. Ink_opac is changing wrt t, from up to down. Looks like it is 6 o'clock sky, just after sunset. By Cemil Turun, June 2, 1995 */ #include "rmannotes.sl" surface sky(float turbfreq = 5) { color ink, paper; point PP; float pixelsize, twice, ink_opac, ss, tt; float scale, turb, y; paper = Cs; PP = transform("shader", P) * turbfreq; pixelsize = sqrt(area(PP)); twice = pixelsize * 2; turb = 0; rotate2d(s, t, noise(s +.5) + t, 0.5, 0.5, ss, tt); for (scale = 1; scale > twice; scale /= 2) turb += abs(noise(PP / scale) - 0.2) * scale; turb = turb * 3; ink = color(.6, .4, .5); ink_opac = turb * t - .1; paper = mix(paper, ink, ink_opac); ss = s; tt = t; Oi = Os; Ci = Oi * paper; }