# include "rmannotes.sl" displacement alienground(float Km = 0.2, patternfreq = .1) { float surf_mag; float lay_mag; float dist; float i; point c; point PP; float pattern = 3; float dphase = 0.03; PP = transform("shader", P); surf_mag = 0; dist = 0; for (i = 0; i < pattern; i += 1) { c = (udn(i * 132 + 0.5, 0.3, .8), 0, udn(i * 892 + 0.5, -.3, -0.2)); dist = distance(PP, c); dist = udn(noise(PP * 0.4) * 9, -0.35, -0.25); lay_mag = sin(dist * 2 * PI * patternfreq + dphase * sqrt(patternfreq)) / patternfreq ; surf_mag += lay_mag * patternfreq; } PP = P + -Km *surf_mag * normalize(N); N = calculatenormal(PP); }