0.00
60.0 fps
Digital rain
0101001
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);
}