ISF - Shadertoy - escher-like 2 ldyXWw


/*{
	"IMPORTED": [],
	"CATEGORIES": [
		"2d",
		"escher",
		"short",
		"Automatically Converted",
		"Shadertoy"
	],
	"DESCRIPTION": "Automatically converted from https://www.shadertoy.com/view/ldyXWw by FabriceNeyret2.  reproducing https://twitter.com/CPriestman/status/684874950944100352/photo/1",
	"INPUTS": []
}
*/


// reproducing https://twitter.com/CPriestman/status/684874950944100352/photo/1

#define R(t) mat2(c=cos(t),s=sin(t),-s,c)                      // R(1.25) = tilted grid

float t, c,s, k=sqrt(10.); 
vec2 R, u;

vec4 C(vec2 U, float m) {
    U += m*vec2(1,2);                                   // white (m=0) or black (m=1) grid
    u = floor( R(1.25)*U/k +.5);                                           // tilted grid
    t = clamp( mod( TIME -u.y-.3*u.x+ 3.*m, 6.) -4., 0.,1.) *1.57;  // rotates ?
    if (m>0.) t=-t;                                                        // if black
    u = R(-1.25)*u*k;
    
  //U = floor(R(t)*(U-u)+.5);                                              // cross frame
  //return vec4((U.x==0.||U.y==0.)&&abs(U.x)<2.&&abs(U.y)<2.);             // cross shape
                                                       // antialiased version :
    U = abs( R(t)*(U-u) );                                                 // cross frame
    return vec4(smoothstep(.55, .45, max(min(U.x,U.y),max(U.x,U.y)-1.) )); // cross shape
}

void main() {

vec4 fragCoordPos = gl_FragCoord;

    gl_FragColor -= gl_FragColor; R = RENDERSIZE.xy;
	fragCoordPos.xy =  15.* (fragCoordPos.xy-R/2.)/ R.y; 
    
    if (abs(fragCoordPos.x) < 7.5)  {
        fragCoordPos.xy += 3.;   gl_FragColor =    C(fragCoordPos.xy, 0.);                 // for white rotating wave
        if (t==0.) gl_FragColor = 1.-C(fragCoordPos.xy, 1.);                 // for black rotating wave
    }
}















// -------------- drafts ------------------ 


/** 

#define R(t) mat2(cos(t),sin(t),-sin(t),cos(t))    // R(-1.25) = tilted grid

{
    float t, T = TIME/1.5708, k=sqrt(10.), o = 0.; 
    vec2 R = RENDERSIZE.xy, u;
	U =  15.* (U-R/2.)/ R.y; 
    if (abs(U.x)>7.5) { O-=O; return; }
    U += 3.;

    u = floor(R(1.25)*U/k+.5);
    t = clamp(mod(T,8.)-4.-u.y-.3*u.x,0.,1.)*1.5708; 

    if (t==0.) { 
        o=1.;
        U += vec2(1,2);
        u = floor(R(1.25)*U/k+.5);
        t = -clamp(mod(T+4.,8.)-4.-u.y-.3*u.x,0.,1.)*1.5708; 
    }
   
    u = R(-1.25)*u*k;
    
   
    U = floor(R(t)*(U-u)+.5);
    O = vec4((U.x==0.||U.y==0.)&&abs(U.x)<2.&&abs(U.y)<2.);
    O = o>0. ? 1.-O : O;
}

/**/    


/**

#define M(s) mat2(1,s,-s,1)/sqrt(10.)

{
    float t = TIME, c=cos(t),s=sin(t), l=sqrt(.9),k=sqrt(10.),
          o = 0.; // floor(mod(t/1.5708,2.));
    vec2 u, R = RENDERSIZE.xy;
	U =  15.* (U-R/2.)/ R.y; 
    if (abs(U.x)>7.5) { O-=O; return; }
    U += 3.+ vec2(o,o+o);
	//U *=  15./ RENDERSIZE.y;
    u = M(3)*U;
    u = floor(u/k+.5);
    //u = floor(u/3.*l+.5)*3./l;
    //if (u.y != floor(mod(t/1.5708,8.)-4.)) c=1.,s=0.;
    t = clamp(mod(t/1.5708,8.)-4.-u.y-.3*u.x,0.,1.)*1.5708; c=cos(t),s=sin(t);
    //if (u*l/3.!=vec2(0)) c=1.,s=0.;
    //if (mod(u*l/3.,3.)!=vec2(0)) c=1.,s=0.;
    //O  = vec4(mod(u*l/3.,3.)/3.,0,0); return;
    u = M(-3)*u*k;
    U -= u;
    //O = vec4(length(U)<1.5);
    // O  = vec4(mod(u,3.)/3.,0,0); return;
    
    U = floor(mat2(c,s,-s,c)*U+.5);
    O = vec4((U.x==0.||U.y==0.)&&abs(U.x)<2.&&abs(U.y)<2.);
    O = o>0. ? 1.-O : O;
}
    
/**/




/**
#define M(s) mat2(1,s,-s,1)/sqrt(10.)

{
    float t = TIME, c=cos(t),s=sin(t), l=sqrt(.9),
          o = 0.; // floor(mod(t/1.5708,2.));
    vec2 u, R = RENDERSIZE.xy;
	U =  15.* (U-R/2.)/ R.y + vec2(o,o+o);
	//U *=  15./ RENDERSIZE.y;
    u = M(3)*U;
    u = floor(u/3.*l+.5)*3./l;
    u = M(-3)*u;
    //O = vec4(length(U-u)<1.5);
    
    U = floor(mat2(c,s,-s,c)*(U-u)+.5);
    O = vec4((U.x==0.||U.y==0.)&&abs(U.x)<2.&&abs(U.y)<2.);
    O = o>0. ? 1.-O : O;
}
    
/**/