#include "rmannotes.sl") surface mistfall(color mistc = color(.6, .6, .6); float maxFreq = 6, phase = 0, omega =.7, lambda = 2, octave = 8, trans = 0.7) { float turb, f, l, o, a; point pp; pp = transform("shader", P); l=1;o=1; a = 0; for (f = 1; f <= octave; f+=1) { a+= o* ((noise(l*pp)) ) / f ; l*= lambda; o*= omega; } turb = 0; for (f = 1; f < maxFreq; f *= 2) turb += abs(snoise(s * f, t * f)) / f; Oi = trans * a * turb; Ci = mix(mistc, color(.1, .1, .3), trans * turb * a); P -= turb * a * normalize(N) * udn (pp * 3, -.5, .5); N = calculatenormal (N); }