#include displacement tidles(float Km = 0.1, fuzz = 0.5, sfreq = 55, tfreq = 30) { float ss, tt, row, col; float radius, d, noi, x, y, z, q, half_width; float surface_mag, layer_mag, tot_mag; point center; surface_mag = 0; ss = s; tt = t; row = whichtile(tt, tfreq); col = whichtile(ss, sfreq); ss = repeat(ss, sfreq); tt = repeat(tt, tfreq); center = (0.15, 0.15, 0); radius = 1.25; half_width = 0.05; for (x = -1; x <= 1; x += 1) { for (y = -1; y <= 1; y += 1) { z = ss - x; q = tt - y; noi = noise((col + x) * sfreq + 0.25, (row + y) * tfreq + 0.25); z = z + udn(noi * 6789, -0.25, 0.25); q = q + udn(noi * 3456, -0.25, 0.25); radius = 0.25 + udn(noi * 456, -0.1, 0.1); d = distance(center * udn(noi * 56, -0.1, 0.1), (z, q, 0))/32; tot_mag = pulse(radius - half_width, radius + half_width, fuzz, d); layer_mag = tot_mag; surface_mag = mix(surface_mag, layer_mag, layer_mag); }} P += Km * surface_mag * normalize(N); N = calculatenormal(P); }