From d29b68de3a19d4ef6711a29ff6fedfd92fe6cd6e Mon Sep 17 00:00:00 2001
From: MathisWellmann
- +
- `shade` is called once per pixel (~0.5M calls/frame at 960×540, and the canvas re-renders at the window's size and aspect ratio), parallelized over all cores with rayon — an interpreted agent-code loop would be orders of magnitude too slow to animate. From 6f491f1533145e273d59e1af5de3808113f830d0 Mon Sep 17 00:00:00 2001 From: MathisWellmannTQe@^O4uRg&X) zw*;2=avWa^VfiL=|27Af?;T(*J{Hyz8(}S(0&A(duvSI>_DL|BKlmSl|KlVBau64tRgSjWj+#=V1eyzF=CFzG$4( wW{Q^88$W$rjRi BSwi~tr})2DitlOv3*@p`v7#IQ{*RTe%T@RP|7MGvY^z16L5|j9 z{qLe;@~aHn$ 9Qc>Is -I(e3~IDUPZ|S7g3Lf9!HB@{>s9 zPl*8o2DC(Rl$6Wb?lp@DW$#LNN{N)JHa_+~O3SrkMd!Olrq%r4bM&8e#OheA|DM01 z4P|dlKK^^&aDBSWDys;A>OJItMKk$T(O5+l-IkO5e_o2bG et81hP(rLNAgbOoyoh9cO~ymE-w)Mzw;^I{QTd3?a3X;9m$=^UC0&W zuH (2q2%%cy#G57;p7qIk>t_jG32r2apdvj z3FJxS$>b^IspM(o>Es#YndC*Eseb*v${{cMEceTm V1@epJm&h-ZUm?Fr zevSM(`3>@$ }Ym?U@uS;H^ya9Pb@yc2n6@-F0E$-9%=lG~BnlRJ<*k~@>TkSoYt$=%4^$vwzD z$-T*a$bHHE$o5=v(d1*u$C8gDA5T7kd?NW|@+ss~$)}M|C!aw+ zi+ncu9P+v3^T_9uFCbq?zL ; z`AhOw f|-ZYm(O@uT5Tuye@ft@&@D$$s3V3CT~LC zl)M>v3-Xrat;k!Gw;^v!-k#isyaRbh@=oNP$-9tuCGSpdOKwMQPwqhONbXGTLarcp zC3hotC-)%tB=;uwA@?QsBljl{AP*uBCJ!MGB@ZJHCyyYHB#$PKA&(`GBabIfAWtGs zCQl(xB~K$yC(j_yB+n+#A wo sPuN0W~sA4@)td_4IC@`>b=$)}J{ zC7(t &VxW zZy?`9{wMin@-5_B$+wa3Am2&8i+nfv9`e29`^fi`A0R(Seu(@q`4RG? &|oBR&>J@WhH56B;qKO%oj z{*?R~`E&9Y @`2=o$cK;*B_BpUoO}fNNb*tSqshmRk0l>R zKAwC6`9$)` !>GH;`{4|C4+(`4;l6 ` z9{GLp2jmaQACW&Me@gz0{5kmx@|WbV$X}DcA%92yp8Ny(NAgePpUJ )w;*px-io|6c^mS! uA=i@Y$o1p~awEBk+)QpI&nNFe-jlq5yccB!$@`J_Cm%pQkbDsN5b~kq z!^nq|k02jOK8k!a`55xC Y2?$%XOPb#pG`i8d@lJs^7-To z$QP0?CSO9nlzbWaa`F}Ah2*QqSCg+HUrWA@d_DOF@=fG_l5Zy8LcW!J8~G0Mo#ea7 zca!fS-%Gxad_VaC@`L1u$PberAwNofjQlwH3G$QVr^ru}pCLa>exCdS`9< zkY6RgMt+_A2Ki0$TjaON?~vakzfb;v{2}=x^2g*)$)AxwCx1cylKd6 {ygRuqxgEJZxdXW)xih&7xq{r4+>P9w+=JYc+?(8o z+?U*s+@CyvJcvA)JcK-yJd8Y?Jc2xuJeoX)JeE9;Jf1v(Jc&G+JcT@!JdHe^JcB%w zJexd+JeOQat|C{HYsj_aI&wX^f!s)LA~%y;$@9s3koP1nAn!%qo4gNsU-EwB{mBQA z4 Z+5@)_i_$Y+z! zA)iY=k9 Kd1dk{ ytMiZ%E#VyfJwb@}}g? z$Xk%NByUCDn!F8pTk`hgHsl@1JCb)I?@Zo>yeoNka$9mca(i+Iaz}D!au;$1xhuIF zxjVTBxhJ_dxevK7xgWVdc>sA3c`$hhc_?`pc{q6lc_eu>c?@|hc^r8>c>;M7c`|tl zc`A7tc{+Ipc_w)_c@B9lxsqH(t|r%zYsq!wdU6A~k=#UXCbyF3llLI+NnSwSi@Y~^ zAM(EB{mA>14 `B3s< S%k$=8stC0|Fro_quO zCh|YYH ?BKalq%j8$cuaaLQzfOLG{3iJ=^4sKh$nTNgCx1Zxko*z(WAdlu z&&Z#XzaW1}{)+rH`5W?g ^2YLLN#UMjlQcK^{pSO&&uYOCCoa zPo6-YM4n8ZLY_*VMxIWdL7qvTO`b!ZORgkWk*moy r|B@(JV< z$tROfA)iV &n2HnKA(I6`9ku= #ib?v|oEbMN@!d|R3Q0(r;Tw9Uv z^>;p;ef|wU$8+wv_x*U^n!T^rdL1A?Lw=V09C-!#dGZV7mE@PmFOy#(ze;|M{5ttf z@>}G$$?uTgCBH|0pZo#&Bl5@OPspE=KO=um{*t_k{1y3Y@;Bsf$={K`C;veHk^B?+ zXYw!PU&+6d{~)g>|4Cl+pG!ou_Wmi+BG)F@A=f3>BiAQ4Apf<%uerqB5+ibBauae> zax-#satm@xaw)krxed83xgEJZxg)s~xih&7xhuIFxjVTBxfi)NxevLF+?U*sTuvT9 zt{@L24 b^IspM(o>Es#Y zS>)N|Ipn$IdF1uT>ytMiZ$#dhya{ yeoM(^6un4$a|9aBJWM!hrBO&fARt31IY)G7myc{4 Xr;tx2FCw2tKAn69`AqWJ P NnZ1x8;WM_{m@X0T$@~nT$fyrT%X*4TtaR{ZcJ`M zZc1)OZcc7NZb>dBw (2q2%G@O7aNuNb)H1X!00x6?rVVnmmp?o;-m(kvy3^g*=r!jXa$^ zgFK5on>>d+mpqTW9(jH82IP&%8 bJfFM;c}wzE QxL&=Ac4<{c%K9YPC z`DpSn zKt7RtGWitpspLiE)5xcj&mf;kKAU_F`CRgO V{LSCOwKUqil@d>#1)@{Q!1$TyR3A>T^AjeI-#PV!RnUF5sT_mJ-; zFC*Viet`TS`62Sd yYb`>yhh|8<0!Le=YXE zHH?hOO~_5j&B)EkEyyj&rR3J+HsrSCcI5Wtj^s|{&g3rSuH }w;*px-io|6c^mS! 4i2Lw=Y19{GLp2jq{)ACo^Je@gz0{5knc@+$II _+lDm<+lY5YR zk$aQ-kjuz@$^FRX {9JcvA)JcK-yJe*uf9zh;S9z`Ba9z(7ok0n== z$C1aACy*zSCzGd;r;?|Ur;}%pXOU-<=aA=;=aJVVuTS29yb*b0@+Ra>$(xbqleZvm zN#2UQHF+EIw&d-|+mm-7??~Q>yfb+h@~-6F$h(vGAn!@ui@Y~^AM(EB{mBQA4 Fb DU+a`I#3$H`BSpCms;ewzFY z`C0OF *P1dZ;{_7ze9eP{2uvz@(1LP$RCqGA%9B# zjQlzIOY$o6SLCnB-;lp0e@FhF`~&$%@=xTS$-j_)CI3$TgS?vjCwa|(ZYr9!_fJzT za&2-Qa$Ryga(!|GatXN+xiPs3`L7NAT3hVJ)QsGm+=ASaTuN?DZbNQMZbxoU?nv%L z?o94N?n>@P?oRGO?nUlR?n5pk_a*lumy-vOE64-MgUEx)L&!tP!^xH85#*8NQRLC& zG2|-pSaLOa9C0(l~NGI }X~L&%4c4 UO|4I`~rC;`6cqp dBw (2q2%G@O7aNu zNb)H1X!00x6?rVVnmmp?o;-m(kvy3^g*=r!jXa$^gFK5on>>d+mpqTW9(jH82IP&% z8 bJfFM;c}wzE QxL&=Ac4<{c%K9YPC`DpSn zKt7RtGWitp zspLiE)5xcj&mf;kKAU_F`CRgO V{LSCOwKUqil@ zd>#1)@{Q!1$TyR3A>T^AjeI-#PV!RnUF5sT_mJ-;FC*Viet`TS`62Sd yYb`>yhh|8<0!LjmVA3O~_5j&B%Xk^w*xm9?dPtEy<yGIC#XKXN&F0J(xZkUWSym^_3$ zlsueVNghESNghQWO&&w8B9A3klgE+AlP8cTk|&d=kf)NTk*AYqkY|x+ljo4 fTWAY~CP05>)=aaV}Z%N*Yyft|n^0wsd$lH^5An!=tiM%s;7xJ#;-N?I> z_aN^{-iy39c^~q=