/* 2024-03-09 * rewrite of https://shadertoy.com/view/X3l3Rr * * gcc -Wall -o increment-tan increment-tan.c -lm * ./increment-tan | ffmpeg -f rawvideo -s 512x256 -r 25 -pix_fmt gray -i - -vf palettegen /tmp/palette.png * ./increment-tan | ffmpeg -f rawvideo -s 512x256 -r 25 -pix_fmt gray -i - -i /tmp/palette.png -filter_complex paletteuse /tmp/increment-tan.gif */ #if 0 /* original shader */ #define rotation(angle) mat2(cos(angle), -sin(angle), sin(angle), cos(angle)); float PI = 3.14159; float TAU = 2.*3.14159; void mainImage( out vec4 fragColor, in vec2 fragCoord ) { vec2 uv = ( fragCoord - .5* iResolution.xy ) /iResolution.y; uv *= .7; vec3 col = vec3(0.); float a = (3.*PI/2.)*pow(1.-length(uv),5.); uv *= rotation(tan(a)); uv.y += .2*sin(iTime+3.*TAU*uv.x)*(1.1-pow(length(uv),.25)); col += .01/(10.*pow(uv.y,2.)); fragColor = vec4(col,1.0); } #endif #include #include int main (void ){for (int n=0;n<9830400; n++ ){float u=256-(n&511 ),v =(n>>9&255) -128,l =sqrt (u*u+v*v)/ 333, a=tan ((1.5*M_PI )*pow (1- l,5)),c=cos (a), s=sin (a );a=u *s+v* c+67* sin (M_PI /50*(u*c-v*s- ( n>> 17)/.75))*(1.1 -pow (l,.25)) ;a= 28333 /a/a ;putchar (a>255?255:a);}return 0;}