- Sign In
- Sign Up
Bitmap and Scrolling Text
A small piece made to demonstrate the usage of a sprite converted into unsigned integer (uint) values and an old-school scrolling wavy text.
Created by marcogomez on Mon, 18 Oct 2021 14:48:37 GMT.
#version 300 es // ╔═════════════╦════════════════╗ // ║ Marco Gomez ║ https://mgz.me ║ // ╚═════════════╩════════════════╝ precision highp float; uniform sampler2D prgm5Texture; uniform vec2 resolution; out vec4 fragColor; void main(void) { vec2 uv = gl_FragCoord.xy / resolution.xy; vec4 prgm5 = texture(prgm5Texture, uv); fragColor = prgm5; }
#version 300 es // ╔═════════════╦════════════════╗ // ║ Marco Gomez ║ https://mgz.me ║ // ╚═════════════╩════════════════╝ precision highp float; uniform vec2 resolution; uniform float time; out vec4 fragColor; void sprite(inout vec4 color, vec2 p) { uint v=0u; v=p.y==83.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?0u:(p.x<32.?0u:(p.x<40.?286331152u:(p.x<48.?286331153u:(p.x<56.?273u:0u))))))):v; v=p.y==82.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?0u:(p.x<32.?286326784u:(p.x<40.?286331153u:(p.x<48.?286331153u:(p.x<56.?17895697u:0u))))))):v; v=p.y==81.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?0u:(p.x<32.?286326784u:(p.x<40.?286331153u:(p.x<48.?286331153u:(p.x<56.?17895697u:0u))))))):v; v=p.y==80.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?0u:(p.x<32.?286331152u:(p.x<40.?858993425u:(p.x<48.?858993459u:(p.x<56.?286331155u:(p.x<64.?17u:0u)))))))):v; v=p.y==79.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?285212672u:(p.x<32.?856756497u:(p.x<40.?858993459u:(p.x<48.?858993459u:(p.x<56.?288568115u:(p.x<64.?69905u:0u)))))))):v; v=p.y==78.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?285212672u:(p.x<32.?856756497u:(p.x<40.?858993459u:(p.x<48.?858993459u:(p.x<56.?288568115u:(p.x<64.?69905u:0u)))))))):v; v=p.y==77.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?286261248u:(p.x<32.?858984721u:(p.x<40.?858993459u:(p.x<48.?858993459u:(p.x<56.?858993459u:(p.x<64.?286331155u:0u)))))))):v; v=p.y==76.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?286330880u:(p.x<32.?1999843601u:(p.x<40.?858993463u:(p.x<48.?858993459u:(p.x<56.?859009843u:(p.x<64.?286339891u:(p.x<72.?17u:0u))))))))):v; v=p.y==75.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?286330880u:(p.x<32.?1999843601u:(p.x<40.?858993463u:(p.x<48.?858993459u:(p.x<56.?859009843u:(p.x<64.?286339891u:(p.x<72.?17u:0u))))))))):v; v=p.y==74.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?286331136u:(p.x<32.?930558225u:(p.x<40.?2004300595u:(p.x<48.?1999844215u:(p.x<56.?859010935u:(p.x<64.?286750515u:(p.x<72.?273u:0u))))))))):v; v=p.y==73.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?286331153u:(p.x<32.?825439025u:(p.x<40.?2004318067u:(p.x<48.?2004316979u:(p.x<56.?860108663u:(p.x<64.?393687859u:(p.x<72.?69905u:0u))))))))):v; v=p.y==72.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?286331153u:(p.x<32.?825439025u:(p.x<40.?2004318067u:(p.x<48.?2004316979u:(p.x<56.?860108663u:(p.x<64.?393687859u:(p.x<72.?69905u:0u))))))))):v; v=p.y==71.?(p.x<8.?0u:(p.x<16.?268435456u:(p.x<24.?856895761u:(p.x<32.?823210801u:(p.x<40.?858993459u:(p.x<48.?2004038451u:(p.x<56.?860107575u:(p.x<64.?2004038451u:(p.x<72.?69905u:0u))))))))):v; v=p.y==70.?(p.x<8.?0u:(p.x<16.?268435456u:(p.x<24.?858854161u:(p.x<32.?856756497u:(p.x<40.?858993427u:(p.x<48.?863467383u:(p.x<56.?879112467u:(p.x<64.?2004055859u:(p.x<72.?1118583u:0u))))))))):v; v=p.y==69.?(p.x<8.?0u:(p.x<16.?268435456u:(p.x<24.?858854161u:(p.x<32.?856756497u:(p.x<40.?858993427u:(p.x<48.?863467383u:(p.x<56.?879112467u:(p.x<64.?2004055859u:(p.x<72.?1118583u:0u))))))))):v; v=p.y==68.?(p.x<8.?0u:(p.x<16.?286261248u:(p.x<24.?863187729u:(p.x<32.?286331153u:(p.x<40.?823341889u:(p.x<48.?288568115u:(p.x<56.?1771660081u:(p.x<64.?2004318006u:(p.x<72.?1118583u:0u))))))))):v; v=p.y==67.?(p.x<8.?0u:(p.x<16.?286261248u:(p.x<24.?863188787u:(p.x<32.?1145311505u:(p.x<40.?876688180u:(p.x<48.?286470963u:(p.x<56.?2576987747u:(p.x<64.?930558777u:(p.x<72.?286331767u:0u))))))))):v; v=p.y==66.?(p.x<8.?0u:(p.x<16.?286261248u:(p.x<24.?863188787u:(p.x<32.?1145311505u:(p.x<40.?876688180u:(p.x<48.?286470963u:(p.x<56.?2576987747u:(p.x<64.?930558777u:(p.x<72.?286331767u:0u))))))))):v; v=p.y==65.?(p.x<8.?0u:(p.x<16.?286326784u:(p.x<24.?863467315u:(p.x<32.?912670993u:(p.x<40.?859050259u:(p.x<48.?856756531u:(p.x<56.?2579216790u:(p.x<64.?930296681u:(p.x<72.?286331699u:0u))))))))):v; v=p.y==64.?(p.x<8.?0u:(p.x<16.?823197696u:(p.x<24.?288847735u:(p.x<32.?2573624385u:(p.x<40.?286484121u:(p.x<48.?2573414673u:(p.x<56.?2612771769u:(p.x<64.?858993561u:(p.x<72.?286331665u:0u))))))))):v; v=p.y==63.?(p.x<8.?0u:(p.x<16.?823197696u:(p.x<24.?288847735u:(p.x<32.?2573624385u:(p.x<40.?286484121u:(p.x<48.?2573414673u:(p.x<56.?2612771769u:(p.x<64.?858993561u:(p.x<72.?286331665u:0u))))))))):v; v=p.y==62.?(p.x<8.?0u:(p.x<16.?286326784u:(p.x<24.?859272055u:(p.x<32.?2576967268u:(p.x<40.?1718196633u:(p.x<48.?2576979558u:(p.x<56.?2612771771u:(p.x<64.?858875545u:(p.x<72.?286331153u:0u))))))))):v; v=p.y==61.?(p.x<8.?0u:(p.x<16.?286326784u:(p.x<24.?1145254263u:(p.x<32.?858994278u:(p.x<40.?2612741171u:(p.x<48.?3147544985u:(p.x<56.?858993460u:(p.x<64.?823433619u:(p.x<72.?286331153u:0u))))))))):v; v=p.y==60.?(p.x<8.?0u:(p.x<16.?286326784u:(p.x<24.?1145254263u:(p.x<32.?858994278u:(p.x<40.?2612741171u:(p.x<48.?3147544985u:(p.x<56.?858993460u:(p.x<64.?823433619u:(p.x<72.?286331153u:0u))))))))):v; v=p.y==59.?(p.x<8.?0u:(p.x<16.?286326784u:(p.x<24.?1715540275u:(p.x<32.?858993462u:(p.x<40.?3149148979u:(p.x<48.?1153153979u:(p.x<56.?858993459u:(p.x<64.?286693683u:(p.x<72.?286470417u:0u))))))))):v; v=p.y==58.?(p.x<8.?0u:(p.x<16.?286326784u:(p.x<24.?1715540241u:(p.x<32.?2571383603u:(p.x<40.?3113851289u:(p.x<48.?2577120187u:(p.x<56.?882481561u:(p.x<64.?286667571u:(p.x<72.?286470929u:0u))))))))):v; v=p.y==57.?(p.x<8.?0u:(p.x<16.?286326784u:(p.x<24.?1715540241u:(p.x<32.?2571383603u:(p.x<40.?3113851289u:(p.x<48.?2577120187u:(p.x<56.?882481561u:(p.x<64.?286667571u:(p.x<72.?286470929u:0u))))))))):v; v=p.y==56.?(p.x<8.?0u:(p.x<16.?823197696u:(p.x<24.?2003899153u:(p.x<32.?858993463u:(p.x<40.?2576560947u:(p.x<48.?865704891u:(p.x<56.?858993459u:(p.x<64.?393705267u:(p.x<72.?286470963u:0u))))))))):v; v=p.y==55.?(p.x<8.?0u:(p.x<16.?823197696u:(p.x<24.?863047987u:(p.x<32.?1145324612u:(p.x<40.?2469872708u:(p.x<48.?2000264123u:(p.x<56.?1145324612u:(p.x<64.?393430084u:(p.x<72.?286470929u:0u))))))))):v; v=p.y==54.?(p.x<8.?0u:(p.x<16.?823197696u:(p.x<24.?863047987u:(p.x<32.?1145324612u:(p.x<40.?2469872708u:(p.x<48.?2000264123u:(p.x<56.?1145324612u:(p.x<64.?393430084u:(p.x<72.?286470929u:0u))))))))):v; v=p.y==53.?(p.x<8.?0u:(p.x<16.?823197696u:(p.x<24.?1144066355u:(p.x<32.?1717978724u:(p.x<40.?930375270u:(p.x<48.?1148402619u:(p.x<56.?1181116006u:(p.x<64.?322192484u:(p.x<72.?286470417u:0u))))))))):v; v=p.y==52.?(p.x<8.?0u:(p.x<16.?823197696u:(p.x<24.?2000052497u:(p.x<32.?3432617030u:(p.x<40.?912877260u:(p.x<48.?2573415219u:(p.x<56.?2580335814u:(p.x<64.?322397769u:(p.x<72.?286331153u:0u))))))))):v; v=p.y==51.?(p.x<8.?0u:(p.x<16.?823197696u:(p.x<24.?2000052497u:(p.x<32.?3432617030u:(p.x<40.?912877260u:(p.x<48.?2573415219u:(p.x<56.?2580335814u:(p.x<64.?322397769u:(p.x<72.?286331153u:0u))))))))):v; v=p.y==50.?(p.x<8.?0u:(p.x<16.?823197696u:(p.x<24.?2855690513u:(p.x<32.?2479658054u:(p.x<40.?966184009u:(p.x<48.?1720924569u:(p.x<56.?2620625996u:(p.x<64.?322594377u:(p.x<72.?286331187u:0u))))))))):v; v=p.y==49.?(p.x<8.?0u:(p.x<16.?286331136u:(p.x<24.?2855691025u:(p.x<32.?869045318u:(p.x<40.?966376259u:(p.x<48.?2576563131u:(p.x<56.?2620601419u:(p.x<64.?1664771657u:(p.x<72.?286331187u:(p.x<80.?17u:0u)))))))))):v; v=p.y==48.?(p.x<8.?0u:(p.x<16.?286331136u:(p.x<24.?2855691025u:(p.x<32.?869045318u:(p.x<40.?966376259u:(p.x<48.?2576563131u:(p.x<56.?2620601419u:(p.x<64.?1664771657u:(p.x<72.?286331187u:(p.x<80.?17u:0u)))))))))):v; v=p.y==47.?(p.x<8.?0u:(p.x<16.?339808512u:(p.x<24.?2855691025u:(p.x<32.?2576979558u:(p.x<40.?2470025625u:(p.x<48.?2570689723u:(p.x<56.?2576980377u:(p.x<64.?1664771689u:(p.x<72.?289477427u:(p.x<80.?17u:0u)))))))))):v; v=p.y==46.?(p.x<8.?0u:(p.x<16.?1234243840u:(p.x<24.?862348083u:(p.x<32.?2576967274u:(p.x<40.?3113458073u:(p.x<48.?865844411u:(p.x<56.?1771674009u:(p.x<64.?1717807718u:(p.x<72.?294929203u:(p.x<80.?17u:0u)))))))))):v; v=p.y==45.?(p.x<8.?0u:(p.x<16.?1234243840u:(p.x<24.?862348083u:(p.x<32.?2576967274u:(p.x<40.?3113458073u:(p.x<48.?865844411u:(p.x<56.?1771674009u:(p.x<64.?1717807718u:(p.x<72.?294929203u:(p.x<80.?17u:0u)))))))))):v; v=p.y==44.?(p.x<8.?0u:(p.x<16.?2487292160u:(p.x<24.?1721131827u:(p.x<32.?858993459u:(p.x<40.?3149476659u:(p.x<48.?2579287227u:(p.x<56.?858993459u:(p.x<64.?1771451187u:(p.x<72.?290034483u:(p.x<80.?17u:0u)))))))))):v; v=p.y==43.?(p.x<8.?0u:(p.x<16.?1180766464u:(p.x<24.?3147404083u:(p.x<32.?3149642683u:(p.x<40.?3113851291u:(p.x<48.?2579287244u:(p.x<56.?3149642137u:(p.x<64.?2576989115u:(p.x<72.?291783475u:(p.x<80.?17u:0u)))))))))):v; v=p.y==42.?(p.x<8.?0u:(p.x<16.?1180766464u:(p.x<24.?3147404083u:(p.x<32.?3149642683u:(p.x<40.?3113851291u:(p.x<48.?2579287244u:(p.x<56.?3149642137u:(p.x<64.?2576989115u:(p.x<72.?291783475u:(p.x<80.?17u:0u)))))))))):v; v=p.y==41.?(p.x<8.?0u:(p.x<16.?1234243840u:(p.x<24.?3149501235u:(p.x<32.?3149647052u:(p.x<40.?3149502907u:(p.x<48.?3150760891u:(p.x<56.?3434855353u:(p.x<64.?2577185740u:(p.x<72.?294929203u:(p.x<80.?17u:0u)))))))))):v; v=p.y==40.?(p.x<8.?0u:(p.x<16.?1234243840u:(p.x<24.?3149640499u:(p.x<32.?3149642683u:(p.x<40.?3149633979u:(p.x<48.?2579217339u:(p.x<56.?3149642678u:(p.x<64.?2612771771u:(p.x<72.?294929203u:(p.x<80.?17u:0u)))))))))):v; v=p.y==39.?(p.x<8.?0u:(p.x<16.?1234243840u:(p.x<24.?3149640499u:(p.x<32.?3149642683u:(p.x<40.?3149633979u:(p.x<48.?2579217339u:(p.x<56.?3149642678u:(p.x<64.?2612771771u:(p.x<72.?294929203u:(p.x<80.?17u:0u)))))))))):v; v=p.y==38.?(p.x<8.?0u:(p.x<16.?1771114752u:(p.x<24.?3149640499u:(p.x<32.?3149642683u:(p.x<40.?1109550779u:(p.x<48.?1143089561u:(p.x<56.?3149642134u:(p.x<64.?2612771771u:(p.x<72.?295068740u:(p.x<80.?17u:0u)))))))))):v; v=p.y==37.?(p.x<8.?0u:(p.x<16.?2522943744u:(p.x<24.?3149640772u:(p.x<32.?3149642683u:(p.x<40.?608584859u:(p.x<48.?1717707844u:(p.x<56.?3149633124u:(p.x<64.?2612771771u:(p.x<72.?292131908u:(p.x<80.?17u:0u)))))))))):v; v=p.y==36.?(p.x<8.?0u:(p.x<16.?2522943744u:(p.x<24.?3149640772u:(p.x<32.?3149642683u:(p.x<40.?608584859u:(p.x<48.?1717707844u:(p.x<56.?3149633124u:(p.x<64.?2612771771u:(p.x<72.?292131908u:(p.x<80.?17u:0u)))))))))):v; v=p.y==35.?(p.x<8.?0u:(p.x<16.?2433814784u:(p.x<24.?3149640806u:(p.x<32.?2612771771u:(p.x<40.?2004318105u:(p.x<48.?2004318071u:(p.x<56.?3147405719u:(p.x<64.?2612771771u:(p.x<72.?286889540u:(p.x<80.?17u:0u)))))))))):v; v=p.y==34.?(p.x<8.?0u:(p.x<16.?1628504064u:(p.x<24.?3149640806u:(p.x<32.?2579217339u:(p.x<40.?2004318073u:(p.x<48.?2004318071u:(p.x<56.?3147405175u:(p.x<64.?2612771771u:(p.x<72.?286680644u:0u))))))))):v; v=p.y==33.?(p.x<8.?0u:(p.x<16.?1628504064u:(p.x<24.?3149640806u:(p.x<32.?2579217339u:(p.x<40.?2004318073u:(p.x<48.?2004318071u:(p.x<56.?3147405175u:(p.x<64.?2612771771u:(p.x<72.?286680644u:0u))))))))):v; v=p.y==32.?(p.x<8.?0u:(p.x<16.?286326784u:(p.x<24.?3149501542u:(p.x<32.?2042346427u:(p.x<40.?2576971639u:(p.x<48.?2576980377u:(p.x<56.?3147396983u:(p.x<64.?2577120187u:(p.x<72.?286332467u:0u))))))))):v; v=p.y==31.?(p.x<8.?0u:(p.x<16.?286261248u:(p.x<24.?3149361937u:(p.x<32.?2006563771u:(p.x<40.?1717986919u:(p.x<48.?1717986918u:(p.x<56.?3111614054u:(p.x<64.?2040249275u:(p.x<72.?1118515u:0u))))))))):v; v=p.y==30.?(p.x<8.?0u:(p.x<16.?286261248u:(p.x<24.?3149361937u:(p.x<32.?2006563771u:(p.x<40.?1717986919u:(p.x<48.?1717986918u:(p.x<56.?3111614054u:(p.x<64.?2040249275u:(p.x<72.?1118515u:0u))))))))):v; v=p.y==29.?(p.x<8.?0u:(p.x<16.?268435456u:(p.x<24.?3149361425u:(p.x<32.?1738128315u:(p.x<40.?2899085382u:(p.x<48.?3435834572u:(p.x<56.?3111609416u:(p.x<64.?2004597691u:(p.x<72.?69905u:0u))))))))):v; v=p.y==28.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?2578936081u:(p.x<32.?1201257403u:(p.x<40.?1431874132u:(p.x<48.?2287293781u:(p.x<56.?3111601498u:(p.x<64.?2004588987u:(p.x<72.?69905u:0u))))))))):v; v=p.y==27.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?2578936081u:(p.x<32.?1201257403u:(p.x<40.?1431874132u:(p.x<48.?2287293781u:(p.x<56.?3111601498u:(p.x<64.?2004588987u:(p.x<72.?69905u:0u))))))))):v; v=p.y==26.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?2574463249u:(p.x<32.?1201257401u:(p.x<40.?286344276u:(p.x<48.?286331153u:(p.x<56.?3111601492u:(p.x<64.?930585019u:(p.x<72.?273u:0u))))))))):v; v=p.y==25.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?2003898641u:(p.x<32.?1234811289u:(p.x<40.?286331204u:(p.x<48.?286331153u:(p.x<56.?3113829441u:(p.x<64.?930584987u:(p.x<72.?273u:0u))))))))):v; v=p.y==24.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?2003898641u:(p.x<32.?1234811289u:(p.x<40.?286331204u:(p.x<48.?286331153u:(p.x<56.?3113829441u:(p.x<64.?930584987u:(p.x<72.?273u:0u))))))))):v; v=p.y==23.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?1999704320u:(p.x<32.?1769445785u:(p.x<40.?1145114950u:(p.x<48.?289686596u:(p.x<56.?2543412289u:(p.x<64.?859273113u:(p.x<72.?273u:0u))))))))):v; v=p.y==22.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?1997607168u:(p.x<32.?2608298391u:(p.x<40.?1717847129u:(p.x<48.?1147561028u:(p.x<56.?2545653076u:(p.x<64.?322402169u:(p.x<72.?17u:0u))))))))):v; v=p.y==21.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?1997607168u:(p.x<32.?2608298391u:(p.x<40.?1717847129u:(p.x<48.?1147561028u:(p.x<56.?2545653076u:(p.x<64.?322402169u:(p.x<72.?17u:0u))))))))):v; v=p.y==20.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?856756224u:(p.x<32.?2608297847u:(p.x<40.?1717978249u:(p.x<48.?1717986406u:(p.x<56.?2545653892u:(p.x<64.?322402169u:(p.x<72.?17u:0u))))))))):v; v=p.y==19.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?856756224u:(p.x<32.?3145167671u:(p.x<40.?1717986987u:(p.x<48.?1717986918u:(p.x<56.?2008791718u:(p.x<64.?286488375u:0u)))))))):v; v=p.y==18.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?856756224u:(p.x<32.?3145167671u:(p.x<40.?1717986987u:(p.x<48.?1717986918u:(p.x<56.?2008791718u:(p.x<64.?286488375u:0u)))))))):v; v=p.y==17.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?286261248u:(p.x<32.?3145167667u:(p.x<40.?1718004379u:(p.x<48.?1717986918u:(p.x<56.?2008791450u:(p.x<64.?286339895u:0u)))))))):v; v=p.y==16.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?286261248u:(p.x<32.?3145167667u:(p.x<40.?2576980411u:(p.x<48.?2576980377u:(p.x<56.?2008791993u:(p.x<64.?17904439u:0u)))))))):v; v=p.y==15.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?286261248u:(p.x<32.?3145167667u:(p.x<40.?2576980411u:(p.x<48.?2576980377u:(p.x<56.?2008791993u:(p.x<64.?17904439u:0u)))))))):v; v=p.y==14.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?285212672u:(p.x<32.?3111596849u:(p.x<40.?2576989083u:(p.x<48.?2576980377u:(p.x<56.?932821403u:(p.x<64.?69939u:0u)))))))):v; v=p.y==13.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?285212672u:(p.x<32.?2541171505u:(p.x<40.?3149625241u:(p.x<48.?3149642683u:(p.x<56.?930584983u:(p.x<64.?69939u:0u)))))))):v; v=p.y==12.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?285212672u:(p.x<32.?2541171505u:(p.x<40.?3149625241u:(p.x<48.?3149642683u:(p.x<56.?930584983u:(p.x<64.?69939u:0u)))))))):v; v=p.y==11.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?0u:(p.x<32.?2541170961u:(p.x<40.?2541189017u:(p.x<48.?2004457881u:(p.x<56.?863476119u:(p.x<64.?4371u:0u)))))))):v; v=p.y==10.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?0u:(p.x<32.?1999843601u:(p.x<40.?859281815u:(p.x<48.?1999844147u:(p.x<56.?863467929u:(p.x<64.?4371u:0u)))))))):v; v=p.y==9.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?0u:(p.x<32.?1999843601u:(p.x<40.?859281815u:(p.x<48.?1999844147u:(p.x<56.?863467929u:(p.x<64.?4371u:0u)))))))):v; v=p.y==8.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?0u:(p.x<32.?1932726544u:(p.x<40.?2040109431u:(p.x<48.?2574742323u:(p.x<56.?322140025u:(p.x<64.?17u:0u)))))))):v; v=p.y==7.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?0u:(p.x<32.?856756496u:(p.x<40.?2576971635u:(p.x<48.?2576980377u:(p.x<56.?288569207u:(p.x<64.?17u:0u)))))))):v; v=p.y==6.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?0u:(p.x<32.?856756496u:(p.x<40.?2576971635u:(p.x<48.?2576980377u:(p.x<56.?288569207u:(p.x<64.?17u:0u)))))))):v; v=p.y==5.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?0u:(p.x<32.?823201792u:(p.x<40.?2576840499u:(p.x<48.?2006415735u:(p.x<56.?286339895u:(p.x<64.?1u:0u)))))))):v; v=p.y==4.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?0u:(p.x<32.?286326784u:(p.x<40.?2004038417u:(p.x<48.?863467383u:(p.x<56.?17895699u:0u))))))):v; v=p.y==3.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?0u:(p.x<32.?286326784u:(p.x<40.?2004038417u:(p.x<48.?863467383u:(p.x<56.?17895699u:0u))))))):v; v=p.y==2.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?0u:(p.x<32.?285212672u:(p.x<40.?286331153u:(p.x<48.?286331153u:(p.x<56.?1118481u:0u))))))):v; v=p.y==1.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?0u:(p.x<32.?0u:(p.x<40.?286331152u:(p.x<48.?286331153u:(p.x<56.?273u:0u))))))):v; v=p.y==0.?(p.x<8.?0u:(p.x<16.?0u:(p.x<24.?0u:(p.x<32.?0u:(p.x<40.?286331152u:(p.x<48.?286331153u:(p.x<56.?273u:0u))))))):v; v=p.x>=0.&&p.x<84.?v:0u; float i=float((v>>uint(4.*p.x))&15u); color=i==1.?vec4(0.01):color; color=i==2.?vec4(.11,.075,.067,0.):color; color=i==3.?vec4(.25,.190,.180,0.):color; color=i==4.?vec4(.47,.047,.170,0.):color; color=i==5.?vec4(.17,.240,.350,0.):color; color=i==6.?vec4(.65,.290,.220,0.):color; color=i==7.?vec4(.54,.370,.330,0.):color; color=i==8.?vec4(.34,.510,.560,0.):color; color=i==9.?vec4(.93,.530,.380,0.):color; color=i==10.?vec4(.62,.810,.760,0.):color; color=i==11.?vec4(.98,.850,.620,0.):color; color=i==12.?vec4(1.,1.,1.,0.):color; } void main(void) { vec2 resMult = floor(resolution.xy / 164.0); float resRcp = 1.0 / max(min(resMult.x, resMult.y), 1.0); vec2 screenSize = floor(resolution.xy * resRcp); vec2 pixel = floor(gl_FragCoord.xy * resRcp - screenSize * 0.5); vec4 c; sprite(c, pixel + vec2(42.0, -10.0)); fragColor = c; }
#version 300 es // ╔═════════════╦════════════════╗ // ║ Marco Gomez ║ https://mgz.me ║ // ╚═════════════╩════════════════╝ precision highp float; uniform sampler2D prgm1Texture; uniform sampler2D prgm2Texture; uniform vec2 resolution; uniform float time; uniform int frame; out vec4 fragColor; const int starLayers = 12; const float starSpeed = 8.0; float hash (vec2 uv) { return fract(sin(dot(uv, vec2(12.4124, 48.4124))) * 48512.41241); } float starsNoise (vec2 uv) { vec2 b = floor(uv); return mix( mix(hash(b), hash(b + vec2(1.0, 0.0)), 0.5), mix(hash(b + vec2(0.0, 1.0)), hash(b + vec2(1.0, 1.0)), 0.5), 0.5 ); } vec3 renderNightGrid(vec2 uv, float t) { vec2 suv = uv; uv = uv - vec2(0.5); float horizon = 0.0; float fov = 0.3; float scaling = 0.1; vec3 p = vec3(uv.x, fov, uv.y - horizon); vec2 sc = vec2(p.x / p.z, p.y / p.z) * scaling; sc.y -= t * 0.2; if (sc.y > 0.0) { sc.y *= 0.0; } float checkerboard = sign((mod(sc.x, 0.1) - 0.05) * (mod(sc.y, 0.1) - 0.05)); checkerboard *= p.z * p.z * 10.0; float stars = 0.0; float fl, s; for (int layer = 0; layer < starLayers; layer++) { fl = float(layer); s = (370.0 - fl * 30.0); stars += step( 0.1, pow( abs( starsNoise(mod(vec2(suv.x * s + t * starSpeed - fl * 100.0, suv.y * s), resolution.x)) ), 21.0 ) ) * (fl / float(starLayers)); } vec3 color = (uv.y <= 0.0) ? vec3(checkerboard * 0.1, 0.0, checkerboard) : vec3(sc.y, 0.0, uv.y - 0.1) + stars; color = clamp(color * 3.0, 0.0, 1.0); return color; } void main(void) { float frameScale = 29.97; float frameTime = floor(time * frameScale) / frameScale; float yMod = 2.0; float yRes = resolution.y / yMod; vec2 uv = gl_FragCoord.xy / resolution.xy; vec3 color = renderNightGrid(uv, time); float o = pow(abs(sin(frameTime) * 0.2 + 0.2), 2.0); uv.y += floor(o * yRes) / yRes; uv = floor(uv * yRes) / yRes; vec4 prgm1 = texture(prgm1Texture, uv); if (prgm1.x > 0.0) { fragColor = prgm1; } else { if (frame % 2 == 0) { fragColor += vec4(color, 0.0) * 0.4; } fragColor += texture(prgm2Texture, gl_FragCoord.xy / resolution.xy) * 0.85; } }
#version 300 es // ╔═════════════╦════════════════╗ // ║ Marco Gomez ║ https://mgz.me ║ // ╚═════════════╩════════════════╝ precision highp float; uniform sampler2D prgm2Texture; uniform vec2 resolution; uniform float time; uniform float fft; out vec4 fragColor; const float reinhardAmount = 0.5; const float contrast = 1.0; const float brightness = 1.2; const float amount = 1.0; const float saturation = 0.5; const vec2 vignetteSize = vec2(0.25, 0.25); const float vignetteRoundness = 0.12; const float vignetteMix = 1.0; const float vignetteSmoothness = 0.42; const float W = 1.2; const float T = 7.5; float filmicReinhardCurve(float x) { float q = (T * T + 1.0) * x * x; return q / (q + x + T * T); } vec3 filmicReinhard(vec3 c) { float w = filmicReinhardCurve(W); return vec3( filmicReinhardCurve(c.r), filmicReinhardCurve(c.g), filmicReinhardCurve(c.b) ) / w; } vec3 ContrastSaturationBrightness(vec3 color, float brt, float sat, float con) { const float AvgLumR = 0.5; const float AvgLumG = 0.5; const float AvgLumB = 0.5; const vec3 LumCoeff = vec3(0.2125, 0.7154, 0.0721); vec3 AvgLumin = vec3(AvgLumR, AvgLumG, AvgLumB); vec3 brtColor = color * brt; vec3 intensity = vec3(dot(brtColor, LumCoeff)); vec3 satColor = mix(intensity, brtColor, sat); vec3 conColor = mix(AvgLumin, satColor, con); return conColor; } float sdSquare(vec2 point, float width) { vec2 d = abs(point) - width; return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)); } float vignette(vec2 uv, vec2 size, float roundness, float smoothness) { uv -= 0.5; float minWidth = min(size.x, size.y); uv.x = sign(uv.x) * clamp(abs(uv.x) - abs(minWidth - size.x), 0.0, 1.0); uv.y = sign(uv.y) * clamp(abs(uv.y) - abs(minWidth - size.y), 0.0, 1.0); float boxSize = minWidth * (1.0 - roundness); float dist = sdSquare(uv, boxSize) - (minWidth * roundness); return 1.0 - smoothstep(0.0, smoothness, dist); } void main(void) { vec2 uv = gl_FragCoord.xy / resolution.xy; vec4 prgm2 = texture(prgm2Texture, uv); vec3 reinhard = filmicReinhard(prgm2.rgb); vec3 color = prgm2.rgb; color = mix(prgm2.rgb, reinhard, reinhardAmount); color = ContrastSaturationBrightness(color, brightness, saturation, contrast); float v = vignette(uv, vignetteSize, vignetteRoundness, vignetteSmoothness); vec3 vig = color * v; color = mix(color, vig, vignetteMix); color = mix(prgm2.xyz, color, amount); color = clamp(color, 0.0, 1.0); fragColor = vec4(color, 1.0); }
#version 300 es // ╔═════════════╦════════════════╗ // ║ Marco Gomez ║ https://mgz.me ║ // ╚═════════════╩════════════════╝ precision highp float; uniform sampler2D prgm3Texture; uniform sampler2D textTexture; uniform vec2 resolution; uniform float time; out vec4 fragColor; #define scrollSpeed 3.0 #define fontSize 0.3 #define sinAmplitude 1.0 #define sinFrequency 0.4 #define sinSpeed 3. #define scrollLength 58.0 #define baseColor vec4(0.0, 0.0, 1.0, 0.0) #define SS(a) c += char(u, a); u.x -= 0.5; vec4 char(vec2 pos, float c) { vec4 o = texture( textTexture, clamp(pos, 0.0, 1.0) / 16.0 + fract(floor(vec2(c, 15.999 - c / 16.0)) / 16.0) ); return( (o.r > 0.0) ? baseColor * smoothstep(0.0, 0.5, o.r - o.a * 0.2) : vec4(0.0) ); } #define _spc SS(32.); #define _A SS(65.); #define _B SS(66.); #define _C SS(67.); #define _D SS(68.); #define _E SS(69.); #define _F SS(70.); #define _G SS(71.); #define _H SS(72.); #define _I SS(73.); #define _J SS(74.); #define _K SS(75.); #define _L SS(76.); #define _M SS(77.); #define _N SS(78.); #define _O SS(79.); #define _P SS(80.); #define _Q SS(81.); #define _R SS(82.); #define _S SS(83.); #define _T SS(84.); #define _U SS(85.); #define _V SS(86.); #define _W SS(87.); #define _X SS(88.); #define _Y SS(89.); #define _Z SS(90.); #define _a SS(97.); #define _b SS(98.); #define _c SS(99.); #define _d SS(100.); #define _e SS(101.); #define _f SS(102.); #define _g SS(103.); #define _h SS(104.); #define _i SS(105.); #define _j SS(106.); #define _k SS(107.); #define _l SS(108.); #define _m SS(109.); #define _n SS(110.); #define _o SS(111.); #define _p SS(112.); #define _q SS(113.); #define _r SS(114.); #define _s SS(115.); #define _t SS(116.); #define _u SS(117.); #define _v SS(118.); #define _w SS(119.); #define _x SS(120.); #define _y SS(121.); #define _z SS(122.); #define _or SS(33.); #define _dot SS(46.); vec4 scroll(vec2 u) { vec4 c = vec4(0.0); _spc _spc _spc _spc _spc _spc _spc _spc _spc _spc _spc _spc _spc _spc _spc _spc _spc _spc _spc _spc; _W _e _l _c _o _m _e _spc _t _o _spc _T _h _e _C _o _d _e _T _h _e _r _a _p _y; _spc _spc _spc _spc _spc _spc _spc _spc _spc _spc; return c; } void main(void) { float frameScale = 29.97; float frameTime = floor(time * frameScale) / frameScale; float yMod = 32.0; float yRes = resolution.y / yMod; vec2 uv = (gl_FragCoord.xy / resolution.y * 2.0 - 1.0) / fontSize; uv.x += -4.0 + mod(time * scrollSpeed, scrollLength); uv.y += floor((0.5 + sinAmplitude * sin(uv.x * sinFrequency + time * sinSpeed)) * yMod * 0.42) / (yMod * 0.42); vec4 prgm2 = texture(prgm3Texture, gl_FragCoord.xy / resolution.xy); uv = floor(uv * yRes) / yRes; fragColor = (scroll(vec2(uv.x, uv.y + 1.5)) == baseColor) ? vec4(gl_FragCoord.xy / resolution.xy, 0.5 + 0.5 * sin(time * 2.0), 1.0) * 1.5 : prgm2; }
#version 300 es // ╔═════════════╦════════════════╗ // ║ Marco Gomez ║ https://mgz.me ║ // ╚═════════════╩════════════════╝ precision highp float; uniform sampler2D prgm4Texture; uniform vec2 resolution; uniform float time; out vec4 fragColor; const float PI = acos(-1.0); const float TAU = PI * 2.0; const float hardscan = -16.0; const float hardPix = -4.0; const float maskDark = 0.5; const float maskLight = 2.5; float toLinear(float c) { return (c <= 0.04045) ? c / 12.92 : pow(abs((c + 0.055) / 1.055), 2.4); } vec3 toLinear(vec3 c) { return vec3(toLinear(c.r), toLinear(c.g), toLinear(c.b)); } float toSRGB(float c) { return(c < 0.0031308 ? c * 12.92 : 1.055 * pow(abs(c), 0.41666) - 0.055); } vec3 toSRGB(vec3 c) { return vec3(toSRGB(c.r), toSRGB(c.g), toSRGB(c.b)); } vec3 fetch(vec2 pos, vec2 off, vec2 res) { pos = floor(pos * res + off) / res; if (max(abs(pos.x - 0.5), abs(pos.y - 0.5)) > 0.5) { return vec3(0.0); } vec2 vRes = vec2(400.0, 300.0); pos = floor(pos * vRes) / vRes; return toLinear(texture(prgm4Texture, pos.xy, -16.0).xyz); } vec2 dist(vec2 pos, vec2 res) { pos = pos * res; return -((pos - floor(pos)) - vec2(0.5)); } float gauss(float pos, float scale) { return exp2(scale * pos * pos); } vec3 horz3(vec2 pos, float off, vec2 res) { vec3 b = fetch(pos, vec2(-1.0, off), res); vec3 c = fetch(pos, vec2(+0.0, off), res); vec3 d = fetch(pos, vec2(+1.0, off), res); float dst = dist(pos, res).x; float scale = hardPix; float wb = gauss(dst - 1.0, scale); float wc = gauss(dst + 0.0, scale); float wd = gauss(dst + 1.0, scale); return (b * wb + c * wc + d * wd) / (wb + wc + wd); } vec3 horz5(vec2 pos, float off, vec2 res) { vec3 a = fetch(pos, vec2(-2.0, off), res); vec3 b = fetch(pos, vec2(-1.0, off), res); vec3 c = fetch(pos, vec2(+0.0, off), res); vec3 d = fetch(pos, vec2(+1.0, off), res); vec3 e = fetch(pos, vec2(+2.0, off), res); float dst = dist(pos, res).x; float scale = hardPix; float wa = gauss(dst - 2.0, scale); float wb = gauss(dst - 1.0, scale); float wc = gauss(dst + 0.0, scale); float wd = gauss(dst + 1.0, scale); float we = gauss(dst + 2.0, scale); return (a * wa + b * wb + c * wc + d * wd + e * we) / (wa + wb + wc + wd + we); } float scan(vec2 pos, float off, vec2 res) { float dst = dist(pos, res).y; return gauss(dst + off, hardscan); } vec3 tri(vec2 pos, vec2 res) { vec3 a = horz3(pos, -1.0, res); vec3 b = horz5(pos, +0.0, res); vec3 c = horz3(pos, +1.0, res); float wa = scan(pos, -1.0, res); float wb = scan(pos, +0.0, res); float wc = scan(pos, +1.0, res); return a * wa + b * wb + c * wc; } vec3 mask(vec2 pos) { pos.x += pos.y * 3.0; vec3 m = vec3(maskDark, maskDark, maskDark); pos.x = fract(pos.x / 6.0); if (pos.x < 0.333) { m.r = maskLight; } else if (pos.x < 0.666) { m.g = maskLight; } else { m.b = maskLight; } return m; } float bar(float pos, float bar) { pos -= bar; return pos * pos < 4.0 ? 0.0 : 1.0; } float rand(vec2 uv, float t) { float seed = dot(uv, vec2(12.9898, 78.233)); return fract(sin(seed) * 43758.5453123 + t); } float gaussian(float z, float u, float o) { return ( (1.0 / (o * sqrt(TAU))) * (exp(-(((z - u) * (z - u)) / (2.0 * (o * o))))) ); } vec3 gaussgrain(float t) { vec2 ps = vec2(1.0) / resolution.xy; vec2 uv = gl_FragCoord.xy * ps; float noise = rand(uv, t); noise = gaussian(noise, 0.0, 0.5); return vec3(noise); } vec2 warp(vec2 uv, vec2 warpAmount) { uv = uv * 2.0 - 1.0; vec2 offset = abs(uv.yx) / vec2(warpAmount.x, warpAmount.y); uv = uv + uv * offset * offset; uv = uv * 0.5 + 0.5; return uv; } void drawVig(inout vec3 color, vec2 uv) { float vignette = uv.x * uv.y * (1.0 - uv.x) * (1.0 - uv.y); vignette = clamp(pow(abs(16.0 * vignette), 0.1), 0.0, 1.0); color *= vignette; } void main(void) { vec2 warpAmount = vec2(7.0, 5.0); vec2 res = vec2(640.0, 320.0); vec2 uv = gl_FragCoord.xy / resolution.xy; float vig = (0.0 + 1.0 * 21.0 * uv.x * uv.y * (1.0 - uv.x) * (1.0 - uv.y)); float v = exp(-0.01 * length(uv)) * vig; float frameScale = 29.97; float frameTime = floor(time * frameScale) / frameScale; vec3 g = gaussgrain(frameTime) * 0.07; vec2 pos = mix(uv, warp(uv, warpAmount), 0.75); vec4 color = vec4(tri(pos, res) * mask(gl_FragCoord.xy), 1.0); drawVig(color.xyz, uv); color.xyz = toSRGB(color.xyz * 2.0) - g; color = mix(color, color * v, 0.7); fragColor = color; }
xxxxxxxxxx
// ╔═════════════╦════════════════╗
// ║ Marco Gomez ║ https://mgz.me ║
// ╚═════════════╩════════════════╝
precision highp float;
uniform sampler2D prgm5Texture;
uniform vec2 resolution;
out vec4 fragColor;
void main(void) {
vec2 uv = gl_FragCoord.xy / resolution.xy;
vec4 prgm5 = texture(prgm5Texture, uv);
fragColor = prgm5;
}
102 fps 16ms
00:00:00.32
0.00