weird: added hud
This commit is contained in:
105
weird/hud.glsl
Normal file
105
weird/hud.glsl
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
#ifdef GL_ES
|
||||||
|
precision mediump float;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define PI 3.14159265359
|
||||||
|
#define blue1 vec3(0.74,0.95,1.00)
|
||||||
|
#define blue2 vec3(0.87,0.98,1.00)
|
||||||
|
#define blue3 vec3(0.35,0.76,0.83)
|
||||||
|
#define blue4 vec3(0.953,0.969,0.89)
|
||||||
|
#define red vec3(1.00,0.38,0.227)
|
||||||
|
|
||||||
|
uniform vec2 u_resolution;
|
||||||
|
uniform float u_time;
|
||||||
|
|
||||||
|
mat2 rotate2d(float a) {
|
||||||
|
float c = cos(a);
|
||||||
|
return mat2(c, -sin(a), sin(a), c);
|
||||||
|
}
|
||||||
|
|
||||||
|
vec2 get_center() {
|
||||||
|
return(u_resolution/2.)/min(u_resolution.x, u_resolution.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
vec2 get_st() {
|
||||||
|
return gl_FragCoord.xy/min(u_resolution.x, u_resolution.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
float dist(vec2 center) {
|
||||||
|
vec2 st = get_st();
|
||||||
|
return distance(st, center);
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 circle(vec2 center, float width, float rad, vec3 color) {
|
||||||
|
float e = 0.003;
|
||||||
|
float d = dist(center);
|
||||||
|
vec3 res = color;
|
||||||
|
res *= smoothstep(rad-width/2.-e, rad-width/2., d);
|
||||||
|
res *= 1.-smoothstep(rad+width/2., rad+width/2.+e, d);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 circle_with_trace(vec2 center, float width, float rad, vec3 color) {
|
||||||
|
float e = 0.003;
|
||||||
|
float d = dist(center);
|
||||||
|
float trace = 0.08;
|
||||||
|
vec3 res = color;
|
||||||
|
res *= smoothstep(rad-width/2.-e, rad-width/2., d);
|
||||||
|
res *= 1.-smoothstep(rad+width/2., rad+width/2.+e, d);
|
||||||
|
return (res+color*.5*(smoothstep(rad-trace, rad, d)-step(rad, d)));
|
||||||
|
}
|
||||||
|
|
||||||
|
float circle_clip(float radius) {
|
||||||
|
float d = dist(get_center());
|
||||||
|
return 1.-step(radius, d);
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 floating_circle() {
|
||||||
|
vec2 pos = vec2(cos(u_time)*sin(u_time), sin(u_time))*.5+get_center();
|
||||||
|
return circle(pos, 0.002, 0.002, vec3(1.));
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 line(float width, float angle, vec3 color, vec2 origin) {
|
||||||
|
float e = 0.003;
|
||||||
|
vec2 st = get_st();
|
||||||
|
st -= origin;
|
||||||
|
st *= rotate2d(angle);
|
||||||
|
return color*((smoothstep(-e, 0., st.x)-smoothstep(0., e, st.x)));
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 line_with_trace(float width, float angle, vec3 color, vec2 origin) {
|
||||||
|
float e = 0.003;
|
||||||
|
float trace = 0.9 * dist(get_center());
|
||||||
|
vec2 origst = get_st();
|
||||||
|
vec2 st = origst - origin;
|
||||||
|
st *= rotate2d(angle);
|
||||||
|
return (color*(smoothstep(-e, 0., st.x)-smoothstep(0., e, st.x))+color*.5*(step(0., st.x)-smoothstep(0., trace, st.x)))*step(0., -st.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 target() {
|
||||||
|
vec2 center = vec2(cos(u_time*0.5), sin(u_time*0.5))*0.2+get_center()+vec2(cos(u_time*0.3), sin(u_time*0.3))*0.25;
|
||||||
|
vec3 blink = circle(center, 0.01, 0.005, red) * step(0.5, abs(sin(u_time*8.)));
|
||||||
|
vec3 border = circle(center, 0.003, 0.02, red);
|
||||||
|
vec3 impulse = circle_with_trace(center, 0.003, mod(u_time, 1.)*0.12+0.03, red);
|
||||||
|
return blink+border+impulse;
|
||||||
|
}
|
||||||
|
|
||||||
|
void main(){
|
||||||
|
vec3 color = vec3(0.0);
|
||||||
|
vec2 st = get_st();
|
||||||
|
float clip = circle_clip(.5);
|
||||||
|
|
||||||
|
|
||||||
|
color += circle(get_center(), 0.002, 0.02, blue1);
|
||||||
|
color += circle(get_center(), 0.002, 0.3, blue1);
|
||||||
|
color += circle(get_center(), 0.002, 0.4, blue1);
|
||||||
|
color += circle(get_center(), 0.005, 0.5, vec3(0.8));
|
||||||
|
color += circle(get_center(), 0.007, 0.6, blue1);
|
||||||
|
color += clip*line(0.001, PI/4., vec3(.5), get_center());
|
||||||
|
color += clip*line(0.001, -PI/4., vec3(.5), get_center());
|
||||||
|
color += clip*line_with_trace(0.001, u_time, blue2, get_center());
|
||||||
|
color += floating_circle();
|
||||||
|
color += target();
|
||||||
|
|
||||||
|
gl_FragColor = vec4(color,1.0);
|
||||||
|
}
|
Reference in New Issue
Block a user