0.00
60.0 fps

Log in to post a comment.

#version 300 es
precision highp float;

uniform float iTime;
uniform vec2  iResolution;

uniform int rectNumber; // value=26, min=0, max=200, step=1
uniform float speed; // value=9, min=0, max=100, step=0.1
uniform float speed2; // value=20, min=0, max=1000, step=0.1
uniform int isFractRandom;// value=1., min=0, max=1, step=1. (false, true)

out vec4 fragColor;

vec2 random(vec2 uv) {
    return fract(sin(uv.xy*vec2(12.9898, 78.233)) * 43758.5453123);
}

vec2 randomf(vec2 p, float s, bool isfract) {
	vec2 p3 = vec2(1. + cos((p.y*(3.448 + fract(p.x*7.583)))/s)+sin((p.y*2.972 - fract(p.x*4.649))*5./s)+cos(p.y*(2.45345 + fract(p.x*7.45354))/s));
	return isfract ? fract(p3*vec2(723.8495, 389.448)): sin(p3*vec2(7.8495, 9.448));
}

vec3 digitChar(bool isZero, vec2 UV) {

    int rectNumber = 7;

    vec2 ID = floor((UV*float(rectNumber)));
    
    float show;
    
    if (isZero) {
    
        show = ((ID.x == 2. && ID.y == 1.) || (ID.x == 3. && ID.y == 1.) || (ID.x == 4. && ID.y == 1.) || 
            (ID.x == 2. && ID.y == 2.) || (ID.x == 4. && ID.y == 2.) || 
            (ID.x == 2. && ID.y == 3.) || (ID.x == 4. && ID.y == 3.) || 
            (ID.x == 2. && ID.y == 4.) || (ID.x == 4. && ID.y == 4.) || 
            (ID.x == 2. && ID.y == 5.) || (ID.x == 3. && ID.y == 5.) || (ID.x == 4. && ID.y == 5.)) ? 1. : 0.;
    } else {

        show = ((ID.x == 3. && ID.y == 1.) ||
            (ID.x == 3. && ID.y == 2.) || 
            (ID.x == 3. && ID.y == 3.) || 
            (ID.x == 3. && ID.y == 4.) || 
            (ID.x == 3. && ID.y == 5.)) ? 1. : 0.;
    }
    
    return vec3(0., 1., 0.)*show;
}

void main() {
    
    vec2 UV = gl_FragCoord.xy/iResolution.xy;
    UV.x *= iResolution.x/iResolution.y;

    UV = (UV - 0.5)*2.;
    UV.x += (iResolution.x*0.5 - iResolution.x*(iResolution.x/iResolution.y)*0.5)/iResolution.x;
	UV.y += floor(iTime*speed);

    vec2 ID = floor((UV*float(rectNumber)*0.25)*2.);
    float rcolor = randomf(ID, float(rectNumber)*speed2, bool(isFractRandom)).y;
    //float rchar = randomf(ID, 2.954848).x;
    vec3 color = vec3(0., 1., 0.)*vec3(rcolor)*digitChar(rcolor < 0.5, fract(UV*float(rectNumber)*0.5));

    fragColor = vec4(color,1.0);
}