#include "/usr/local/accad/shaders/rmannotes.sl" displacement wfallsd(float km = 0.5, freq = 20) { point NN, Nf; point V = -normalize(I); float magnitude; point PP; float width, cutoff, fade, turb, turb2, maxfreq = 25, f; uniform point down = (0,-1,0); PP = transform("shader", P) * freq; width = filterwidth_point(PP); cutoff = clamp(0.5 / width, 0, maxfreq); turb = 0; for (f = 1; f < 0.2 * cutoff; f *= 2) turb += abs(snoise(PP * f)) / f; fade = clamp(2 * (cutoff - f) / cutoff, 0, 1); turb += fade * abs(snoise(PP * f)) / f; turb2 = 0; for (f = 1; f < 0.2 * cutoff; f *= 2) turb2 += abs(snoise(N.PP * f)) / f; fade = clamp(2 * (cutoff - f) / cutoff, 0, 1); turb2 += fade * abs(snoise(PP * f)) / f; magnitude = pow(turb1, 4); NN = normalize(N); P += km * magnitude * normalize(Ng); P += down*turb*turb2*2; N = calculatenormal(P); }