0.00
60.0 fps
Digital rain2
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=100, step=1
uniform float speed; // value=0.6, min=-10, max=10, step=0.1
uniform float seed; // value=871803, min=0, max=1000000, step=1
uniform int isBitFit;// value=0., min=0, max=1, step=1. (false, true)
uniform float ci_1; // value=2.02, min=0, max=10, step=0.01
uniform float ci_2; // value=0.8, min=0, max=10, step=0.01
uniform float ci_3; // value=0.85, min=0, max=1, step=0.01
uniform float ci_3_speed; // value=6.5, min=-20, max=20, step=0.1
out vec4 fragColor;
float random(in vec2 uv) {
return fract(sin(dot(uv.xy, vec2(12.9898,78.233))) * 43758.5453);
}
float randomf(vec2 p, float s) {
float id = floor(random(vec2((p.y-(iTime*s))))); //float id = bool(isPixelFit) ? floor(random(vec2((p.y-(iTime*s))))) : random(vec2((p.y-(iTime*s))));
return tan(-p.y*ci_1 / cos(p.x*ci_1 - 5.) / random(vec2(seed)) - id)*0.5 + sin(-p.y*ci_2 / tan(p.x*ci_2 + 3.) / random(vec2(seed)) - id)*0.5 - sin(iTime*random(p)*ci_3_speed)*ci_3;
}
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 += bool(isBitFit) ? floor(iTime*speed)/float(rectNumber)*2. : iTime*speed;
vec2 ID = floor(UV*float(rectNumber)*0.5);
float rcolor = randomf(ID, speed);
vec3 color = vec3(0., 1., 0.)*vec3(rcolor)*digitChar(rcolor < 0.5, fract(UV*float(rectNumber)*0.5));
fragColor = vec4(color,1.0);
}