Daily Creative Coding

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

【GLSL】メタボール

See the Pen blobs by aadebdeb (@aadebdeb) on CodePen.

precision mediump float;

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

float circle(in vec2 pos, in vec2 center, in float radius) {
  float d = distance(pos, center) + 0.001;
  return radius / d;
}

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

void main(void) {

  float v = 0.0;
  for (int i = 0; i < 10; i++) {
    vec2 center = u_resolution / 2.0 + 200.0 * vec2(sin(u_time * random(float(i + 1)) * 0.003), sin(u_time * random(float(i * 2 + 1)) * 0.003));
    // vec2 center = u_mouse;
    v += circle(gl_FragCoord.xy, center, 15.0);
  }

  gl_FragColor = vec4(vec3(v), 1.0);
}
f:id:aa_debdeb:20170331075848p:plain