Created
August 31, 2020 14:18
-
-
Save solsarratea/f1bf85b8085d0ac8a7274b8eb01b8779 to your computer and use it in GitHub Desktop.
2D galaxy
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
float r21 (vec2 p) { | |
p = fract(p*vec2(233.34,851.79)); | |
p += dot(p,p+23.34); | |
return fract(p.x*p.y); | |
} | |
vec2 r22 (vec2 p) { | |
float n = r21(p); | |
return vec2(n,r21(p+n)); | |
} | |
////////////////////////////////////////////////////// | |
//2D WORLD | |
vec2 gpos (vec2 id, vec2 offset){ | |
vec2 n = r22(id +offset)*time; | |
return offset + sin(n) *0.45; | |
} | |
float dline (vec2 p, vec2 s, vec2 e){ | |
vec2 ps = p-s; | |
vec2 es = e-s; | |
float t = clamp(dot(ps,es)/dot(es,es),0.,1.); | |
return length(ps-es*t); | |
} | |
float line (vec2 p, vec2 s, vec2 e){ | |
float d = dline(p,s,e); | |
float r = smoothstep(.15,0.02,d); | |
float d2 = length(s-e); | |
float brighter = smoothstep(1.,0.2,abs(d2-.35)); | |
r *=smoothstep(1.8,.1,d2) + brighter*2.; | |
return r; | |
} | |
void neigh(vec2 grid, vec2 id,inout float m){ | |
vec2 a[9]; | |
vec3 p = vec3(-1.,0.,1.); | |
a[0]= gpos(id,vec2(p.x,p.x)); | |
a[1]= gpos(id,vec2(p.x,p.y)); | |
a[2]= gpos(id,vec2(p.x,p.z)); | |
a[3]= gpos(id,vec2(p.y,p.x)); | |
a[4]= gpos(id,vec2(p.y,p.y)); | |
a[5]= gpos(id,vec2(p.y,p.z)); | |
a[6]= gpos(id,vec2(p.z,p.x)); | |
a[7]= gpos(id,vec2(p.z,p.y)); | |
a[8]= gpos(id,vec2(p.z,p.z)); | |
for (int i=0; i<9; i++){ | |
m += line(grid, a[4],a[i]); | |
vec2 j = (a[i]-grid)*12.; | |
float sparkle = 3./dot(j,j); | |
m+= sparkle * (abs(sin(time+fract(a[i].x)*.4))); | |
} | |
m += line(grid, a[1],a[3]); | |
m += line(grid, a[1],a[5]); | |
m += line(grid, a[7],a[3]); | |
m += line(grid, a[5],a[7]); | |
} | |
void main () { | |
float l; vec4 color = vec4(0.); | |
vec2 pos = uv(); | |
float size = 6.; | |
float m = -0.02; | |
vec2 grid = fract(pos*size) - 0.5; | |
vec2 id = floor(pos*size); | |
neigh(grid,id,m); | |
color.gb -= abs(id)*.13; | |
color += m; | |
gl_FragColor = color; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment