Daily Creative Coding

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

【GLSL】1次元のバリューノイズ

See the Pen 1D value noise 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) * 43758.5453123);
}

float noise(float v) {
  float i = floor(v);
  float f = fract(v);
  // return random(i);
  // return mix(random(i), random(i + 1.), f);
  // return mix(random(i), random(i + 1.), smoothstep(0., 1., f));
  float u = f * f * (3. - 2. * f );
  return mix(random(i), random(i + 1.), f);
}

void main(void) {
  float d = distance(gl_FragCoord.xy, u_resolution / 2.);
  float v = noise(d * .03 - u_time * .001);
  gl_FragColor = vec4(vec3(v), 1.);
}
f:id:aa_debdeb:20170403081356p:plain