#include "rmannotes.sl" displacement wavegrid(float freq, phase) { float Km = 0.1; float magnitude, layer_mag; float tile_s, tile_t; float d; magnitude = 0; tile_s = repeat(s, 4); tile_t = repeat(t, 4); /*vertical and horizontal bars, non-intersecting */ layer_mag = pulse(tile_s, .35, .65, .05); magnitude = max(magnitude, layer_mag); layer_mag = pulse(tile_t, .35, .65, .05); magnitude = max(magnitude, layer_mag); rotate2d(s, t, 45, .5, .5, tile_s, tile_t); /*lower height ring, non-interfering*/ layer_mag = pulse(distance((.5, .5, 0), (tile_s, tile_t, 0)), .35, .45, .01); layer_mag *= .5; magnitude = max(magnitude, layer_mag); /*points, interfering (added on top of bars)*/ layer_mag = 1 - smoothstep(.0, .1, distance((.5, .5, 0), (tile_s, tile_t, 0))); layer_mag *= .5; magnitude += layer_mag; d = distance((s, t, 0), (1.7, -.4, 0)); layer_mag = sin(d * 1 * PI * freq + phase); layer_mag *= 1; magnitude += layer_mag; /* compute dispalcement */ P += -Km * magnitude * normalize(N); N = calculatenormal(P); }