Two seams, a few thousand hairlines, one current that never runs the same way twice. Nobody leaves the frame; they are only born again.
javascript·roi.js
const field = (x, y, t) => {
x = map(x, 0, width, -5, 5);
y = map(y, 0, height, -5, 5);
const n = map(noise(x * 0.6, y * 0.6, t), 0, 1, -1, 1);
const u = sin(5 * y + t) + cos(3 * y) + n;
const v = sin(3 * x) - cos(5 * x - t * 0.7) + n * 1.4;
return createVector(abs(u), v); // only ever downstream
};