summaryrefslogtreecommitdiff
path: root/shaders/shader.frag
blob: 7566a89cd9c0028e0e6ebc006d31e8835942144d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#version 450

layout(location = 0) in vec3 fragColor;

layout(location = 0) out vec4 outColor;

vec4 mainImage();

void main() {
    if(mod (gl_FragCoord.x,3.0)  < 1 && mod(gl_FragCoord.y,2.0) > 1)
        outColor = vec4(1,1,1,1.0);
    else
        outColor = mainImage(); //vec4(fragColor, 1.0);

}


// https://www.shadertoy.com/view/WdsGzM

#define PI 3.14159265359

vec2 rotate2d(vec2 uv,float _angle){return mat2(cos(_angle),-sin(_angle),sin(_angle),cos(_angle)) * uv;}
vec2 scale2d(vec2 uv,float _scale){return  uv * mat2(_scale,0.0,0.0,_scale);}

float random (vec2 st) {
    return fract(sin(dot(st.xy,vec2(20.,100.)))*10000.);
}

vec4 mainImage()
{
    vec2 fragCoord;
    fragCoord.x=gl_FragCoord.x;
    fragCoord.y=gl_FragCoord.y;
    int iTime = 0;
    vec2 iResolution = vec2(800,600);

    ///
    vec2 uv = fragCoord/iResolution.xy;
    uv.x *= iResolution.x / iResolution.y;
    uv=rotate2d(uv,1.+fract(iTime*0.02)*2.*PI);
    uv*=5.+0.4*sin(iTime/2.);


    vec2 pos = vec2(0.5)-fract(uv);
    pos=rotate2d(pos,fract(iTime*0.4+random(floor(uv)))*2.*PI);
    pos=scale2d(pos,0.5+sin(random(uv+fract(iTime)*2.*PI)));


    float r = length(pos)*2.0;
    float a = atan(pos.y,pos.x);
	float f = smoothstep(-.0,1., cos(a*max(3.,floor(abs(uv.x))*floor(abs(uv.y)))))*0.3+0.5;
    vec3 color = vec3( 1.-smoothstep(f,f+0.02,r) );
    return vec4(color*vec3(0.1,0.5*random(floor(uv)),0.8+0.1*sin(2.*PI*fract(iTime*0.3))),1.0);

}