Skip to content

Instantly share code, notes, and snippets.

@bdon
Last active June 15, 2018 20:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save bdon/7fe35ebe473ee14c799ab698e72e9898 to your computer and use it in GitHub Desktop.
Save bdon/7fe35ebe473ee14c799ab698e72e9898 to your computer and use it in GitHub Desktop.
rc computer
//https://thebookofshaders.com/edit.php
#ifdef GL_ES
precision mediump float;
#endif
uniform vec2 u_resolution;
uniform vec2 u_mouse;
uniform float u_time;
vec3 gray = vec3(22./255.,25./255.,25./255.);
float box(in vec2 st, in vec2 bl, in vec2 sz) {
vec2 uv = step(st,bl) - step(st, vec2(bl.x + sz.x, bl.y + sz.y));
return uv.x*uv.y;
}
vec3 greenBlinky(in vec2 st, in vec2 pos, in vec2 size, in float timeMult) {
return (box(st, pos, size) * vec3(0.225,0.495,0.290) * abs(sin(u_time*timeMult)));
}
float keyDown(in float btm, in float timeOffset)
{
if (sin((u_time + timeOffset) * 2.) < -0.95)
{
return btm - 0.01;
}
return btm;
}
void main() {
vec2 st = gl_FragCoord.xy/u_resolution.xy;
vec3 color = vec3(22./255.,25./255.,25./255.);
vec2 bl = step(vec2(0.15,0.05),st);
float pct = bl.x * bl.y;
color += vec3(1.-pct);
vec2 tr = step(vec2(0.15,0.05),1.0-st);
pct *= tr.x * tr.y;
color += (1.-pct);
color += box(st,vec2(0.150,0.27),vec2(0.25,0.07));
color += box(st,vec2(0.600,0.27),vec2(0.25,0.07));
color += box(st,vec2(0.8,0.22),vec2(0.2,0.06));
color += box(st,vec2(0.000,0.22),vec2(0.2,0.06));
color += box(st, vec2(.2,.4), vec2(.6,.5));
color -= box(st, vec2(.25,.45), vec2(.5,.4));
color += greenBlinky(st,vec2(0.25,0.710),vec2(0.07,0.07),2.);
color += greenBlinky(st,vec2(0.39,0.710),vec2(0.07,0.07),1.5);
color += greenBlinky(st,vec2(0.53,0.710),vec2(0.07,0.07),1.75);
color += greenBlinky(st,vec2(0.320,0.570),vec2(0.14,0.07),1.8);
color += greenBlinky(st,vec2(0.530,0.570),vec2(0.14,0.07),1.9);
float keysize = 0.06;
float keyboardleft = 0.25;
bool isOdd = false;
for (int i = 0; i < 8; i++) {
float btm = 0.1;
if (isOdd) {
btm = 0.16;
}
float left = keyboardleft + float(i) * keysize;
vec2 bl = vec2(left, keyDown(btm, sin(float(i) * 2. + 2.)));
vec2 size = vec2(keysize, keysize);
color += box(st, bl, size) * vec3(1., 1., 1.);
isOdd = !isOdd;
}
gl_FragColor = vec4(color,1.0);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment