/* gcturb.sl * * shader for viewing gradual, clamped turbulence * */ #include "rmannotes.sl" surface gcturb(float turbfreq = 2) { point PP; float width, cutoff, fade, f, turb; float maxfreq = 16; PP = transform("shader", P) * turbfreq; width = filterwidth_point(PP); cutoff = clamp(0.5 / width, 0, maxfreq); turb = 0; for (f = 1; f < 0.5 * cutoff; f *= 2) turb += abs(snoise(PP * f)) / f; fade = clamp(2 * (cutoff - f) / cutoff, 0, 1); turb += fade * abs(snoise(PP * f)) / f; Ci = turb; }