>> energy ball ascii shader d = dist(x/2+w/4, y, w/2, h/2) an = angle(x/2+w/4, y, w/2,h/2)+t/4200 r=10.2 if (d < r) lex.bg = randint(r) ll=abs(an|0)+"" lex.char=ll[ll.length-1] if (d > r) { lex.bg = randint(d) lex.fg = randint(d) lex.char = ll[ll.length-2] } >> original shader.. lex.bg = hue((x+y*y+t/10)/20) lex.fg = (x+y)%16 lex.char = (y%2) ? ":" : "%" >> drifting fire t += sin(x/1000)*100000 pos = y/h*6 + sin(x*3) - cos(y*t/10000-10) pos = clamp(pos, 0, 6) lex.bg = hue(pos) >> the "bJoel56" shader yy=y x-=w/2 y-=h/2 lex.bg = blue(yy/h+random()) lex.fg = green(yy/h*4 + sin(x/100+random()/2)) // hue(t/1000)|0; var abcd=".'~:;!>+=icjtJYSGSXDQKHNWM"; function chara (aa,n) { return aa[clamp(n*aa.length, 0, aa.length)|0] } lex.char = chara(abcd, y/h*(5/3 + tan(x/100)+random()/1)) >> noise brushes, works on a black background: if (lex.bg != 1) lex.bg = max(5, yellow(randint(t))) >> simple rainbow: if (lex.bg != 1) lex.bg = randint(t) >> self-erasing: if (lex.bg != 1) lex.bg = yellow(randint(t)) >> cycling rainbow brush if (lex.bg != 1) lex.bg = hue( all_color_hue_order.indexOf( color_names[ lex.bg ] ) + 1 ) >> inelegant way to slow the frame rate of a shader. window.zz=window.zz||0 if(!(x+y)) zz++ if (lex.bg != 1 && !(zz % 4)) { ... } >> frog shader v2 t/=-100 d = sinp( (dist(x/2+w/4, y, w/2, h/2) + t)/2 ) * 10 lex.char=',./>"ASE$#'[(floor(d))] lex.fg = [1,3,9][floor(d*3)%3] lex.bg=1 >> frog shader v3 // set period to like 0.2 for a normal circle period = y/10 t/=-100 d = sinp( (dist(x/2+w/4, y, w/2, h/2) + t) * period ) dd = d * 10.5 d3 = dd < 8 ? 0 : 1 lex.char=' .,"+/>OXEN'[(floor(dd))] lex.fg = [3,9][floor(d3)] lex.bg=1