// Evolutionary rule: combine curl noise, neighbor attraction, and audio reactivity vec3 noise = curlNoise(pos * 0.05 + u_time * gene.x); vec3 audioForce = texture(u_audioSpectrum, pos.xy * 0.01).rgb * gene.y; vec3 mutation = sin(pos * gene.z + u_time) * gene.w;

// Step 3: Mutation via Noise (Simplex or Perlin) this.mutate();

Reduces hundreds of redundant mouse clicks to a single hotkey combination.