Skip to content

Instantly share code, notes, and snippets.

@nicolashahn
Forked from bdon/computer.glsl
Created June 15, 2018 17:34
Show Gist options
  • Save nicolashahn/06a544d119617cd2dd2c3b6e5ad0f70d to your computer and use it in GitHub Desktop.
Save nicolashahn/06a544d119617cd2dd2c3b6e5ad0f70d 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 _size){
_size = vec2(0.5) - _size*0.5;
vec2 uv = step(_size,_st);
uv *= step(_size,vec2(1.0)-_st);
return uv.x*uv.y;
}
float box2(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)));
}
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.25,0.20), vec2(0.25,0.05));
color += box(st+vec2(-0.25,0.20), vec2(0.25,0.05));
color += box(st+vec2(0.4,0.25), vec2(0.2,0.06));
color += box(st+vec2(-0.4,0.25), vec2(0.2,0.06));
color += box(st+vec2(0.,-0.14), vec2(0.6,0.5));
color -= box(st+vec2(0.,-0.14), vec2(0.5,0.4));
color += greenBlinky(st,vec2(0.215,-0.23),vec2(0.07,0.07),2.);
color += greenBlinky(st,vec2(0.075,-0.23),vec2(0.07,0.07),1.5);
color += greenBlinky(st,vec2(-0.065,-0.23),vec2(0.07,0.07),1.75);
color += greenBlinky(st,vec2(0.110,-0.100),vec2(0.14,0.07),1.8);
color += greenBlinky(st,vec2(-0.100,-0.100),vec2(0.14,0.07),1.9);
float keysize = 0.06;
float keyboardleft = 0.25;
color += box2(st, vec2(keyboardleft,0.1), vec2(keysize, keysize)) * vec3(1,1,1);
color += box2(st, vec2(keyboardleft+keysize,0.16), vec2(keysize, keysize)) * vec3(1,1,1);
color += box2(st, vec2(keyboardleft+2.*keysize,0.1), vec2(keysize, keysize)) * vec3(1,1,1);
color += box2(st, vec2(keyboardleft+3.*keysize,0.16), vec2(keysize, keysize)) * vec3(1,1,1);
color += box2(st, vec2(keyboardleft+4.*keysize,0.1), vec2(keysize, keysize)) * vec3(1,1,1);
color += box2(st, vec2(keyboardleft+5.*keysize,0.16), vec2(keysize, keysize)) * vec3(1,1,1);
color += box2(st, vec2(keyboardleft+6.*keysize,0.1), vec2(keysize, keysize)) * vec3(1,1,1);
color += box2(st, vec2(keyboardleft+7.*keysize,0.16), vec2(keysize, keysize)) * vec3(1,1,1);
gl_FragColor = vec4(color,1.0);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment