<!DOCTYPEhtml><html><head><metacharset="UTF-8"><title></title><style>body{margin: 0;overflow: hidden;background: #1e1f26 }canvas{width: 100%;height: 100% }.logo{color: #FFF;font-size: 4rem;position: absolute;top:50%;left:50%;transform:translate(-50%,-50%);}</style></head><body><scriptsrc="https://cdn.bootcss.com/three.js/100/three.min.js"></script><scriptid="vertexShader"type="x-shader/x-vertex">
varying vec2 v_uv;voidmain(){
v_uv = uv;
gl_Position = projectionMatrix * modelViewMatrix *vec4(position,1.);}</script><!-- FragmentShader code here --><!-- // built from the tutorial https://www.youtube.com/watch?v=dhuigO4A7RY --><scriptid="fragmentShader"type="x-shader/x-fragment">
#define PI26.28318530718
#define PI3.1415926535897
uniform vec2 u_mouse;
uniform vec2 u_resolution;
uniform float u_time;
varying vec2 v_uv;
mat2 r2(float a){returnmat2(cos(a),-sin(a),sin(a),cos(a));}// Noise from @iq - https://www.shadertoy.com/view/Msf3WH// check and swap with some other noise functions.
vec2 hash2(vec2 p){
p =vec2(dot(p,vec2(127.1,311.7)),dot(p,vec2(269.5,183.3)));return-1.0+2.0*fract(sin(p)*43758.5453123);}
float noise2(in vec2 p){const float K1=0.366025404;// (sqrt(3)-1)/2;const float K2=0.211324865;// (3-sqrt(3))/6;
vec2 i =floor( p +(p.x+p.y)*K1);
vec2 a = p - i +(i.x+i.y)*K2;
float m =step(a.y,a.x);
vec2 o =vec2(m,1.0-m);
vec2 b = a - o +K2;
vec2 c = a -1.0+2.0*K2;
vec3 h =max(0.5-vec3(dot(a,a),dot(b,b),dot(c,c)),0.0);
vec3 n = h*h*h*h*vec3(dot(a,hash2(i+0.0)),dot(b,hash2(i+o)),dot(c,hash2(i+1.0)));returndot( n,vec3(75.3));}// end noise function
float star(vec2 p, float flare){
float d =length(p);// falloff for light
float m =.01/d;
float col = m;// light rays
float rays =max(0.,.45-abs(p.x*p.y*1000.));
col += rays * flare;// rotate and do again
p *=r2(PI/4.);
rays =max(0.,.5-abs(p.x*p.y*1000.));
col += rays *.3* flare;
col *=smoothstep(.5,.2,d);return col;}
vec3 star_layer(vec2 p){
vec3 col =vec3(0.);
vec2 pg =fract(p)-.5;
vec2 id =floor(p);for(int y=-1;y<=1;y++){for(int x=-1;x<=1;x++){
vec2 offset =vec2(x,y);
float pid =noise2(id+offset);
float size =fract(pid*345.32);
float rn =fract(pid*645.32);//position
vec2 pos = pg-offset-(vec2(pid,fract(pid*2.))-.5);
float star =star(pos,smoothstep(.86,1.,size));// color stuff
vec3 wv =vec3(1., rn, rn)*sin(pid*943.321+u_time*.5)*PI;
vec3 color =sin(wv)*1.5+1.5;
star *=sin(u_time*2.5+pid*6.2831)*1.+1.5;// slap that math tother
col+= star*size*color;}}return col;}voidmain(){// Adjust coords to center of the screen and// corect pixel aspect ratio
vec2 uv =(gl_FragCoord.xy-.5*u_resolution.xy)/u_resolution.y;
vec2 ms =(u_mouse.xy-u_resolution.xy*.5)/u_resolution.y;
uv *=.5;
vec3 col =vec3(0.);
uv *=r2(ms.x*.25);for(float i=0.; i<1.; i+=1./5.){
float depth =fract(i+u_time*.1);
float scale =mix(20.,1.,depth);
float fade = depth*smoothstep(1.,.9,depth);//uv +=ms;
col +=star_layer(uv*scale+(i*32.)+ms)*fade;}
gl_FragColor =vec4(col,1.0);}</script><scriptsrc="js/main.js"></script></body></html>