#define line1 H_ e_ l_ l_ o_ _ BOLD S_ h_ a_ d_ e_ r_ t_ o_ y_ BOLD _ t_ h_ i_ s_ _ i_ s_ _ m_ y_ #define line2 BLUE p_ r_ o_ p_ o_ r_ t_ i_ o_ n_ a_ l_ BLUE _ f_ o_ n_ t_ _dot _ I_ _ h_ o_ p_ e_ _ y_ o_ u_ #define line3 GREEN l_ i_ k_ e_ GREEN _ i_ t_ _comma _ RED f_ e_ e_ l_ RED _ ITAL f_ r_ e_ e_ ITAL _ t_ o_ _ u_ s_ e_ _ i_ t_ _dot #define line4 a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ y_ z_ #define line5 A_ B_ C_ D_ E_ F_ G_ H_ I_ J_ K_ L_ M_ N_ O_ P_ Q_ R_ S_ T_ U_ V_ W_ X_ Y_ Z_ #define line6 _1 _2 _3 _4 _5 _6 _7 _8 _9 _0 _dot _comma _exclam _question _open1 _close1 _dotdot _dotcomma _equal _add _sub _mul _div _lt _gt _hash _and _or _und _open2 _close2 _open3 _close3 // line function, used in k, v, w, x, y, z, 1, 2, 4, 7 and , // rest is drawn using (stretched) circle(g) // todo: distance fields of s,S, J { and } // todo before we can show shaders :) // float line(vec2 p, vec2 a, vec2 b) { vec2 pa = p - a; vec2 ba = b - a; float h = clamp(dot(pa, ba) / dot(ba, ba), 0.0, 1.0); return length(pa - ba * h); } //These functions are re-used by multiple letters float _u(vec2 uv, float w, float v) { return length(vec2( abs(length(vec2(uv.x, max(0.0,-(.4-v)-uv.y) ))-w) ,max(0.,uv.y-.4))); } float _i(vec2 uv) { return length(vec2(uv.x,max(0.,abs(uv.y)-.4))); } float _j(vec2 uv) { uv.x+=.2; uv.y+=.55; float x = uv.x>0.&&uv.y<0.? abs(length(uv)-.25) :min(length(uv+vec2(0.,.25)), length(vec2(uv.x-.25,max(0.,abs(uv.y-.475)-.475)))); return x; } float _l(vec2 uv) { uv.y -= .2; return length(vec2(uv.x,max(0.,abs(uv.y)-.6))); } float _o(vec2 uv) { return abs(length(vec2(uv.x,max(0.,abs(uv.y)-.15)))-.25); } // Here is the alphabet float aa(vec2 uv) { uv = -uv; float x = abs(length(vec2(max(0.,abs(uv.x)-.05),uv.y-.2))-.2); x = min(x,length(vec2(uv.x+.25,max(0.,abs(uv.y-.2)-.2)))); return min(x,(uv.x<0.?uv.y<0.:atan(uv.x,uv.y+0.15)>2.)?_o(uv):length(vec2(uv.x-.22734,uv.y+.254))); } float bb(vec2 uv) { float x = _o(uv); uv.x += .25; return min(x,_l(uv)); } float cc(vec2 uv) { float x = _o(uv); uv.y= abs(uv.y); return uv.x<0.||atan(uv.x,uv.y-0.15)<1.14?x: min(length(vec2(uv.x+.25,max(0.0,abs(uv.y)-.15))),//makes df right length(uv+vec2(-.22734,-.254))); } float dd(vec2 uv) { uv.x *= -1.; return bb(uv); } float ee(vec2 uv) { float x = _o(uv); return min(uv.x<0.||uv.y>.05||atan(uv.x,uv.y+0.15)>2.?x:length(vec2(uv.x-.22734,uv.y+.254)), length(vec2(max(0.,abs(uv.x)-.25),uv.y-.05))); } float ff(vec2 uv) { uv.x *= -1.; uv.x += .05; float x = _j(vec2(uv.x,-uv.y)); uv.y -= .4; x = min(x,length(vec2(max(0.,abs(uv.x-.05)-.25),uv.y))); return x; } float gg(vec2 uv) { float x = _o(uv); return min(x,uv.x>0.||atan(uv.x,uv.y+.6)<-2.? _u(uv,0.25,-0.2): length(uv+vec2(.23,.7))); } float hh(vec2 uv) { uv.y *= -1.; float x = _u(uv,.25,.25); uv.x += .25; uv.y *= -1.; return min(x,_l(uv)); } float ii(vec2 uv) { return min(_i(uv),length(vec2(uv.x,uv.y-.6))); } float jj(vec2 uv) { uv.x+=.05; return min(_j(uv),length(vec2(uv.x-.05,uv.y-.6))); } float kk(vec2 uv) { float x = line(uv,vec2(-.25,-.1), vec2(0.25,0.4)); x = min(x,line(uv,vec2(-.15,.0), vec2(0.25,-0.4))); uv.x+=.25; return min(x,_l(uv)); } float ll(vec2 uv) { return _l(uv); } float mm(vec2 uv) { //uv.x *= 1.4; uv.y *= -1.; uv.x-=.175; float x = _u(uv,.175,.175); uv.x+=.35; x = min(x,_u(uv,.175,.175)); uv.x+=.175; return min(x,_i(uv)); } float nn(vec2 uv) { uv.y *= -1.; float x = _u(uv,.25,.25); uv.x+=.25; return min(x,_i(uv)); } float oo(vec2 uv) { return _o(uv); } float pp(vec2 uv) { float x = _o(uv); uv.x += .25; uv.y += .4; return min(x,_l(uv)); } float qq(vec2 uv) { uv.x = -uv.x; return pp(uv); } float rr(vec2 uv) { uv.x -= .05; float x =atan(uv.x,uv.y-0.15)<1.14&&uv.y>0.?_o(uv):length(vec2(uv.x-.22734,uv.y-.254)); //)?_o(uv):length(vec2(uv.x-.22734,uv.y+.254))+.4); uv.x+=.25; return min(x,_i(uv)); } float ss(vec2 uv) { if (uv.y <.225-uv.x*.5 && uv.x>0. || uv.y<-.225-uv.x*.5) uv = -uv; float a = abs(length(vec2(max(0.,abs(uv.x)-.05),uv.y-.2))-.2); float b = length(vec2(uv.x-.231505,uv.y-.284)); float x = atan(uv.x-.05,uv.y-0.2)<1.14?a:b; return x; } float tt(vec2 uv) { uv.x *= -1.; uv.y -= .4; uv.x += .05; float x = min(_j(uv),length(vec2(max(0.,abs(uv.x-.05)-.25),uv.y))); return x; } float uu(vec2 uv) { return _u(uv,.25,.25); } float vv(vec2 uv) { uv.x=abs(uv.x); return line(uv,vec2(0.25,0.4), vec2(0.,-0.4)); } float ww(vec2 uv) { uv.x=abs(uv.x); return min(line(uv,vec2(0.3,0.4), vec2(.2,-0.4)), line(uv,vec2(0.2,-0.4), vec2(0.,0.1))); } float xx(vec2 uv) { uv=abs(uv); return line(uv,vec2(0.,0.), vec2(.3,0.4)); } float yy(vec2 uv) { return min(line(uv,vec2(.0,-.2), vec2(-.3,0.4)), line(uv,vec2(.3,.4), vec2(-.3,-0.8))); } float zz(vec2 uv) { float l = line(uv,vec2(0.25,0.4), vec2(-0.25,-0.4)); uv.y=abs(uv.y); float x = length(vec2(max(0.,abs(uv.x)-.25),uv.y-.4)); return min(x,l); } // Capitals float AA(vec2 uv) { float x = length(vec2( abs(length(vec2(uv.x, max(0.0,uv.y-.35) ))-0.25) ,min(0.,uv.y+.4))); return min(x,length(vec2(max(0.,abs(uv.x)-.25),uv.y-.1) )); } float BB(vec2 uv) { uv.y -=.1; uv.y = abs(uv.y); float x = length(vec2( abs(length(vec2(max(0.0,uv.x), uv.y-.25))-0.25) ,min(0.,uv.x+.25))); return min(x,length(vec2(uv.x+.25,max(0.,abs(uv.y)-.5)) )); } float CC(vec2 uv) { float x = abs(length(vec2(uv.x,max(0.,abs(uv.y-.1)-.25)))-.25); uv.y -= .1; uv.y= abs(uv.y); return uv.x<0.||atan(uv.x,uv.y-0.25)<1.14?x: min(length(vec2(uv.x+.25,max(0.0,abs(uv.y)-.25))),//makes df right length(uv+vec2(-.22734,-.354))); } float DD(vec2 uv) { uv.y -=.1; //uv.y = abs(uv.y); float x = length(vec2( abs(length(vec2(max(0.0,uv.x), max(0.0,abs(uv.y)-.25)))-0.25) ,min(0.,uv.x+.25))); return min(x,length(vec2(uv.x+.25,max(0.,abs(uv.y)-.5)) )); } float EE(vec2 uv) { uv.y -=.1; uv.y = abs(uv.y); float x = min(length(vec2(max(0.,abs(uv.x)-.25),uv.y)), length(vec2(max(0.,abs(uv.x)-.25),uv.y-.5))); return min(x,length(vec2(uv.x+.25,max(0.,abs(uv.y)-.5)))); } float FF(vec2 uv) { uv.y -=.1; float x = min(length(vec2(max(0.,abs(uv.x)-.25),uv.y)), length(vec2(max(0.,abs(uv.x)-.25),uv.y-.5))); return min(x,length(vec2(uv.x+.25,max(0.,abs(uv.y)-.5)))); } float GG(vec2 uv) { float x = abs(length(vec2(uv.x,max(0.,abs(uv.y-.1)-.25)))-.25); uv.y -= .1; float a = atan(uv.x,max(0.,abs(uv.y)-0.25)); x = uv.x<0.||a<1.14 || a>3.?x: min(length(vec2(uv.x+.25,max(0.0,abs(uv.y)-.25))),//makes df right length(uv+vec2(-.22734,-.354))); x = min(x,line(uv,vec2(.22734,-.1),vec2(.22734,-.354))); return min(x,line(uv,vec2(.22734,-.1),vec2(.05,-.1))); } float HH(vec2 uv) { uv.y -=.1; uv.x = abs(uv.x); float x = length(vec2(max(0.,abs(uv.x)-.25),uv.y)); return min(x,length(vec2(uv.x-.25,max(0.,abs(uv.y)-.5)))); } float II(vec2 uv) { uv.y -= .1; float x = length(vec2(uv.x,max(0.,abs(uv.y)-.5))); uv.y = abs(uv.y); return min(x,length(vec2(max(0.,abs(uv.x)-.1),uv.y-.5))); } float JJ(vec2 uv) { uv.x += .125; float x = length(vec2( abs(length(vec2(uv.x, min(0.0,uv.y+.15) ))-0.25) ,max(0.,max(-uv.x,uv.y-.6)))); return min(x,length(vec2(max(0.,abs(uv.x-.125)-.125),uv.y-.6))); } float KK(vec2 uv) { float x = line(uv,vec2(-.25,-.1), vec2(0.25,0.6)); x = min(x,line(uv,vec2(-.1, .1), vec2(0.25,-0.4))); // uv.x+=.25; return min(x,length(vec2(uv.x+.25,max(0.,abs(uv.y-.1)-.5)))); } float LL(vec2 uv) { uv.y -=.1; float x = length(vec2(max(0.,abs(uv.x)-.2),uv.y+.5)); return min(x,length(vec2(uv.x+.2,max(0.,abs(uv.y)-.5)))); } float MM(vec2 uv) { uv.y-=.1; float x = min(length(vec2(uv.x-.35,max(0.,abs(uv.y)-.5))), line(uv,vec2(-.35,.5),vec2(.0,-.1))); x = min(x,line(uv,vec2(.0,-.1),vec2(.35,.5))); return min(x,length(vec2(uv.x+.35,max(0.,abs(uv.y)-.5)))); } float NN(vec2 uv) { uv.y-=.1; float x = min(length(vec2(uv.x-.25,max(0.,abs(uv.y)-.5))), line(uv,vec2(-.25,.5),vec2(.25,-.5))); return min(x,length(vec2(uv.x+.25,max(0.,abs(uv.y)-.5)))); } float OO(vec2 uv) { return abs(length(vec2(uv.x,max(0.,abs(uv.y-.1)-.25)))-.25); } float PP(vec2 uv) { float x = length(vec2( abs(length(vec2(max(0.0,uv.x), uv.y-.35))-0.25) ,min(0.,uv.x+.25))); return min(x,length(vec2(uv.x+.25,max(0.,abs(uv.y-.1)-.5)) )); } float QQ(vec2 uv) { float x = abs(length(vec2(uv.x,max(0.,abs(uv.y-.1)-.25)))-.25); uv.y += .3; uv.x -= .2; return min(x,length(vec2(abs(uv.x+uv.y),max(0.,abs(uv.x-uv.y)-.2)))/sqrt(2.)); } float RR(vec2 uv) { float x = length(vec2( abs(length(vec2(max(0.0,uv.x), uv.y-.35))-0.25) ,min(0.,uv.x+.25))); x = min(x,length(vec2(uv.x+.25,max(0.,abs(uv.y-.1)-.5)) )); return min(x,line(uv,vec2(0.0,0.1),vec2(0.25,-0.4))); } float SS(vec2 uv) { uv.y -= .1; if (uv.y <.275-uv.x*.5 && uv.x>0. || uv.y<-.275-uv.x*.5) uv = -uv; float a = abs(length(vec2(max(0.,abs(uv.x)),uv.y-.25))-.25); float b = length(vec2(uv.x-.236,uv.y-.332)); float x = atan(uv.x-.05,uv.y-0.25)<1.14?a:b; return x; } float TT(vec2 uv) { uv.y -= .1; float x = length(vec2(uv.x,max(0.,abs(uv.y)-.5))); return min(x,length(vec2(max(0.,abs(uv.x)-.25),uv.y-.5))); } float UU(vec2 uv) { float x = length(vec2( abs(length(vec2(uv.x, min(0.0,uv.y+.15) ))-0.25) ,max(0.,uv.y-.6))); return x; } float VV(vec2 uv) { uv.x=abs(uv.x); return line(uv,vec2(0.25,0.6), vec2(0.,-0.4)); } float WW(vec2 uv) { uv.x=abs(uv.x); return min(line(uv,vec2(0.3,0.6), vec2(.2,-0.4)), line(uv,vec2(0.2,-0.4), vec2(0.,0.2))); } float XX(vec2 uv) { uv.y -= .1; uv=abs(uv); return line(uv,vec2(0.,0.), vec2(.3,0.5)); } float YY(vec2 uv) { return min(min(line(uv,vec2(.0, .1), vec2(-.3, 0.6)), line(uv,vec2(.0, .1), vec2( .3, 0.6))), length(vec2(uv.x,max(0.,abs(uv.y+.15)-.25)))); } float ZZ(vec2 uv) { float l = line(uv,vec2(0.25,0.6), vec2(-0.25,-0.4)); uv.y-=.1; uv.y=abs(uv.y); float x = length(vec2(max(0.,abs(uv.x)-.25),uv.y-.5)); return min(x,l); } //Numbers float _11(vec2 uv) { return min(min( line(uv,vec2(-0.2,0.45),vec2(0.,0.6)), length(vec2(uv.x,max(0.,abs(uv.y-.1)-.5)))), length(vec2(max(0.,abs(uv.x)-.2),uv.y+.4))); } float _22(vec2 uv) { float x = min(line(uv,vec2(0.185,0.17),vec2(-.25,-.4)), length(vec2(max(0.,abs(uv.x)-.25),uv.y+.4))); uv.y-=.35; uv.x += 0.025; return min(x,abs(atan(uv.x,uv.y)-0.63)<1.64?abs(length(uv)-.275): length(uv+vec2(.23,-.15))); } float _33(vec2 uv) { uv.y-=.1; uv.y = abs(uv.y); uv.y-=.25; return atan(uv.x,uv.y)>-1.?abs(length(uv)-.25): min(length(uv+vec2(.211,-.134)),length(uv+vec2(.0,.25))); } float _44(vec2 uv) { float x = min(length(vec2(uv.x-.15,max(0.,abs(uv.y-.1)-.5))), line(uv,vec2(0.15,0.6),vec2(-.25,-.1))); return min(x,length(vec2(max(0.,abs(uv.x)-.25),uv.y+.1))); } float _55(vec2 uv) { float b = min(length(vec2(max(0.,abs(uv.x)-.25),uv.y-.6)), length(vec2(uv.x+.25,max(0.,abs(uv.y-.36)-.236)))); uv.y += 0.1; uv.x += 0.05; float c = abs(length(vec2(uv.x,max(0.,abs(uv.y)-.0)))-.3); return min(b,abs(atan(uv.x,uv.y)+1.57)<.86 && uv.x<0.? length(uv+vec2(.2,.224)) :c); } float _66(vec2 uv) { uv.y-=.075; uv = -uv; float b = abs(length(vec2(uv.x,max(0.,abs(uv.y)-.275)))-.25); uv.y-=.175; float c = abs(length(vec2(uv.x,max(0.,abs(uv.y)-.05)))-.25); return min(c,cos(atan(uv.x,uv.y+.45)+0.65)<0.||(uv.x>0.&& uv.y<0.)?b: length(uv+vec2(0.2,0.6))); } float _77(vec2 uv) { return min(length(vec2(max(0.,abs(uv.x)-.25),uv.y-.6)), line(uv,vec2(-0.25,-0.39),vec2(0.25,0.6))); } float _88(vec2 uv) { float l = length(vec2(max(0.,abs(uv.x)-.08),uv.y-.1+uv.x*.07)); uv.y-=.1; uv.y = abs(uv.y); uv.y-=.245; return min(abs(length(uv)-.255),l); } float _99(vec2 uv) { uv.y-=.125; float b = abs(length(vec2(uv.x,max(0.,abs(uv.y)-.275)))-.25); uv.y-=.175; float c = abs(length(vec2(uv.x,max(0.,abs(uv.y)-.05)))-.25); return min(c,cos(atan(uv.x,uv.y+.45)+0.65)<0.||(uv.x>0.&& uv.y<0.)?b: length(uv+vec2(0.2,0.6))); } float _00(vec2 uv) { uv.y-=.1; return abs(length(vec2(uv.x,max(0.,abs(uv.y)-.25)))-.25); } //Symbols float ddot(vec2 uv) { uv.y+=.4; return length(uv)*0.97;//-.03; } float comma(vec2 uv) { return min(ddot(uv),line(uv,vec2(.031,-.405),vec2(-.029,-.52))); } float exclam(vec2 uv) { return min(ddot(uv),length(vec2(uv.x,max(0.,abs(uv.y-.2)-.4)))-uv.y*.06); } float question(vec2 uv) { float x = min(ddot(uv),length(vec2(uv.x,max(0.,abs(uv.y+.035)-.1125)))); uv.y-=.35; uv.x += 0.025; return min(x,abs(atan(uv.x,uv.y)-1.05)<2.?abs(length(uv)-.275): length(uv+vec2(.225,-.16))-.0); } float open1(vec2 uv) { uv.x-=.62; return abs(atan(uv.x,uv.y)+1.57)<1.? abs(length(uv)-.8) :length(vec2(uv.x+.435,abs(uv.y)-.672)); } float close1(vec2 uv) { uv.x = -uv.x; return open1(uv); } float dotdot(vec2 uv) { uv.y -= .1; uv.y = abs(uv.y); uv.y-=.25; return length(uv); } float dotcomma(vec2 uv) { uv.y -= .1; float x = line(uv,vec2(.0,-.28),vec2(-.029,-.32)); uv.y = abs(uv.y); uv.y-=.25; return min(length(uv),x); } float eequal(vec2 uv) { uv.y -= .1; uv.y = abs(uv.y); return length(vec2(max(0.,abs(uv.x)-.25),uv.y-.15)); } float aadd(vec2 uv) { uv.y -= .1; return min(length(vec2(max(0.,abs(uv.x)-.25),uv.y)), length(vec2(uv.x,max(0.,abs(uv.y)-.25)))); } float ssub(vec2 uv) { return length(vec2(max(0.,abs(uv.x)-.25),uv.y-.1)); } float mmul(vec2 uv) { uv.y -= .1; uv = abs(uv); return min(line(uv,vec2(0.866*.25,0.5*.25),vec2(0.)) ,length(vec2(uv.x,max(0.,abs(uv.y)-.25)))); } float ddiv(vec2 uv) { return line(uv,vec2(-0.25,-0.4),vec2(0.25,0.6)); } float lt(vec2 uv) { uv.y-=.1; uv.y = abs(uv.y); return line(uv,vec2(0.25,0.25),vec2(-0.25,0.)); } float gt(vec2 uv) { uv.x=-uv.x; return lt(uv); } float hash(vec2 uv) { uv.y-=.1; uv.x -= uv.y*.1; uv = abs(uv); return min(length(vec2(uv.x-.125,max(0.,abs(uv.y)-.3))), length(vec2(max(0.,abs(uv.x)-.25),uv.y-.125))); } float and(vec2 uv) { uv.y-=.44; uv.x+=.05; float x = abs(atan(uv.x,uv.y))<2.356?abs(length(uv)-.15):1.0; x = min(x,line(uv,vec2(-0.106,-0.106),vec2(0.4,-0.712))); x = min(x,line(uv,vec2( 0.106,-0.106),vec2(-0.116,-0.397))); uv.x-=.025; uv.y+=.54; x = min(x,abs(atan(uv.x,uv.y)-.785)>1.57?abs(length(uv)-.2):1.0); return min(x,line(uv,vec2( 0.141,-0.141),vec2( 0.377,0.177))); } float or(vec2 uv) { uv.y -= .1; return length(vec2(uv.x,max(0.,abs(uv.y)-.5))); } float und(vec2 uv) { return length(vec2(max(0.,abs(uv.x)-.25),uv.y+.4)); } float open2(vec2 uv) { uv.y -= .1; uv.y = abs(uv.y); return min(length(vec2(uv.x+.125,max(0.,abs(uv.y)-.5))), length(vec2(max(0.,abs(uv.x)-.125),uv.y-.5))); } float close2(vec2 uv) { uv.x=-uv.x; return open2(uv); } float open3(vec2 uv) { uv.y -= .1; uv.y = abs(uv.y); float x = length(vec2( abs(length(vec2((uv.x*sign(uv.y-.25)-.2), max(0.0,abs(uv.y-.25)-.05) ))-0.2) ,max(0.,abs(uv.x)-.2))); return x; } float close3(vec2 uv) { uv.x=-uv.x; return open3(uv); } vec2 clc(vec2 uv, float cp, float w, float ital) { return uv-vec2(cp-(w*.5)+uv.y*ital,0.); } bool hit(vec2 uv,inout float cp,float w, float px) { return abs((cp+=w)-uv.x)0.); float scale = 1.1-ms;// 2.0-cos(iGlobalTime*.1); vec2 mouseOffs = ms*(iMouse.xy-.5*iResolution.xy)/scale; vec2 uv = (fragCoord+mouseOffs-.5*iResolution.xy) / iResolution.x * 22.0 * scale; //float ofs = floor(uv.x)+8.; //uv.x = mod(uv.x,1.0)-.5; float px = 22.0/iResolution.x*scale; float x = 100.; float cp = 0.; vec4 cur = vec4(0.,0.,0.,0.5); vec4 us = cur; float ital = 0.0; //uv+= .03*cos(uv*7.+iGlobalTime); //uv.y += 2.; uv.x += 10.1; //uv.y -= 3.; //uv.x += 5.; int lnr = 2-int(floor(uv.y/2.)); uv.y = mod(uv.y,2.0)-1.0; if (lnr==0) {line1} if (lnr==1) {line2} if (lnr==2) {line3} if (lnr==3) {line4} if (lnr==4) {line5} if (lnr==5) {line6} vec3 clr = vec3(0.0); // Wobbly font //float weight = 0.05+sin(length(-10.0+uv*3.9-10.0*sin(.09*iGlobalTime)))/50.; float weight = 0.01+us.w*min(iGlobalTime*.02-.05,0.03);//+.03*length(sin(uv*6.+.3*iGlobalTime));//+0.02-0.06*cos(iGlobalTime*.4+1.); if (ms>0.) { fragColor = vec4(mix(us.rgb+0.5-0.5*smoothstep(0.,2.*px, abs(mod(x,.1)-.05)),vec3(1.0), sqrt(x)),1.0); } else fragColor = vec4(mix(us.rgb,vec3(1.0),smoothstep(weight-px,weight+px, x)),1.0); }