Skip to content

Instantly share code, notes, and snippets.

@kofigumbs
Created October 16, 2019 20:37
Show Gist options
  • Save kofigumbs/98e816b836f7d39ff3491e54e409f48c to your computer and use it in GitHub Desktop.
Save kofigumbs/98e816b836f7d39ff3491e54e409f48c to your computer and use it in GitHub Desktop.

Revisions

  1. kofigumbs created this gist Oct 16, 2019.
    42 changes: 42 additions & 0 deletions kodelife-image-animation.glsl
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,42 @@
    #version 150

    uniform float time;
    uniform vec2 resolution;
    uniform sampler2D bitmoji;

    in VertexData
    {
    vec4 v_position;
    vec3 v_normal;
    vec2 v_texcoord;
    } inData;

    out vec4 fragColor;

    vec2 dance(float time, vec2 uv, vec2 point, vec2 offset) {
    int animSteps = 60;
    float animDist = 0.003;
    vec2 diff = abs(uv - point);
    vec2 value = vec2(0.);
    for(int i = 0; i < animSteps; i++) {
    if (diff.y < i*animDist) {
    value.x += offset.x*time;
    }
    if (diff.x < i*animDist) {
    value.y += offset.y*time;
    }
    }
    return value;
    }

    void main(void)
    {
    vec2 uv = inData.v_texcoord;
    vec2 img = vec2(uv.x, 1-uv.y);

    img += dance(sin(time*4)/4, uv, vec2(0.5, 0.7), vec2(0., 0.0002));
    img += dance(sin(time*8), uv, vec2(0.5, 0.3), vec2(0.0003, 0.));
    img += dance(cos(time*16), uv, vec2(0.5, 0.), vec2(0., 0.0001));

    fragColor = texture(bitmoji, img);
    }