рджреЛ рдЪреАрдЬреЗрдВ рд╣рдореЗрд╢рд╛ рдЖрддреНрдорд╛ рдХреЛ рдирдП рдФрд░ рдХрднреА рдордЬрдмреВрдд рдЖрд╢реНрдЪрд░реНрдп рдФрд░ рд╢реНрд░рджреНрдзрд╛ рд╕реЗ рднрд░ рджреЗрддреА рд╣реИрдВ, рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рдмрд╛рд░ рдФрд░ рдЕрдм рд╣рдо рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ - рдпрд╣ рдореЗрд░реЗ рдКрдкрд░ рдХрд╛ рддрд╛рд░реЛрдВ рд╡рд╛рд▓рд╛ рдЖрдХрд╛рд╢ рдФрд░ рдореБрдЭрдореЗрдВ рдиреИрддрд┐рдХ рдирд┐рдпрдо рд╣реИред рдЗрдореИрдиреБрдЕрд▓ рдХрд╛рдВрдЯ
JS1k рдПрдХ рд╡рд╛рд░реНрд╖рд┐рдХ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ 1024 рд╡рд░реНрдгреЛрдВ рдореЗрдВ рдПрдХ рдбреЗрдореЛ, рдПрдХ рдЧреЗрдо рдпрд╛ рдХреБрдЫ рднреА рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рд╕рд╛рд▓, рдореЗрд░реЗ рдбреЗрдореЛ рдиреЗ рдЪреМрдерд╛ рд╕реНрдерд╛рди рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ (рддреАрд╕рд░реЗ рддрдХ рдХреЛрдИ рджреЛ рдЕрдВрдХ рдирд╣реАрдВ рдереЗ)ред рдЖрдк JS1k рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдбреЗрдореЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЬреЛ рдирд╣реАрдВ рдЦреБрд▓рддрд╛ рд╣реИ рдпрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЙрд╕реЗ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:
рдЫреЛрдЯрд╛ рдФрд░ рдкреВрд░реНрдг рд╕реНрд░реЛрдд рдХреЛрдб github рдкрд░ рд╣реИ ред рдФрд░ рдХрдЯ рдХреЗ рддрд╣рдд рдПрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдм рдХреИрд╕реЗ рдЫреЛрдЯрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
Diskalaymer
рдбреЗрдореЛ рдХреА рдореБрдЦреНрдп рд╕реБрдВрджрд░рддрд╛ рдкрд╛рдмреНрд▓реЛ рд░реЛрдорди рдПрдВрдбреНрд░реАрдУрд▓реА рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рд╣реИ ред рдкрд╛рдмреНрд▓реЛ рдПрдХ рдХрд▓рд╛рдХрд╛рд░ рд╣реИ рдЬреЛ рднрдЧреНрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рднрдЧреНрди рдордВрдЪ рдкрд░ рд╡рд╣ рдЧрдгрдирд╛ рдХреЗ рдХреБрдЫ рд╡рд┐рд╡рд░рдг рджреЗрддрд╛ рд╣реИред рдореЗрд░рд╛ рдХрд╛рдо 1024 рдмрд╛рдЗрдЯ рдХреЗ рдПрдХ shader рдФрд░ WebGL рдХреЛрдб рдХреЛ рдкреИрдХ рдХрд░рдирд╛ рдерд╛ред
WebGL рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди
рдбреЗрдореЛ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ JS1k рдЖрд╡рд░рдг рд╡реИрд╢реНрд╡рд┐рдХ рд╡реИрд░рд┐рдПрдмрд▓ рдЬреА рдореЗрдВ рдПрдХ WebGL рд╕рдВрджрд░реНрдн рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж, WebGL рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмрд╣реБрдд рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рд╡рд░реНрдЯреЗрдХреНрд╕ рд╢реЗрдбрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, 159 рд╡рд░реНрдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рдХреЗ рд╕рднреА JS1k рд╕рдорд╛рдзрд╛рди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкрд░реНрдпрд╛рдпрд╡рд╛рдЪреА рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд╛рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
for(i in g){ g[i[0] + i[6]] = g[i]; }
рд▓реВрдк WebGL рд╕рдВрджрд░реНрдн рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди (рдФрд░ рдХрд┐рд╕реА рднреА рд╕рджрд╕реНрдп рдХреЗ рд▓рд┐рдП) рдХрд╛ рдПрдХ рдкрд░реНрдпрд╛рдп рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкрд╣рд▓реЗ рдФрд░ 7 рдЕрдХреНрд╖рд░ рд╣реЛрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, c reate P rogram cP, s hader S ource - sS , рдЖрджрд┐ рдмрди рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, with(g)
рдирд┐рд░реНрдорд╛рдг (рдЬреЛ рдЗрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ with(g)
рдХреЗ with(g)
рд╕рднреА рдХреЛрдб рддреИрдпрд╛рд░ рдХрд░рдирд╛, рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ:
with(g){ p=cP(); sS(s=cS(35633),'attribute vec2 p;void main(){gl_Position=vec4(p,1,1);}'); ce(s); aS(p,s); }
рд╢реЗрдбрд░ рдорд┐рдирд┐рдлрд┐рдХреЗрд╢рди
рдореВрд▓ shader 1100 рд╡рд░реНрдг рд▓реЗрддрд╛ рд╣реИред рдореБрдЦреНрдп рд╕рдВрдХреНрд╖рд┐рдкреНрддреАрдХрд░рдг: рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЪрд░реЛрдВ рдХреЛ рд╣рдЯрд╛рдирд╛ рдФрд░ рд╕рдорд╛рди рдЕрдВрд╢реЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрдиред рдЖрдЦрд┐рд░рдХрд╛рд░, рдореИрдВрдиреЗ рдСрдирд▓рд╛рдЗрди рдорд┐рдиреАрдлрд╝рд╛рдпрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЛрдб рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ред рдирддреАрдЬрддрди, 500 рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рдЗрдЯреНрд╕ рдЫрд╛рдпрд╛рджрд╛рд░ рд╕реЗ рдмрдиреЗ рд░рд╣реЗред
JSCrush
JSCrush рдРрд╕реА рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рдУрдВ рдореЗрдВ рдХреЛрдб рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддрдереНрдп рд╣реИред рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛрдб рдХреЛ рд▓рдЧрднрдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рдмрджрд▓ рджреЗрддреА рд╣реИ:
_ = '(i.style = ... _='(i a.style="widMj%;hEjvh;:left",g)g[i[0]+i[6]]=g[i];wiMO.u=g.G1f,x=y=k=g)p=cP(35633"tribute 2 p gl_Posit=4?FN"precis mediump ;G Zt,a,x,y Uf`ord.rg/64!-.f.=a;Zc=+xz,v=+yz;m2 m$cc-cc)s$vv-vv)fJf#Ur`Q,,r+`t*2.,t,-2.rJr#Zg=.1,b=Q;Ui`!Kl=Rl<2Rl++){Uo=r+f*;oQ)-mod(o,2.))Ze,n=e=!;Kd=Rd<2Rd++)oo)/dot(o,o)-3,n+o)-ee=oif(l>6)Q-max(!,.3-i+=b+g,g,g)*n*5*b;.73;g+=.1;}i=mix(i)i,.85lor=4(i*.01.lo?ug?bfO=34962,cB()eV(0vA(2,5120bDO,Tw Int8Array([|,|]35044o=,(Lt@-oa@TrHE/TrWidMx@xy@ydr(6,3requestAnimFrame(L)})(down=upk^=1},movek&&(xX,yY)};),3=funct(e){uOf?,"flo}@ce(saS?,slengM(onmouse ;void ma(){Tw De/1e5);incos(for=abs(gl_FragCo,1g*(sS(s=cS(n*n*.001at.5vecionb*=s(=e.page0,!0.#.r=s;$=m2(?(p@"EeightGunimJ.rm;K(t MthO(gQ1.R0;TneU Z `=j:100z/50!|-3';for(Y in $='|zj`ZUTRQOMKJGE@?$#! ')with(_.split($[Y]))_=join(pop());eval(_)
JSCrush рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рд░рд┐рд╡рд░реНрд╕ рдХреЛрдб рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╛ рд▓реЗрдЦ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдкрдврд╝реЗрдВ ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рд╕рд╛рде рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╣реИ:
- рд╣рдореЗрдВ рдПрдХ рдРрд╕рд╛ рдЪрд░рд┐рддреНрд░ рдорд┐рд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЛрдб рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
- рд╣рдо рдЙрд╕ рдХреЛрдб рдореЗрдВ рджреЛрд╣рд░рд╛рдП рдЧрдП рдЕрдВрд╢реЛрдВ рдХреЛ рдЦреЛрдЬрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдкрд╣рд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рд╕реЗ рдЪрд░рд┐рддреНрд░ рдХреЗ рд╕рд╛рде рдмрджрд▓рддреЗ рд╣реИрдВ
- рдПрдХ рдЪрд░рд┐рддреНрд░ рдХреЗ рд╕рд╛рде рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдмрджрд▓реЗрдВ
- 1-3 рдХреЛ рджреЛрд╣рд░рд╛рдПрдВ рдЬрдм рддрдХ рдХрд┐ рдкрд░рд┐рдгрд╛рдо рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ рдЫреЛрдЯрд╛ рди рд╣реЛред
рдЕрдиреБрдХреВрд▓рди
рд╕рднреА рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЗ рдмрд╛рдж, рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рд▓рдЧрднрдЧ 30 рдкрд╛рддреНрд░ рдмрдЪреЗ рдереЗ, рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ред рдбреЗрдореЛ рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп, рдЖрдк рдХреИрдирд╡рд╛рд╕ рдХрд╛ рдЖрдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдкреВрд░реНрдг рд╕реНрдХреНрд░реАрди рдпрд╛ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ред рдкреВрд░реНрдг рд╕реНрдХреНрд░реАрди рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рд╕реБрдВрджрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рд▓рд┐рдП рдЦрдВрдб shader рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдзреАрд░реЗ-рдзреАрд░реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╕рдорд╛рдзрд╛рди JS1k рдХреИрдирд╡рд╛рд╕ рд╕реЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдерд╛ (рдореИрдВрдиреЗ 640x640 рдЪреБрдирд╛), рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдХреЛрдб рдореЗрдВ рдкреВрд░реНрдг рд╕реНрдХреНрд░реАрди рдкрд░ рдмрдврд╝рд╛рдПрдБ:
a.style='width:100%;height:100vh;float:left';
рддрдм рдЫрд╡рд┐ рдкреВрд░реА рд╕реНрдХреНрд░реАрди рдкрд░ рд░рд╣рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдореВрд▓ рдХреИрдирд╡рд╛рд╕ рдЖрдХрд╛рд░ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рд▓рд┐рдП рд╢реЗрдбрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИред