Daily Creative Coding

元「30 min. Processing」。毎日、Creative Codingします。

【GLSL】セルパーティクル

See the Pen cell particles by aadebdeb (@aadebdeb) on CodePen.

precision mediump float;

uniform float u_time;
uniform vec2 u_mouse;
uniform vec2 u_resolution;

float random(float v) {
  return fract(sin(v) * 1000000.0);
}

void main(void) {

  float v = length(u_resolution);
  for (int i = 0; i < 20; i++) {
    vec2 offset = vec2(random(float(i * 10)), random(float(i * 100))) * u_resolution;
    vec2 speed = vec2(random(float(i * 1001)), random(float(i * 10000))) * vec2(3.0, 3.0);
    vec2 pos =  mod((speed * u_time * 0.01 + offset), u_resolution);
    float d = distance(gl_FragCoord.xy, pos);
    v = min(v, d);
  }

  gl_FragColor = vec4(vec3(10. / v), 1.0);
}
f:id:aa_debdeb:20170401094143p:plain