From c8f3f1e9812ccdb898e739792b1917a3449f8dc0 Mon Sep 17 00:00:00 2001 From: Digital Artifex <7929434+DigitalArtifex@users.noreply.github.com> Date: Tue, 19 Aug 2025 09:33:45 -0400 Subject: [PATCH] Added shader packs --- data/packs/Alien Ocean/images/iChannel1.png | Bin 0 -> 40867 bytes data/packs/Alien Ocean/pack.json | 31 ++ .../Alien Ocean/shaders/Buffer A.frag.qsb | Bin 0 -> 6842 bytes data/packs/Alien Ocean/shaders/Image.frag.qsb | Bin 0 -> 11395 bytes data/packs/Audio Reactive Galaxy/pack.json | 22 ++ .../shaders/Image.frag.qsb | Bin 0 -> 7216 bytes data/packs/Blueprint/pack.json | 2 +- .../Kaleidoscopic Warp Tunnel /pack.json | 28 ++ .../shaders/Buffer A.frag.qsb | Bin 0 -> 12961 bytes .../shaders/Image.frag.qsb | Bin 0 -> 2187 bytes data/packs/Lucid Dreams/images/iChannel2.png | Bin 0 -> 26156 bytes data/packs/Lucid Dreams/pack.json | 36 ++ .../Lucid Dreams/shaders/Buffer A.frag.qsb | Bin 0 -> 3080 bytes .../shaders/Colorful_Lens.frag.qsb | Bin 0 -> 4787 bytes .../packs/Lucid Dreams/shaders/Image.frag.qsb | Bin 0 -> 2209 bytes .../shaders/Buffer A.frag.qsb | Bin 10152 -> 0 bytes .../shaders/Buffer B.frag.qsb | Bin 7785 -> 0 bytes .../shaders/Buffer C.frag.qsb | Bin 7035 -> 0 bytes .../shaders/Buffer D.frag.qsb | Bin 7959 -> 0 bytes .../shaders/Image.frag.qsb | Bin 9430 -> 0 bytes data/packs/Neon Ball Pit/pack.json | 36 ++ .../Neon Ball Pit/shaders/Buffer A.frag.qsb | Bin 0 -> 6964 bytes .../Neon Ball Pit/shaders/Buffer B.frag.qsb | Bin 0 -> 3349 bytes .../Neon Ball Pit/shaders/Image.frag.qsb | Bin 0 -> 4135 bytes data/packs/Neon World/images/iChannel1.png | Bin 0 -> 48250 bytes data/packs/Neon World/pack.json | 39 ++ .../Neon World/shaders/Buffer A.frag.qsb | Bin 0 -> 14894 bytes .../Neon World/shaders/Buffer B.frag.qsb | Bin 0 -> 3462 bytes data/packs/Neon World/shaders/Image.frag.qsb | Bin 0 -> 3362 bytes data/packs/PolarVisualizer/pack.json | 21 ++ .../PolarVisualizer/shaders/Image.frag.qsb | Bin 0 -> 7967 bytes data/packs/Simulated Swampland/pack.json | 28 ++ .../shaders/Buffer A.frag.qsb | Bin 0 -> 20837 bytes .../shaders/Image.frag.qsb | Bin 0 -> 2187 bytes data/packs/Voxel Land 2/pack.json | 21 ++ .../packs/Voxel Land 2/shaders/Image.frag.qsb | Bin 0 -> 7147 bytes .../generative/Circle Dither (Color).frag.qsb | Bin 3552 -> 0 bytes .../packsrc/Alien Ocean/images/iChannel1.png | Bin 0 -> 40867 bytes tools/packsrc/Alien Ocean/pack.json | 31 ++ .../packsrc/Alien Ocean/shaders/Buffer A.frag | 33 ++ tools/packsrc/Alien Ocean/shaders/Common.frag | 57 +++ tools/packsrc/Alien Ocean/shaders/Image.frag | 96 +++++ tools/packsrc/Audio Reactive Galaxy/pack.json | 22 ++ .../Audio Reactive Galaxy/shaders/Image.frag | 85 +++++ tools/packsrc/Blueprint/pack.json | 32 ++ tools/packsrc/Blueprint/shaders/Buffer A.frag | 8 + tools/packsrc/Blueprint/shaders/Image.frag | 356 ++++++++++++++++++ .../Kaleidoscopic Warp Tunnel /pack.json | 28 ++ .../shaders/Buffer A.frag | 122 ++++++ .../shaders/Common.frag | 3 + .../shaders/Image.frag | 6 + .../packsrc/Lucid Dreams/images/iChannel2.png | Bin 0 -> 26156 bytes tools/packsrc/Lucid Dreams/pack.json | 36 ++ .../Lucid Dreams/shaders/Buffer A.frag | 25 ++ tools/packsrc/Lucid Dreams/shaders/Image.frag | 9 + .../packsrc}/Multiscale MIP Fluid/pack.json | 0 .../shaders/Buffer A.frag | 193 ++++++++++ .../shaders/Buffer B.frag | 96 +++++ .../shaders/Buffer C.frag | 82 ++++ .../shaders/Buffer D.frag | 115 ++++++ .../Multiscale MIP Fluid/shaders/Common.frag | 230 +++++++++++ .../Multiscale MIP Fluid/shaders/Image.frag | 139 +++++++ tools/packsrc/Neon Ball Pit/pack.json | 36 ++ .../Neon Ball Pit/shaders/Buffer A.frag | 54 +++ .../Neon Ball Pit/shaders/Buffer B.frag | 3 + .../packsrc/Neon Ball Pit/shaders/Common.frag | 47 +++ .../packsrc/Neon Ball Pit/shaders/Image.frag | 8 + tools/packsrc/Neon World/images/iChannel1.png | Bin 0 -> 48250 bytes tools/packsrc/Neon World/pack.json | 39 ++ .../packsrc/Neon World/shaders/Buffer A.frag | 281 ++++++++++++++ .../packsrc/Neon World/shaders/Buffer B.frag | 31 ++ tools/packsrc/Neon World/shaders/Image.frag | 15 + tools/packsrc/PolarVisualizer/pack.json | 21 ++ .../PolarVisualizer/shaders/Image.frag | 133 +++++++ tools/packsrc/Simulated Swampland/pack.json | 28 ++ .../Simulated Swampland/shaders/Buffer A.frag | 247 ++++++++++++ .../Simulated Swampland/shaders/Common.frag | 5 + .../Simulated Swampland/shaders/Image.frag | 6 + tools/packsrc/Voxel Land 2/pack.json | 21 ++ tools/packsrc/Voxel Land 2/shaders/Image.frag | 115 ++++++ .../generative/A Beautiful Fractal Loop.frag | 25 ++ tools/src/generative/Give it Moire.frag | 79 ++++ 82 files changed, 3261 insertions(+), 1 deletion(-) create mode 100644 data/packs/Alien Ocean/images/iChannel1.png create mode 100644 data/packs/Alien Ocean/pack.json create mode 100644 data/packs/Alien Ocean/shaders/Buffer A.frag.qsb create mode 100644 data/packs/Alien Ocean/shaders/Image.frag.qsb create mode 100644 data/packs/Audio Reactive Galaxy/pack.json create mode 100644 data/packs/Audio Reactive Galaxy/shaders/Image.frag.qsb create mode 100644 data/packs/Kaleidoscopic Warp Tunnel /pack.json create mode 100644 data/packs/Kaleidoscopic Warp Tunnel /shaders/Buffer A.frag.qsb create mode 100644 data/packs/Kaleidoscopic Warp Tunnel /shaders/Image.frag.qsb create mode 100644 data/packs/Lucid Dreams/images/iChannel2.png create mode 100644 data/packs/Lucid Dreams/pack.json create mode 100644 data/packs/Lucid Dreams/shaders/Buffer A.frag.qsb create mode 100644 data/packs/Lucid Dreams/shaders/Colorful_Lens.frag.qsb create mode 100644 data/packs/Lucid Dreams/shaders/Image.frag.qsb delete mode 100644 data/packs/Multiscale MIP Fluid/shaders/Buffer A.frag.qsb delete mode 100644 data/packs/Multiscale MIP Fluid/shaders/Buffer B.frag.qsb delete mode 100644 data/packs/Multiscale MIP Fluid/shaders/Buffer C.frag.qsb delete mode 100644 data/packs/Multiscale MIP Fluid/shaders/Buffer D.frag.qsb delete mode 100644 data/packs/Multiscale MIP Fluid/shaders/Image.frag.qsb create mode 100644 data/packs/Neon Ball Pit/pack.json create mode 100644 data/packs/Neon Ball Pit/shaders/Buffer A.frag.qsb create mode 100644 data/packs/Neon Ball Pit/shaders/Buffer B.frag.qsb create mode 100644 data/packs/Neon Ball Pit/shaders/Image.frag.qsb create mode 100644 data/packs/Neon World/images/iChannel1.png create mode 100644 data/packs/Neon World/pack.json create mode 100644 data/packs/Neon World/shaders/Buffer A.frag.qsb create mode 100644 data/packs/Neon World/shaders/Buffer B.frag.qsb create mode 100644 data/packs/Neon World/shaders/Image.frag.qsb create mode 100644 data/packs/PolarVisualizer/pack.json create mode 100644 data/packs/PolarVisualizer/shaders/Image.frag.qsb create mode 100644 data/packs/Simulated Swampland/pack.json create mode 100644 data/packs/Simulated Swampland/shaders/Buffer A.frag.qsb create mode 100644 data/packs/Simulated Swampland/shaders/Image.frag.qsb create mode 100644 data/packs/Voxel Land 2/pack.json create mode 100644 data/packs/Voxel Land 2/shaders/Image.frag.qsb delete mode 100644 data/shaders/generative/Circle Dither (Color).frag.qsb create mode 100644 tools/packsrc/Alien Ocean/images/iChannel1.png create mode 100644 tools/packsrc/Alien Ocean/pack.json create mode 100644 tools/packsrc/Alien Ocean/shaders/Buffer A.frag create mode 100644 tools/packsrc/Alien Ocean/shaders/Common.frag create mode 100644 tools/packsrc/Alien Ocean/shaders/Image.frag create mode 100644 tools/packsrc/Audio Reactive Galaxy/pack.json create mode 100644 tools/packsrc/Audio Reactive Galaxy/shaders/Image.frag create mode 100644 tools/packsrc/Blueprint/pack.json create mode 100644 tools/packsrc/Blueprint/shaders/Buffer A.frag create mode 100644 tools/packsrc/Blueprint/shaders/Image.frag create mode 100644 tools/packsrc/Kaleidoscopic Warp Tunnel /pack.json create mode 100644 tools/packsrc/Kaleidoscopic Warp Tunnel /shaders/Buffer A.frag create mode 100644 tools/packsrc/Kaleidoscopic Warp Tunnel /shaders/Common.frag create mode 100644 tools/packsrc/Kaleidoscopic Warp Tunnel /shaders/Image.frag create mode 100644 tools/packsrc/Lucid Dreams/images/iChannel2.png create mode 100644 tools/packsrc/Lucid Dreams/pack.json create mode 100644 tools/packsrc/Lucid Dreams/shaders/Buffer A.frag create mode 100644 tools/packsrc/Lucid Dreams/shaders/Image.frag rename {data/packs => tools/packsrc}/Multiscale MIP Fluid/pack.json (100%) create mode 100644 tools/packsrc/Multiscale MIP Fluid/shaders/Buffer A.frag create mode 100644 tools/packsrc/Multiscale MIP Fluid/shaders/Buffer B.frag create mode 100644 tools/packsrc/Multiscale MIP Fluid/shaders/Buffer C.frag create mode 100644 tools/packsrc/Multiscale MIP Fluid/shaders/Buffer D.frag create mode 100644 tools/packsrc/Multiscale MIP Fluid/shaders/Common.frag create mode 100644 tools/packsrc/Multiscale MIP Fluid/shaders/Image.frag create mode 100644 tools/packsrc/Neon Ball Pit/pack.json create mode 100644 tools/packsrc/Neon Ball Pit/shaders/Buffer A.frag create mode 100644 tools/packsrc/Neon Ball Pit/shaders/Buffer B.frag create mode 100644 tools/packsrc/Neon Ball Pit/shaders/Common.frag create mode 100644 tools/packsrc/Neon Ball Pit/shaders/Image.frag create mode 100644 tools/packsrc/Neon World/images/iChannel1.png create mode 100644 tools/packsrc/Neon World/pack.json create mode 100644 tools/packsrc/Neon World/shaders/Buffer A.frag create mode 100644 tools/packsrc/Neon World/shaders/Buffer B.frag create mode 100644 tools/packsrc/Neon World/shaders/Image.frag create mode 100644 tools/packsrc/PolarVisualizer/pack.json create mode 100644 tools/packsrc/PolarVisualizer/shaders/Image.frag create mode 100644 tools/packsrc/Simulated Swampland/pack.json create mode 100644 tools/packsrc/Simulated Swampland/shaders/Buffer A.frag create mode 100644 tools/packsrc/Simulated Swampland/shaders/Common.frag create mode 100644 tools/packsrc/Simulated Swampland/shaders/Image.frag create mode 100644 tools/packsrc/Voxel Land 2/pack.json create mode 100644 tools/packsrc/Voxel Land 2/shaders/Image.frag create mode 100644 tools/src/generative/A Beautiful Fractal Loop.frag create mode 100644 tools/src/generative/Give it Moire.frag diff --git a/data/packs/Alien Ocean/images/iChannel1.png b/data/packs/Alien Ocean/images/iChannel1.png new file mode 100644 index 0000000000000000000000000000000000000000..a2c047206b20cf3aa5ca204cdf0fd84daa20f167 GIT binary patch literal 40867 zcmV()K;OTKP)PyA07*naRCrz-yJwSSS$3ZH9Ph99H+^RL?&@yz7=RdH0CFe=gOoy+5eiEBjZ)~7 zBuJs4z=38k)3$tNrO)f_xyM^Y)<0Nr&fa^i_kEuw{7--PAIjg~Uvbp$GY$U4^TTJn zz8|yA8vN~v&;2Zz6oBNal<{Pc~2xY`Gr;E zcAR1Mp}biz>l{$aBfPH9_PxfiCt@FVx&PC5*wv@RY#1Mu=o1OySAY2*O2ip^b`?RI zGakjXUPP2}2mPW(-kr0SO6o<(#Y9B;W*=?pVr2tl?Gv$8A->%3{L2=vrb}Yqgz62> zxJpH@kd!G-vmi4y?%yTo)i#^u6ltf@)Nj%EO@eKOQn5(ZH+-{i@qJ;FrUJ8M#Piit z;%bN_y3Fb_)$@Yd69YA=@@o7Otyo3te~Xm=gi)&?1|@TUi{P9RZEkone8T(5gk8Ep z3uHR&f>==SXFgT=4C6G$b~WCFA1Sr{t#K7YzqJkNWqRjAuA5}LFx-@(35uW`)XT}~3`wEx<~|ED=^ zr^)Z{f21W3snz#bxgAvTl7r>~KdtdrZ_rOtByok72W*oDuBdX*+2EEHcC#&i(Su3+ zjFZg;_i6=yTaZ3zfH)iv3E7jEkuG)sj4;kW<3T#Fkdr^=Vk zg8%)yDf_>8&gv(RMR(0t(Gjz%PfJ{KF;kHjIfqX+tc5DVD1l=z!z!bXBaXhdxeA&b z2v-oEk?S>lv1D=edk(}7Z;xW0yl%5PF`)>kBoR0&sXrynZ9)p1iB0=dWH$@wb%wmU zUocH?8MMEoe0X8w4T1R_fdyG0kUBM-_=3j4KK^LN`7-A0MB~$^Hd+?2FO}TqE4u9( z;?`lgZ_yBC#`jm)qb+hHM9uc8_7==4eQMunTn?rrS;&{N#ZL4n(?e$U6{qt$d0nLH zTda;ItS>hhNt2}|;@BC%cuBppN9?Z2QiJ1XH9R3EdKaTe8inwQ^Himq*(jX?Gp!&N zI&#(Ir}0~!?yD>|eKwmVds>Oy>m%(XHsvjH-l0;7NP>{iSWu>YiXb7ZRuNY&6{SV1 zp)3|BFq%sEjfh3YFOH`wT z(d&faQ-O`EBbPE}U8lXBavzI0!>@?k@9~yRFkb@rOdXOmB@InF<}pPuWo2auzx&UATY8u8iBF%?8A(`Ab!7jB z#i~WrQ!!Vdo)lcYUr<*h8kJMZqQn?#Y_DHYy&jT3t5LqaW~zqdN`-G*JwBxuWZmaP ztM^2nO+(Yzl~W8`VeW<4L5ijt+>O^fdO4uD49HGiz%+*`Is&{yw)_7z(1mz{;L_&%LPP74`kP}HhgI$H&OvUf-s4XK> ze?usyOQJ64(n@|T2CRl_gLpT4L!u@K4)IuplsF% z^eKl5)pW*~KJo@MD@BrP2><4nzbPX`kVTrJ�y&y-}GPE`wH|tg@jKHn`BXJX)=A z_S#&345@Tet~LfzcSIw6Ok{6Ztz(8og?V10cw<((3dfHugu20OGNrP}*?7?0(~zx* z`(Pi%y`oxHxs?{2_8!`{h8LC?&MCooM=8BQQw9``1aGzCw0caUc_@>VkuK3KCE`}f z#cj?P`zm`EO}?wV$0~-PCd^Hr+P1|m4{3EQ#B520Jx2Ed;v*C5^)yyK|fH5iYm&nMPr;8$vT?cavgws~ClcF&MDDbx8u3?!hsy7jHO~`h+Js>B^xSD9kGl7s_YQR+)?= zgu-DOP0$pXlVKmJqVoO4nCGGc`G#G-5AFx@V+(0p;_D_oYr}M|vB)z_vqUN!%JGuM zlLIs%V&^GTrgc`v3fyxJ{Pite^D(S>$b<(8guPH;Do#qqmBD{tI zQwd3xsO3JiThx7(A2t)})Tvkzkx@mRUgHHKwrP^YON{PA%@KMXGP}?EdPD1p$i-d8 zp|T^^Pf^o^op0c@3*2Br%@xQ;Ir+Z9QeDy9G?8lwVr`$sYQo$dBUxXuUcI5yJEX`2 zc8dV*h0SW5BC8%vqla0I`TY;CI57?gl_fo=j;%M@_G8>X+|xA<*>zGDHxnw&JtS2@ zkCtSri98DtEuD3eB1$D2OW=4bvC|3^Q$`6=%*_l}Z=%*S%0i%wGfKHn(T|vKcN|;C z+}~Xj5mA*7u;M$ar?9+F5X6FoeMq}l;V%Ltxrh8zBA<&y!It=DL-V(X~YvI~~oCnVup4&oMm5wa8w3~PrbRS-RmT|LC! z#?)k)qTXS<3lPK#MKWc#bm<(on0XZnZ_Hr$1a>1RSLB6FnOnqyO5}|(g$k0sMcbwz zTIAg-PFOIBc0`g)Et!DSCOfL4&(`E#jC}lp-RJ{Zkuq{jepPnalmUL?QCA8!fe4O* zkdII&0}?0a>`9xu`z5v`@ap!Ks#xW0FX1{@X<~A_^4O!tYA?lne~(%D3fH`08?9-z z2Pm@vDR0*r!i-Tr_7x#<+zV-Zjj{yH;O5Zduoe) ztg|&Y_d3N=#5goDZ^xXw0(wKBeQYArh6kZI-qNa+Y&RPsMWSw*M2fk)CBAZ;zIp+|aAq1Nv3Ci{T3Z6S9JT8fA3Z}2NBjh)WTw&YM2k%R_*c1LlT;$&SE zX@jlQSO!b9qJr@6{{E{nH``q7?$|qc%HqnUr)7k;L8khsOOK%3XCnukW+|U0E1HkH z6rZ4T9HHlM8CPgGVf1E=*)q@#k)`Qjtz(kNLRVVkp^RAh$e#W+a}suo9qnGh)wrN< z`bb7h=$eFnfM8~v)Q^#)CAwB;Iv2SRWCq$tQpZ8lRg{&(jhfLg1%z?NYP_KHZNm7U zZH&Igqk}zM@fsaSeuUN8W4* z)Cy%$&}sG<&2JcLK0&TvH9Sfxu#>QVX>;?34ZeTF+5SEk7ddhn(b!c8bWlz-EOkmW zts!R-VYKA1|8M!j{GVxd9UNaED`zOq8e$DXvRW~4xLzJ?lEOIot z#j4_yZW4N8mHBo{wPUhQEF?7~aaS~22639xY1A2CEioUuL2j~ZED=@$g6>kkx7j|= zXp{xBxq)Y9VKKR>)5mn3o~Bt@GlcMeGEE=9a3fG8Jro z88mrSJIAvs=*u~0`)8bAF9`~P$5M?8DMPInID$+TnHM@~g({yayPg^Rz z9%I*I-!AaA0M)EeDJ#7F@DalhX`Ot->dhtnM>f%9g|pwsavR)-Hz;L<-6}~PnaPhk z#LU3@rb*;Q80(lU7O2Pq^NNhJoT5ih*ga0E-7Q&;6>7sBw_=mNvLP5Jv^pJ@-VKS< zrqK&9FqyrRur-;~a7kr_8$Y96tVxR=!yNoaD$d7*Eh2@rKsOx>&0@F9S%)hg?VmD| z=Txpz>ROBQc*Ib)saF){E0J9`WgeNlaK2@lToXz;<$B6*_D}EzKIfx|h5%VvXV2QP zE>yOQIk6&Atr$!Vg=`e^;$*{eae^et+>fRlJUwLb_GgB&%%#vr`08K%>r!()hLT01 zxwu}7tT97dnw0&3&VxOW85ns3!(6idwBz9AOXlxCA~t$_T#jj06{LDZHdX07)w%k| zoabj2cjlaGTw}CaQE5G;lg5bC51&T`@5V#fR~e&nkku&NEtB2`sc=!;0aC?4i>EZR z17_9?x7mS>ggf8zr2igw_Jj!uU)l|>77Kc^%}&t?7fbf`+q@1uco?jsC4>gWBb#oP zG7e(4cNfULJJNU#{+FQ`2E26?llrPtUN8nN_-)U#<0`Y44&IQqa= zwAiPM+lNg&CAi6vO`Wy?VdPN_BWg!A{x}yI*b_uO!&jR`ZzJ~prhz@H5`4I%@uI`` zUQX|@O1||F!ya4j1ETBU6)InR*=KT_vpRsfP-hTth<{$g%NonYE#mxyUE>0WoRz22 zsmF}1Azy6om{$*Q!;)SFHb0GNo%D%v5!o$>1_F8Y8c^a4&JrG@ll%}KAe-~4U*a&fAjP={J8v{R;+W{tMK7g zqCBclxq%-(ZTRNv29s4z%f2VvWJqDkvaVx>0oVDCllm#E@|I3nvW=UZy8C>Je_+_N zI8STX69K6zkx41zwZ_p?6YuUn@^tW*T=AfEE%NZ3`7CF6sI!q}3^!wGNSygYE*DcC zsXFIcfIx#Hony)sL}QI{rx2VTuysfD*{}>u8h(MWuaNl*iryo}*-!j(bISJ6XL8%+ z%de;W{F8(uTcpj1cw108?%@3pajcKIt(hF3HTdv{DWTS-c6Ei)dQ7f=pt9X(^;lwZ zIfuxjK0M|5jmlU%$A8EI(h5}8I7XW>9*tg?Xr_}X*Z5J6@HhYci*n#S<6Ln$mX?gO z7RviMwMxd%*(1buiIPq@3tfcv87 z6Qw2ox{Balv#uqaJbsQf8#7Vr)V2Y-+~();mPS3tT}7CN$jc{x&x}{xUr!11KD|=K z^?o32{Sr^IX$G$u*ZL@0$^Py4%$7Zl)tvFbr=A@$sob+a(piT)#C}Ti`Cm}IjtJaq zK9n-gAHQUEeoLrF)E5!4D6uO|%3}{>-eV_hsKp8w(HyPpAsvS3c}(#hj9!J|BNZ-9 z{OX3MUnczD{~%FVUF6X{e{D4R2Q8ugbchk>OkcghY-*TtKolhilFjv}6~8_Cg8xVR zj$c2dE`QFbf7QoZOtJ4m&Ib{tKce@Ge@kQTvI|$d&P<+CQsyyvS3^lGMw1mCWx|zK z<8zv(Ep?l;Y@0PI4 zxUwXk?N``bY*4@a61<vW|c#rV)%iomN zvs0wy21zZsU%aPZdBi46I8^K0*CX}_Fta*Y0aIa$8{N~_pHqx{h{p&;i;Mo2m#e4T z)X#|(g;P1f^Cdp@s?^?t^CYDsEE!v8I1?AQOfkk5u{A@C4N7y0J$p=G6qt<|e>X(y ze?(gyaHmg5Cig_!29F=ZPm0Ld!b2`hvUo^p6|_tZOTS}$<)KZ;bq#jDVipR89C7zw} zq7Hg0^UfGk-blE?Jtr@|K)uOWIuXOR!encaw9i;>zsFuzdDMcp_m{+bChD6Mxu;Mq zJ*HBhzE-e_b_{DNzFlYIo3utLe*2bcHeeEs=qX2p*^KkKjBYhiS$lIfKi)B{zhHQfaCNtXtVV0#BdiKk^$TJvqA<5;HzMVcg?BY2 zYgCC>JE|(2w)?D$HQ`hy(RSRD^T_G2$>&7V0wYh+YkLU)@^AiS>4p)OBQOa^3=Y1f zHpv;47Yv-3)uhit9r05Bf*Zvn82T`RO|YUHcG*AeFdGGIw{vQp3bDJSR%x(aZfWTy z>kumK9&xs&EIY_;nfvH9PHxa^_i4=&ZoL`u@fowrYsdo}!6Z`?Ld}C@pVN)PT3XQf z<_X?^y5;+H#Grpbr!BL*TM?ooBT=3h=ocHBttP9^L!DKQ+A7u2f`4>N>amG&Xd%d- z*aXK6^n$m$4e3tht4_dlG{frG$(Ic#(hfz;X(kD!Z4xXKiY%egeuUtAxE-JN{*c=r zZxFqLVt<2aH4q|)=B>z1T%hc!_-2o0IOWoPxTGadsuIbd&fVmW&N#tqRMB%4W0SJ5 zCHj4hGHjA=?zxW>WJBlF@i@OzdHPKIJXhbX3I<0#M&67sbDfJ?L?Wkz4;EduAlxpg zI3<@`g~nkWdE`-7B`$)9R?TEvPvA<#b_~4anud8wo`eWdfY~}^>itNvJY?7|uq!P- zWNVtM979Oi$R?}RErTx}69^{xXhNL(R6G*~JLYqEDk|Jq1w-Fsp6p|a0mk!$>BbCkW;!2Ys&ZKTth5 zqqbV3mnxgGq){E<%I7ptd9O8TjC|arq+PGE+Ab(79$ozq-wlbx7*!5oBO>(-%1uVR zUel{pSc@xgEX+)&FC6lx^gVsSX1XotAH^sa5<96*Sq_Y7*%fbs1|6uk*cmu{nAl53dl4sLME({#wP7Lxot#c!FsRAlah4t~6% z)(%<5eSG-?UE9L2s>Gg3UQ?LdkI|}KxyL0qO;b(!uOjDJE-1qQkMO zA#Qh!3xni9!U=43nQsfnmgj6LRPP!$*=LEWA@~NbhTycnKVp~ zr3tij=I;acBbl<15s3qo$V2OOSZ}V`YrMeQ-7^YBjJ!m>pAa`RzUdkKX{}S;`Gos6 z!Q3UN26VJTlF5dqvBvD~6D4b|$7`N8s@zKk3)iEsLa7+Yk^-Seo>U3D6158OX)V~lfmySQwYcOumN-_cZ1a0+tv#$lW3>Fh ztfC{8I=PTCXb-r*pKz23WZ5B-F=yxH=y{8^`WC0DQ46X_V!+m~5^dMWX9Eg5qB09u zc?-<8L{L29%%8EX));S~o|NodAF*9!uPw6vxM5M*(b-gp_B_04$jQ?d@5TbrOu(sc z=`>YjS7RY$2IgLIf5mwGN0OyRU}RJ~IY*JjMeI|1s7F&sOP_L@lYTiQ+=j@$&kz;icfb4lQrdaA zU6cGupxfKw-b4g@M^v*1JZVE5R#59Dk++0hiF`Op?B>CFWVO(wQ9CY3r> ze~#vx?5ZKrrr=1jSvqq}37qOF<4-#z!zA8}Y1XQUazQMm=z527v?U$+JUVQWZ`SOT zl1WgdZ5K#If|nO$^Yrt}Z9KNHvVfT(qK;gwc8IdtBdndXTQz779fFIH*r~FJVjO=7 zs(|5ikfah#Gck)PvrMOI*3gzAyXF!-)Tqe?cP)#aZ}Z)3!$1rms3WpMiB%@;0v(Ie zSLrG#LHID|mb@E#=v4(nvWZ2V@^(Sxi!QOh#MCv+T~3ml2%?WCBlk9 zQ^{pqxxn-_LNOp{#-C^5%&lXlGh{)h%95yYNS;j?`39Ay!}9tbrvuf(Vw06vWr;7W zP~;9<*C%vSTKf`>!XWZ3*2L6WRql5)LObMT)Fd0!N#-uoiAS$4Bc^>yaYpm-g!%F# z?xsSgDKMMF$jTC3ddM&}#Ks!oZ(jbUERS;Xg-v^CvztyyCeDq|Uggsw#`W5) z9S!jTTyS(Mk;HblMGyoi>U5OsbD&?aGM^8*_OXX5j$Tl|&%VWIQrL2jhMHf#^7&sbf5g_{^VJ1=w9gIDX>#Krv;Lx~| z=^g~!`Z{ubfjmku8XEIWo55q9BAyVQ&)5tGIP08+XwZ#S`c;cR?k1Rp&#=-U)Ryd` zgi85{G=I(9*Lil(;)h#>79NJT#p|?4qB&V3N0`@X=*H)|+-{QtJ!f&_lT|e&%|p@- zkuGjnY66zh$FgTcdVrQVOgxWj9HAVZq5nK%ql(z-4!vXHjzXjpo8ksEWWu8+;dX=} zo5XI8-cS&%HhDJ*ys#nnN^V@%mwsnP98)A zPoE*&{*35!m<0;M{adtcpKH-W+s@JW3RAkqPa23;NN$MiB_(S~Wqdxv>`3evb^Juf z)m#i!XQ9UE^990x`Ct9}vV89|6_-?obF$jy<|eEP?y6fl4VxeeSw=17 zhaaOux^&q)IO8t9p_%23{09A2N}@_+{+7$j1(h!cXqRu;v%h3E4=GMew0MQ+swhH( z*aWAh63ivq&YHV;j@r)A(+-RCIrX-V?`_bfDpL25VzHsKr*J>YY1!yRu2hEhEr9kY)gWN@p4>H(GBi$k($+E zbNi9U&l)VoGTqGJsyQKAC1|BW`{D5Ki$r6eENhSlQ_P-BB3T%_fHHx>AmPm`iDxhR zxO%|d>nVqFn~Ag`E+ym#_MmN|iYxSbgUy|aYHcZ%BNBB&F845R*ZBDYrCO)`0EKTh z2>;Dr{-SI(e$Bc2XWaa2+PyW~-Fs@)$J{;mWA*{fKCEW~Xk)Tk1@mTuBWuJ5P4cM# zcEPxOM^}2vW_*WGNQm_wU)LP&*WWSUD#(Y2jIS=p?Ngo#E`GNlNi|yHf>dlHuTQvL z|9@ByFKDmEQZRXuwQ#j_qHzzRn5erUH*6Yi%+6SRhB8_Ui-}m^%0Bz8Cs?zXX=Th% zDp|w|UbI72tLzCKHf}&>!I3}b(omWCTkIl3FuHVmCU>@ja{Wv|Bc2F-F`}aa5VqA5lLsc^zl$T{O6F=SW$BwoceP z6Ih(fl+}m!uTriSh)tbY<}%2ej8ze{s$!TvtC7aOv15{&90fK%EML+6;sxUJl2UH5 z2;q3xMwo^8n;1WbQqOQqmz^x3#17SV$fub=`&uVF^;oV-D$SC^ZWHO&WY(L1W-t%S zE@4uT#4F@oNT>gZP?6Zywy2rLZW;49sdH0A#8LyZJ|@=-7XNfk`xlRyjMwySiKbWO zPEu)E0-wSyr>0CUW(cvtwO^uT0!}v-+M7U~wR{y3nptKa?{0E+tHGWEmJie+BJh|c>1=@7UK=}qQpJNP4hO>}K z*MZ8CYB9jO^}$Jqb}@Etq7{$Xs232#2(m@BTIHWKlaq^2SUoVsI``278DsFq-_mVr z^t~gr%ADPG&dQQ-%n|OwrDoWi)eblh*JPUntEX`lTU2z9V4l-&)e*deyCPs zy0b*Ouq5Br?Uv=@L4e`|qxtC(~9<#o>Kq(V;agEx3m3F-2^-Y5E zb^EhFYy?$=U4bqil4NhW-EBEOJ4Trm+@&Iad$MNM`j$Mo=hcr}UYx1i?Gkzmmyb)I zy%!Z0i;!XcDWj3gU;O%v*LVK_(K7^bPOE3Kc)ep|YNz_}XBP(?$tvPNr_2iCn-H&BLLy<-S}Zb?L-&rV(L$@qOcp-tV#JfjzvlKTCE3o& z&rIyAYYu8Q7eSrCwt42bT;6}6Lyxr&n$Se*PAEeirI~Q`QDg9BfpjAvJWp`P4JtuS z!+FBw`e*dE@EI3W%mu-wgB-kPC-(W$$@tUKZyn^7$E{OPdsAbPTw*qdJuO)HBEEW0=qv2| zFIW{h^;7iwZ;CWLIqYrWI2h*j!w7FgNE!%_f0gP%~Amia~nma(&d{c)j8D zYn^w$F9`+>{JR@^JCXS?B*-O>g%x+@G5PhJ%3h5?_ECfx!q>n3T`5u0P99cWYUHbs zkNPb=vHN);=|)ayX?42(ij_KKHw`#A5l}S;F&EhuC4qHE_iDf-)u^?`gf;CmhM!7* zrn3LH45td`#e4KrV^hrd^5B?N=yP`)La0zbRyj&~yq>?|;F-?!(*tYg;DC}?MDzuP(6CtExHLN=c9@et z?NME9nQm&t>Xz-t4bEW5=~oV`Hy$-h#xFO-nGTjnxtgF$Uoo)X^GZ$GUk{jUW*Eag z%4m(LW}H8?&B~a*_*<6gn&Ha|()nwmuu3xz8C5e>Ost1X`9Wv@IN}xMXTy9o@#&xG z{CGFxWWUSD-Gaf~VkzY`4mHe7L2wI7TccbBtWQnkyO`bsjb21-#fNk)rqVtJH>T57 zDDn!o@7{4ZG}%p-WQR7fYhY$RVI&|FIVW9*dp*aQX{g60HzSwl)gJ01=B=52CYFrC zWmTzTdN-uL$OD=#HZJiIU z&Ol4~m@IfY_!VL{=JIw$)ez9rCAs+Y^E$$wRmXo2Gnq@J;&4^nBKs1yFS6Al(tewR zT)_P>L8)0NHI01c3TRdC)?=OIXy$NM4h+=JGDEaI7Z!q?(3B!7z$Q7DJj9;|Twi(S@$bA}vE@DSAUa3;mUGjq_{$fqVQz^wMNw-P6 zJmG3|OQqbB3>?Y=){%`7h~%zEwU*#o8q6*BzAPv%GXhP(NffA7NSbrWai%@C?3>FQAgPBnCvpj+($XeFz+0efy<*89Y*8-pQQJCk}OT{^Pb~EoQJYJ=5LQ-Q}~=o0G?TMHa3r@}|<9 z?|XmG?|G-ljV?);Q7t!g$_8P-gPT1d896OqW~N#genrQap$ctib%@h7Uc1ZSvgENR z5Xu6L$r^hTkakx1!vW>mL195Do{@Psbasa<^eN6!A7Q;EssuW%lucG+em?R9VY7ud6?lehOFHWl#LMw4U_pKM66uYZb|39P3#CPmP>4>h8h*z_I8-d z7$evV41DtA5eMH67}wV{ngyJ@qU2N8`xIHi!&KshlkyOR zbh{df8K9N}Sf_+tiRA4a=5R#5i5YfOBEd%7y&<=nEW;hT(xO%Guro7)+mfUg(AkO9 z>K>bwN)>kyj(vig4fep`&tAUfuYXt|2WzT98*iF3TikJWG-B#yn0kdI)H$*;{&qLv z%d*B!th0$$7*0jIdc{_~!!9#QN5c;?8i__}q-gsd&$-7tZ^>b|&2|UkY+qMSu@nP@ z2u0KPz3<;udqQY;Z4+7^s-+><1^n@vDygA3k96W1X-i`l<@i<1c}-!HWO%z87w9aq zTblc3xqZTN_4rf;&1zGYUe1ZU&(H<(P(;Td3`M5-mUGeMN_0`I3MaMMho*(RB3TG@ zn}@{fN0iUI_(Aa$EiM?72MU%cvRlkBiY|-5pk=2h&l4(NMp?8-;u~b+2+e6e)jJ|P zMO{2%DlfVJ_L};0o4|_bkbgI$cC!C>_E2jNIJ!v@C=fgJ1_#VnpAc1(^=yvcK49qF;N99!3Kb?Pt5Xqe ze2-}EpKvCE=OYz6;>;#8ayp5|at+F90V@&hutV*3&HK>9EG@dN64y{L*C`vdi%{Gk zlodz4mt49N^iZPNuyErwbtz=`P|-R430^v-U1qGCCc>Zp?zh!}5pyFQAV*s=zaZ7? zXyN(^FB0bxk|DFoTt;mRO%)hVWn%XeUFSKT)n_QUtYavn6@HnL%zgCJ0f)yn`OO6X zULgC*qP93i;S*6&!)-ep1o=~8zg%@NyA3Mg9%XJ*8e@WDh#~}}cFZUmFm^Z8P|%(= z@UK6h)g|Vcif$gj%;R3#@cFRd$NM&~ECIi3pc*Fio9UBZD0Q0{s*hxM(5f2i{04QQ zktQ+P=jZt2cj!8Zo`tBzDCq#(*>P)T)S`$J=WE90Hwf#3y4_)&d06`rl;EK!+b7gc zm4AZoZ)x?%Og<)<9p?!msaLfpB(HPcBX|%Hge|$z#}qb%W%=|s@t{L9joCc2C$T$+y&pO{D9Tnk}NSWGkNF>T|lGf#jN`rwUhp*kYe=Iqqo8yqt1hsPjQ6#CH!*=((dw4WRvxvoPF^#p7Ya9%TUwnVO=FH`?T<)v zHinIIv!*yd!e3tVSyAI3d>7$oU;jzf4sD8ti(%{RvY1V#AnoHI)56%AH2j?U@t%~a z^X}b@lc9+*hzP#1N$eC&owM;&s*%Ph3W!t(KTbI7mfZaip_!yMWXxh4vH)&?wE=S*{s5P9?)F~ zi20V4ea^aA(Y6DELZ{rxB+{7Yoi7O2S8R4?*tGzq$dPt+is3D@ZS83y(mFXJS}mEz zQ(ks!d|dfB%_hrTLam)5raIkZi+plUYgO?k{_u2XQA3;UX^Z3aj_oGH{wg6@Rn!(C z!XN#MpH!N8f$A>t9`6{Po!}V(J`(**gJDd%?6M7G4C@f5xaIw1!`CkknC24tbxvg7 z(O#c2IotB`V8dqejQ3Yt`W=Usyk;6^2u+#FfY$1e?eQhA?rU7OHTsVlKUxv_cusZD zWsn|_$X9q<80iv0Bcq?ynUfGk9Zs5${7tapRqFt|+ab7`P-+dzb;5nQ;-}UDi9g{% zEjY1k#G*;BDtHslXd6dtvs>csIYK;Va^>^$lOy_v9<%ERuaZf!dklWT<7R=<$QbT4 zii0Mf>+kq~u2tHON&CW}!5M#jGv&PXNDw4!LYb~Qc#0i;{ej&or6Iq-OjfwZO$IBM zB$Ajm0#0i^Bs*f_Nq7%S>H~w_R>iPv3_oJyd9)fml4eR)G>JEFIMtpp-QDoKe#nio zpO3njS(|Bix7RXZ_s$q??wOtlnA?PO8Pa|A0{@+d_Uq>aZ~uzQ7qMz5+~hadxkzj| z{7GBm?>;HCdp?@5pz1wmHr`-}8kOWyOzMP<2A_$a_#4;dsNdsQKjNb};Us|%NaVgk zH!p~b2&pTwN)s;fGuFwBW^Q8dMCOMP>?;(xz@1%jSk*}1E(uy4YNbS>2=oM*H}VqU zU;mGPR>`X&%k{(4&uwv9FuL}6I6Wr%5aOvD)TT`>A4DM!`sxJiD%&?6$T z&SZXv+IvZFvcRx6&e2yyE@tU-sP$s_h!;o&%-$^yFOz63VKN;jyVA0lK;Cg~hatRc-8%oZj6 zGY5Cr}5(Pt1+`ATw}?0R?z?A82hneGrr^E znateFSmruvtRU+qPCZ9jigaF9jK>jv(PF;7<+M{rtvSe>h`Tal*ss{kWNL=SI={kH ze!-~?i_JR(wa&Jl(7o&;nh9@(Ykp(=oJHXA&FYHRfAU*cOwm?vshWMZd%IpgAsGIg z?A!0Dk8;+#5@V>d{6p)XFID;@c?4PeYo1NsgYI$_9y90!gm#54rv&r8k7!H7sfZRO zhf&7v{E&(I$Y-|A!(|<-C@Atr#MfPnjl+EqVCXvTyDQFq^GlNNuMrP(#&<4puSEE7 ze)DguT~8%k&XLoYdZR>r{E|}sh+_1(QGI^#vPbndBAb8N;oHCcUpZ8tbMpF_+wmjg z)jQZl{JTHl)3S z!}DME`P+X9V{@ z(kV5z)q&CP zsN*VI%)693d4=9@Q`QQ&JfnZML{3B!vEtL%!!aT@rNO`XO_$js-Jg97UZ3RXY(QAq0gJk175v!c%$7i@?H(~Cm7o4DF|Qxr@ySee81t|v5E2xE!xzZ8h4>fJeN4t1vW*_yc02M9k88dC``DY z-0{ci8Ozsal);kukN0ejll)j$IS(U4hrJ%J#rv{Ov!|YdmN9*%*1O z5u|fQWs`xuFZ%CTtFP&o`)cps(|mQx{NajZ=FlS{(Ns36%3AdE4Fro<0}knUy&|dq|uaZS!W>Cczc)8uBLp|_$4ve^+@)zhdgy_r*;{f1iNvXlNl>fvi% z7(e4<|1CwFP<~Vxo}>i9a|Y!VD{;>CL7&FQ7-kjnuMVDCk>z=gzngI?ihNH8?KY!f zwXqMHRKkSn(ZJ2ts4r9Wt2(Q&Kpyyr*^GLnq1{-_`UBRh?@1aac6&$1{hCObQi&0q z3@FAwkQN7Yb`_y^jPT$8w|`O1!UH;f%0wHZMiB)zkrqLrv;<$(Jzh}Cx;~X4;x1c9< z`Mt8_b?V_-=a|(kcSS+&i;P4Ox?jNVZ)jOVM6Joy4{tDPJ#HUnnpqtg1RTF&e zgm!L`?tAu8$x$bvuJySa`=pwNXlYm#Xw$R{!bO|e^pR%!gz+{)mm=DS4#8|fW6&j&HcUV2h|vRsQAqsi zlU5V<*4H8$5E}Zt&*& zEr+JUaaZDMq9Xj)fAZ&*(ok7Fu4ueGgy|>BsYByc!74al<-KKOD+HAYUWn**3A!S+ zhDte!xY?#W8?*={nP4T**IlMkLZg{8e~dXjK4x8nJPS(hrzYm0g6{s1T_7&zi0%uD z#777{s4HwtmAX`-C@Es8;BH+Mp+T+RpbS<7d4y${q));ujgP??Lu()aPe8E0%3Zpn zJ;LuZ^-|tmFL>2&(6f)(*mI`u7g*LWaFb6wv!7PcAkhE-AOJ~3K~z&23%*<5@ue}M z3I}AP8U8*QSbyS+M&TcQW%4N2_go|m()qak+e=lN%qBNCB>Q5|rXr-YXq>{Asp zOeq^Wy3nVaEx2CC^wndM+M16KDMwn#pgG}6Z6OH~ie*tgru3tNv8|B>KEt-fy$e=N zW9fLX5*Y3Zq-LAYj8UTw{`@;6yGbD{DB<*eZUn+mg`P(KZbZPmcNa$9D|1 zQ+D|Tr`BSvZ%{75Y<3Y|Kl^R<#h+O$-ndVXR%sLyxdwG<%F3u{%5^^7?l>q6%)UT8 zXpmgp(mLv3iUK!}OWNuQWwEAxo>6{plVnHS*5B~!dX0aI8q})^sbru>ZQ^1{uX)VX z<`Q)=Be?j2rnkj8l$p63l;|~1`GA+`jA{#Rt04z0t4S1DKqSiO zd50k0U#`0JZ$gS*i6{x&#R@b+n)BcZw?}I~H4=j|;ovypp*TnVw8D2|g1*nlA7Xx8 z!@GT?Obet?;^1?QVl!enyJbJsi`5lvUuUOQ$Vo}4M>K4WyU3)i=Lp;O)0CmwOF)}4 z8+AdCz4!f^;gQX|PcffabuPsT!$F;vC$R{i*Y$bpX`BQKxnE;U%ukvDnc5=>7BFlP zg(gWpr52jpu1Z?nfKFPH$TABWY~>iKn$b><2(=1R37%rx;)@#kx6o~AjH{U4p02^x0#`dBC%=^CLv~{LGf;eIM@pl)>w6eJO7U3&VXB2 zM5$by(=#+Nr`U^Q2O_Ka7DblP4U2g3K-TP1B@*-Tmajf*;u}3uJ|TNYWch-+qce+a zgx~)5f2btIN7Flq$(-dRrlADnT@5KPiLw=`)&N@~`*?@g?x1^3#XuE`qL;0h zOKm#Vnt6VLxt*el4T5CHpi%IhJI7q9zz4!ZS` zl~zMrg4Ed)<{6901EJpGLTU3jk5OwC$#{wSONaZ3!ci0(L4U6#s(T(RjUA)<7~IJu!H zRaCW07H>(nA+NqV;x4{NxgH=KsVLzs%eYRnJD{n|nC*N-y+n^Hroj=iKgMaa$QmVP zq_E9B4n&RHbWPW4Jk>VRRf|G?htYbD<2zjQiL-hi_1;4G5C8Ljti;KbPm5a;XUK)q z=7AkrF482&^_Ixmh;}z*bys2NJJhs8-LTl@9--C5@>SN#Emfk^wo=9qBZg;JtoKUf z*yLRKj7R@1;?~CbLgD`X8sjXdBVVAFaGzgtp#LfJ@$X4viL*wJxj&((B0g(%o+`Sc zwxHYA@#YrW(#NUyDdQcFvmL$Dl5GjeN@M4l^sE9jg>EzEc2?oYF~O)sv&;!rIbkf& zHdBICjj|tsS*Itt*bDCoCP^|ALG7~0BTlmoN&p{f9@*YhD|XpPJNmuPsd*onDL$(! znNiQ67}?m1oMo{j5B6uR22xX_rKYT@1VD~IJgwSIc9&%+;wO)A>L{n zSPGBpn1h!p{>;N$g_KH6Y#y_AANYzU(F>lw9Kp^Ys>h5LCZV}wqf00$WE+9Bq-w{U^o6Ve2r_SP5pw3DG87n z$YxBE?bwP#I`IziBqH6au+M_?7@r26md~OnIPV=Z{ca4{Sk?;68F4uxlUJlcomNdE zdu*ZO5;byCG!~mBgJOi-+TdjSj(3~O_N4fI+}vD$ZauBmrpjQg($h6}tzM70u} zrA5|t2*rdV715HE-18AN9i=CsPxe;sK7qMF7M3Jy4QXgHf17dC$&pln=(vTsiShEi z%h;!^LJrGQK1{C3+u%Gx@k&8lk9btB80s%5-oK@M-X+SMCtT33^$>P8i}DIt5zq{a zFsyK#2qnmg3X9NqMerJilU=qbu{GFl5M=t#083Ej+3{DGMkzP zS4l_tx?VX(+Egh2`E|$<&sU+#`PchNpHk16bv;9vD+vGYkN&uF`YnQ4 zN~t|^C5-5mI+_`9caw8i7q|{QzIfdv5Iy7%0);B$>M=FD%_ItFq|Va~?&CD4Ezdbt zF8HVLme8GZ(H?SHS@ac`y4@$8uDKr+^p+V#uCiH!CHbhDhBauhja=4l#n1}T)BtVQ zWUe&mN(#45NYgjSVvnk;GYkZ_{+y%Z5lR+uxz#zVO0J|O(SC@Y?WLg+N)c1;Z5tb% z^|{8G(&p3U2gF_nBePIKo!Gv4lKF2^5oZ>$dj5+3;~fX50S~(xaowVIonntt9=177 zrjhR7>|Dg%&9GaiOy@V89&`~`D$CVJyu$+|sfK+$!`$D-1(P;S?y?6Qwf{u67jhT1 zl_5=bn9Y<`RMAvh1meD|wIGO6O1*|ID?DxsUg`tVnu7HZQJs{G*CD#36Awa;7ADt? z74k!XYPL9~%R&vw-2%(1KXvxYc8++d@Hk9KH&c$BHc_!JwM{AY7UH4BA`3a%xagfG zH}3;#CkfHCfhD!^_4mv(ojy&}M8Ns1g*)GohZFKWSFn7f(mUvt^CT{48zDg>A(c-V z-n&foC9U2$+f2nWAC3(y?ueb zOSlRsttLnKEE^)-dWUp&$9mo5xT_GF9-BzO4E8Y-bQ%Sw`ZMI>A9yq^&LWk0e_zh` zh=c$)F{#xum94i%dJLPV@rh3BuGnjfi@dVvW9S@*pp9T#3xu zf9Z#8T8~`Zob#~$$mqq_q}eUG=CWDs*ewMN#U^1RS=g;1q&I{@ z4Kv*lDHjOtH^jO_Qyr3}pAdfj%l}Yynm%Q+=I*e`nVTaQ1H5p{u$&XT?DOGr#>M#n z`N89M9FhLK; zB)Y~yZgIJLq}NVK?K+*unCl?p#YGKWb9kJ*p{X_)hb>Nw9alm|{xGLetD_t}LljN) zVu9=m%NMO3P%}nmol8gIBHcqH8{$mn%dN(x zu;JzN6RyViUe$`db!d!BM}D^y8f3mBU$h z#MNL+aZ@2S6V`4|JuH%9v`yE!5ro&6M-}^ zST?TdMCWw%kV#|{?tVlq4p7K3#U&3~h5g(i2{odRGDF75O@%Jcs5&=nKB`n!NbBq+ zcisl`M;UJv?Xh}{W`yvU|JDCeJ-mNI{fpePIC_umZwMq9nae`4Ys^6_Pyld=`lNdt@5Dw9F8rz{o2zA z=V9_lq5l-q@JTu%>KN=ZANjgMa=Ogb2~z0uQu{gYcW;s62GzFU?Da8j`3|dN@k1nH z&R4Wr0uRXw^~YagzZf&AN?IH~oiC4G_qh4LKJm*7o4-m7j+(zBc=Ih&$>C>TXRNj| zqQ7Fcmav2Z^F+c)a*FDRyEBdI_m}*x+v4)dWvixiI(typ<;1bLYG$lHUGwVX1&*l_ zK0fe1v1qh%cDo@*?MK$j8nGK;GVu%)Q*bOeY{NYDBrw$__M|Lcx--UF4x@Qjx+RmJ0y29+8G8Y^;9Mhk* zuwsettCWtM(Tr5Y+7YqzNU?3O&i;{~y!uOiEWTsq)lu(PyjFZ>*#R?Sg&m8mf)#_q zJ!g7O+g&1^A2FZ)6aF_f>L(qBJ%QWgk-QSP{uuM(s}sCvhf}PHHw`jNM9Ow3$|*Ht z$=a1T?5LPdhfm&^h1=rDzQo;*uv!7azy6c|R86nHqjPaiU;2S{aY$OLkUs|8*9*F4 zhj@ES+p%z4J`Zm_hV?GbE?)A(C!1|~|4E?z>!0%MVa%l`V2%X5Nk#K$fvxp;xV?XRbhV2+)W$OutKjecuqDo# zJUbL9`x&???v2mEQG=x$(rwGEgox+*FP?mk@%J<2p@G%1nXhD=;T7)n5MjR=tQ4tF zV^*JE@k;(3nRtum*6BtDv*HeDb6%6Ua&nSMfa85)Q+rO=(%CK_h;)gIhK9SXvlQ;| zydf9QBqYCuvyzD#8^-aRFGnZ%vs)Cs%Ma=`&C(+6{}kcj3Sky=_*t6|msh0rfacId zcz;Rr<%nvfaln?huPxU9$AaeIj~ET+tiSIezjBFJ6U<$mwNj%j#)xUe?&~2Z^9`Zt zu&)pF=QHLr3+K2botc!a4Z}gg)kejMHze&Aud_q`_s74ZQ3y}<*N0h3Rp0Q+{G4>Q zqW*b{kIN<9cAKdz5!@B@+V@z+DO#x@4Y%BW%sG*cP`w|iogead)gQ3K0WEEhwrO~; z6z<+E`TXT6SAY0GZFo$_o3M3tr02&7+aGW%pQ4P=)IQ`&o4tm8jAXS-PU8 zyk@Q6A5Uf$#ihlD+z)Wph`SoT&=6hm3h?V`?=bVL=#1 z44nbKIUu?E8%q0-{PiAn+ma7#YN5t*GDR@`iy}IEDeB5%|A ztjoJ_>6_r32H-<7dTyRi_Kff?b}ISs$ny5|L-ollOv&lDunik*a)hHaMZm%C7UP zR>8)s^LY0Il_gUbUefChm|T5_;-xr6O00{B!V!AomRV*qYUR{AHE!=i zw#gm6bsMRZ#~kMM8){a;kVoy>msNOGD}Ej0YHB93DE=Qio5 z2w%{!XLFS1-W}9ONY>PBiO>{Sm3>E7PW?T5P5fgJGNZ zKYT-LzuQI6cxC^b@7Hg!;+X#7Gu}TWoLUQ}LP%2?@$y#+fBm0l9G^NoY}d4`V@_lh z*W7y;x19KO(xK0tCvldZKtCdylqAO{#yj_^#dx>dQLl7l&7!wm5a}bL;3KUsUo(Ec zcmLv1hsBcYE8+^E2 zqaWvJp9*xNWGPy(JtC{$lLjueUY}Bsu=9i}Nf7QT{8x2cAtL`2;5#bv@Ic~z9h0>x4vHOrUldZlW{4T_JR;OueShB??D$&&jsiYGve!y%E$sY=GXTm{y#5(q# zR+*^t9d2Ra*((|=2jhz#<=iJqYY4K76xVpnH4x z&sg66J?iH@%=almvm{v$ksEi^Jc+1E*%&8m{5$k6#E%KbqY>lTHF0#tsJ~&WzrgW5 z8p2+B+kVo?)TECz8)v)=bHp0_tMZ694?i$9oAk?l?ylgGQQ2LLOeF}W9N8J0ex2aH zpxsPSF_`Z(YBinQdyiR;n6-Tl?sML^8uTa`*5_QWOk{V&)_q`j)*(qJ`{@)tbuY0H z8Smp$e}&m-Q8+7v-~8gMDpwqod`;bXPA$y%G275oE!IMYV^r)`KK5R?B($l57%AN$ zetCkl45^}=N#Jl|?a)FAPnTI&TkL}Y?m}i1xm3af>$pVe8LVB0L8nfbJkZ+5hjE5d zSCJPR#yf?>&-x_yOT^ka(H?(N6IN>%<#5PyzNeFyEX_7bRPubJ5UdRn?;SyMLi_oQ z>r0T#HmVXo-Spd*jOSZyD+@`8=yn~p9aI*YOhB0IW%;NB;>BhIk!g0PVz)l zFLo8_(HWjMrM34vss=MvBeqiHeUZ%6Y3_9H)EGB&`8;f}?gq#k58kpl(LAMR@nA4?6!h^`#{o)xxVtL+h-K} zqs)1UqAid%`M<)5Wf?#o}1Ke#uT*!=DP(oKV)+(VJ%JU z7XlyNdK`Y)LLaM)lM>UEQ1XnLve%cZv}<$1pdd7B=(&nXn>Q?({epjkvvUZnZlVTqA(8db{S!0{6DGHaC*k|T%3HG)!UE%z6M6mTy;^ax7 zzi}P%d4xAgsm&HoU}>f5^!AVK%@sK7R4ALuk2JS3p(^H*Vj90?e9jHI@>+U@sKcj&k!AFDlE**9`Sy&KrQwN z--ILQ1*zM`t>3V%9n%S8Hu^`JYnx$g;a4t3yUQe4QmHo97Zu?fA8%f8)~{13b=-wd znksZ08zIk`B@4v1h-yEhTCGT!VwDo|i~VAO1;Ol}>3E^u#F*$zTP{TyptUWWpu`&W zxlTod%NhI6Rrf+7cwc8*GpLnQrjspNcEPiQ996HF=6elM%x>b7D*=YoAl;*z`iShq z2U?vGD|1D;G_fp=TB$HeB#w_&9Y12!m-Wqzb}J=q z7~E|4>PQ1+Hb>HA{8(o2s*5V<%(4aLHl#=m>dg${FaG4Gm4}4cYO&raw8aI*YE9Aq zimV#bm+MbP*B>?$*x zr%%<7TeAJ0%Ov79Um>^mkgr467(UJU;(h(qbMTp9YbRiDhyxovi}x5ZiMOY9`rH;S zN4CZNADVZ*Et5PtqY{o5*=?neyr)1lhi%8aavjg^tFZxPKdPPyMW21_L+4KtM1 z;7RSV-56Z-4T9B-SR4~71`S1KVMDpu3+PkIO^Ui}JQ)}stONy{n!7>OP0Gr{RSs~} z)sy!40heb3jr*BPd(&pRTu~o6Z1;Kfq{BgN@0AZImno_(J#CLQM*9>ZqG<^1n>4}4 z7^N2z&VX};wkHtv3Yg^7j3&ORJ0qZz+G2rOIit2L;ae`U>LUDyfB3s>bDI%M3$|vskEIF4i1M<*@t=|_TP`21ZjOzV_Jp zF`3xKD9q_pTg-f$ZuXLo?hhOmUNLEXL*_Q9dpebD$*$33lZ@Hk$21QtRuA`#tSVp0 zI?~2tb*WK}W&SkOsP=Z)u1Ds|ycDfH^Ke`gC{Jvb>N6_M73yPvRe~&Yx!=~wqC3po zdLgAOwUq57rg@l<`X$zJk!rM{(L7}%+GxRw!IQ(m^9w4HMqob?i8?D%DsLT@^_Xt+ z59#@R$49!GEg?TDDx0Wv~x^6MfHJIQ3ub)QfidlHk<4k z>HLuLz~Oe9TNHLo#S)d8ixo&1Qj>QNd2i^6^VfgN_4*&Fe)5Xe8;^(4746eQ9=-{& zUydj*%KJy((P@YA!l5M;_vphM(4U^oDGwCpk;C=Vmex^|QkGKAQ&DXNdlewL6GF`- zE67Odl#btG+R~#CHsr zCRO2(r*MYSQ?S-4!&qeJzT@6&u9v18dKw z8S30`9KL$lVl$Z0t{iYH?dWf}%q@+0o*OS}$kG+H?J4P5!e%{yr9}9uP3YdxelSt9 zm(0)aIUH_y>y!wTC9RIe8!{T}DzY8$X%mFs{oSuKYfz;9ml^N>>zq!%h;;mG+{L%( zX?S*o`j2PKkKfmP)da(0U(IVfJ2tts;C%;Nob zS8P{fWT{2@d0xdVQ?osj_>xWhj;~*S zwa3h@9Wit$UI*fRotoZTX;^n!(_^rV6XU`Z;$8;lspAOb^?Yx%j(N(u>tzUDL z{LK9%qILWl-=1R$AILU+Zhe`w<{*U|o^>yoPTwG#HG*qnU(r}5As;3~!b+3Qfw>>J zFRXmV*W@y@ncMQ8mC9NPV>e+I_L1!&t3t}FMG?mm*hv#&#bP`YDfCweV>o}^;4TlK zIUAA>6RLWXZdc|Tdqg5O_tMkn$sv+yunV>%%QoBJ?zoEjrr)bu)HN^wNBI%5vDea zYDQ)4qZoBc_J)b1a$76%yX6+I-()>`+Uo&5f0jqr{$2Loo=`MG#t#}_{M$C0{~BQ( zt%-btI2PGfQcgDs*Lh|!6Hx622i-gT=?Pcj4PRBB@vZ%VPflL5ozA)63Dk0UmA|6? zs)4%6^LP@@`i`?NWhM&+*V$3@Pbf+X4~2x%;)<_Lr(f4m6gCho_&e=U;Ybb zzSfKzoC*<+)?us+DQZXTZocE??_Trs4?j>Yo6L3^Up5cl7U6mcX_>O=p`jB%V6@^;NNDR^cTgvkAB^R>=?q69< z-`=3aN7$-M`O?HsuTX|6b-#{x)JA-qQI2<%1)UGAgx$2rk>xXSMo1AH7Y`VCH&p2J zAV#SEjE36BNjwe@j<81#>$yw!Hvxm2GVU(LYIl(RA+@r>m1py+7&Cm_vO4JVsw^^? z+Ju!8l(!#foTdcoOCo!SU8oRxW13T!tZ+akN;J-5zWr{&*Uc8ft6#s)%BqHD)o8nG z7OfUhC?HHTY;!_6t+I+8TnEk~pJ}7UslDYXF_~vioa-w0u|(tLUr=2CNV&4%r$34u z9(P#XjSz(*wU;{MI~PP3H4*7{imX10XrIP3cN*_pb&sTbX3kO04~dr*X6{dX@$w7Y z`#C=+LmF}yySYUhX&B{wn=)YvP}-n2sgZhDp&g z_WqsZnZxBffkeu98Wymc0;{#lQSK13$J|t!$a)1mFZgHCJ{x)1{tJeKZ^*hu-Ysl; zr5^TjMJrGJv}&w&B z7sx~x>sb+DB%+Wzf@-vd9gguQHtsJe)P_{eHu`Lh_N>IaAM>8|8ZE7&*Q#7?uh=au zo;wM{C?yF*8oxTn)*sQXBWfo6kY^Oa8bW`?VeV632t1}Dx*2g;NST%kIHLh!UY983 zz1RwYu2L(__NV_~D&e;sTJ=jtckekaKId-o11H@x-p{L)X)Pps%&MAkKOWHRH^?FlrQ{Ot z$|#aXF}C*|6sgrE8yEKCCnXJuYXU7*XJX4_j~?Y#0V!QFKAfZZm-KOQrxKobMX0^z zII~&QSM>B({ImNbRY#-J6e;E1@y98KP-B@y7=;<4SY~n?@Y%@`Kkfz`?OaNgQ^xWV zd6k=HOL#)Usg$5UH+Z^>DTR4>qK%`(l-vUSMVUc$!hE-(+w+j8$AlLu&BcQ61B)Xk zV~`Wj%pJO*Ae9=Nwp!S;M{MVgk#xY3ED^YWX2rkih`fC=QHwr_ma;21Nj4$=OeE4K z92y4iHwLfGh&RhOG=KGyaK6G`<*Eah?!h_pABNOFt>b=Nab#3@JZurY`y=JzG4F;8 z{&l~?Ptp!e%&3@UtjOOpJ14j}VS&md#=0~KQ5m@n=L*fQm#=+1C&)pR4b!yL2AZWZJFyIw?v7@K{+9j&MAf|_wzM{hD^O@vU&(m z#T2!a;T1egyUK3hQLBrDhQq2_raR9&{t9O;iHE62)6$tQ@=Zs^m?~y5!5KbbnkC9o z8?|rq@t?1d%@VDWLLzM0n01tCl|pHSDrH1gK+V4-n9bM;0!eL+GbpmCMASu%ol`=V z-jTLGgPe?f>*Ab4G*Hls8P(jg9lgW9u_(1u#;(jWJ+E;TnHU?YGns%kMpBZrBrV>^BhITTJ1-zDiKO9@tRxZtd`R&yrRT#V8#ZE$EUEM>eWc0~XXGHn2B}pc z3Rc7$5FL-n!H#wo5ZV^P|MJ^UOc2MiYy8q+PVPk8tG1^Ed|(7 zh*y@0);5|B{%%P{ZBdj;WU`MJX+$-L?yO2A=(t?%XPdHeh;kw!IzCtFlHy|>LGke_ zQ!dpO4<9G!=T&M(k7T)EBx_VfpPHHQ!(Bo>FWo1Ph}C@jazG;z5t3U>g z*hlV~$vMla%W5#B)mIRKG^&&M_vqawtGgX$GavXTSYn?<(OD!TEK8!GCV0aPPqgSO z5?NH>Pu?wtSRwUn&Mz}QtgAExg$Rd2HpW+vAQXrr2eW3OdRwCLj?MEn>TXOWIwe+@ zn6}1!G^N;4k+v#PzM0vGMDd*3v)|!8z9ZVX^p48}@s1=0&Ah-YtE5|rK`^A4Yg0lC zUG=zCQW|27MY^GF)WDN)-8H`AQJ3nJ8V>8Bk17}}Wr@0`?Dd-7TrL%D4|Jv|?`anqewC#OGC3-#WZD`rOtx z#7_ZANhFLc*o|m5Tg>v4G6yjY(mh*UwLD7w6UNas!d=Q)?~q}5M>**+ji2yx=Juve zT$AX^E^9SI7|Y0)F`Ksm1x2FWFB6z1$~t6n_dvXJsdsg@cD^^?VfHWR_}46EYZ9?c zr)seH;L$sLhN{_QYK}+AF^VQ~p@--@$jX{tp~BV2DMHiW*p`_zB1-wT>2|>`uaMM5 ztWpzaaDy3HgjJ2w^EUpw5xJ99m)b0sBPzK+dzr8aLte=Z-e_ZL*$H*YU~A3^g)!s2 zRjD4}ROZxliAf}3q`Uq8*9`C09{)9X)6{wWF{i)^64_NjC z(kNt+Kd|Q7pFngD#Anj7>+Jo>eoUJ@oNR?!AODU%z|-Jy?M7*kFANV-58d?ZZIQ4@!q93htvkc06GYC8LwiNaH!`G(-+`vWp7RVu`98u+FA5ae3VMh=~uwz)(JuvBQS{jC&*9Nhy|5&uA^IJwyhz_eN3g0*MT*xiox1lkor1mE}1Srk}3|+ zXUdjZTE&YVsjCV>Dp5&vC@2iQkVf9cPePno9*zq4=CMRfaU+)#y@4C2OqNrEYMEjp zpcf`&Io+*z&bur^oDL{7DpU%&mcC3FMGTT1y|_k8TyaH~NKsx0xAr*wkt zeq+71mL zivJ4X-M8$71TD?D*LP@HgK~L6uXW7e;Tz=0WNGH;z$U7>r8?c=r1=&j0J}oFsS~7I zw)Toy)Zn6RvWzwy#U3BU9t|hLX3mLp#5l+u#6Qqbe}TO$5G=2V+ouHfhzm(4(`D|I z1*?I{i&DNxfIt(FdM2h&L3CHFwlZZa_vF;~4DQ5!&%I!ArW~@Kt1P5%sN|`ZwZgry z;KFP(%%l4yjg46%OP18o+>dAUn|*9~jFxNgsxlMTr;^J>b5@Ua z!NYb&pbNB{0*P2-JzXIe6Uu_ky3|0_4oK_)^{mXm2`TA1t8_y{D$uLwJWYHAF~Fb6 z6kZlE8e6=b!2O$$!=lV8SnmBlnYAU{_UTqM)|&tWgR;Iui8Y4qnpD`4ie1uKM(ue* zdOxH4{5f}h`eLXp)j!Yb%E z-V+5$z!smA`D?0m6_1aI%O+Wrk``K67jsIh4FgxBrI(5Qh~dVg;~Q*?3#`f|!r%Pj z@3W^g;CZu5@OH?uA<+?3oXS0R&_s21WCv9YTO-s|%tgqu9&wl$taod!mut$MDlaR2 zob?S`JujAzXw+4H-#_Jle_WEt2C{vNAz!i+C;ZlG@Mbr_mNkSoYighMc#|ynrPpU^ zP0?(Hhdo2Pigi$?x|;GNZz(>V6LnW~be|udB*--Mqk!_y5sklk&g{oquEY+n^qkRS zBGwkz^C4@gj-}S9Ej`R%^$12w(o`nVJ|L=1q%^@DnS5D0+LoW2~f%lAkQA6k6e=JBx^ z+Nw%;oU!}xK=ZgqP|sKlCzvapnKz?-++aRWu>uG+nNK=JrneiSe8%jqx%|99eR;u8 zIZZDrbC88x=_1O`qExW)x^0B@3N3CinCIQ_DbM68KO0r7$q*wDaLpR!T``Y}BmCQc z_3tt@HW;;6l;>Ae^#%{O2Igl9ul(1%fBJuz#3tG=64FV^FAJC4E^bjPXNdZg;3lJ_ zZ&@h?oVCQt5I8;Qa5eam*T=tP{Qe3xmttlRKlnstgY#OtpIJWaL~7M4>0*vwtg)Rh zID6&det!sO`AgEK(|OMK%L&hx8tTy@dc5Js+4sn4m)co|Fc1+$i!heh=5+|E$D+3S zv))%c=kamN*`>$CNonW@j5Dw#ITsNSCpN2DjGqm7-a6w+m?9}h^hPmndM1^0!%SV;*Q&uPQ!o3(s`oO?;;BtT}|RgF{ZklA|4iKmkegND?UyF%5p@l*&~j(vE&T8A_W4$$_!)2F5x;UyX&kS3w;M564TM3!uf8nuFmZ7Q3dL@j`=<~= zllYA}9qHo_87Dtf*gR6bzTqqs^I6=A8(yFKgVqi&*T2eDdX|tbd%7_3l{T^*Avq zOme=@$&z5#p_BPc=NiSsOD3!T12fJw6-}aR*#xeMu=SE zna{AVGmm97!>94)mZ?%EDCxX7-e3%$6CVDE8vUBlc)~2V@0Jz>*Am-TXBd+KL*J)g za9N;nUNCrACRA!6kK~!cFIj*5$W9YDUbj%PIq&iv`eB{jfB8W0`3be*h(c8(kbDxg z#Jna@nwi9sOZVxXD>d0OLC>Tv?=Ytbr*JWSqGZvQ3A(haInraLR+@&}Afh5Ff+&7?xT z-{hMgBQ$k@QmkPX4FdC)&7)5wcj#0MrlG`XO<*h>B9CrS^$Pav0UVcgBci8R23Vpf=7s}ieKpTg`8xeRMJ;EomeHB^y7-vBdm#SK^z@r;_bxR71w9MD&w^QY*4pKc}Yr6VBlSV)8YSG3G_D z%K!VH1msJb&u1n#;VoUE#IoNY-DQ;Q3Z6a$(_s0-9ml`uvAWVIpOf*t-|zi9YhzA2Eu!Wdo5-bd{#Q8f-m*DArS$!uDE&sn zA1a7>D8mrheT+CgQ5mmhT>kaH;rsW0Kp(VOsY5mg4kbE#F_Ca~Bd)?CVL|4kS|pz8 z1jRA6Nr4>#!Y_aKSD8_3Q!MScy8eJ+HHf`AZSk``&nMofNMe~xy`rg>c(+>763>vj zpRw`(Kg#PNwdOOv|HBPN;~8oN#Cw}*f6Kw^BH=d)J8e!m(vijutfM;RtvcC!k0?ViH6g;}36`Z4$8oFFJ` zw6K6P@rVjDe67GqT4U)iSRY={O~$l_O}2-5w|l`ZkPwO*FEV(uSd*?!sfa_?ztTv* zog+5n{lTG_7G29nb^D0rN4AAFPg#I8R;e{2JmC;0d`B~t_C|}vi_bBJZwPM>DLi*M z&I2>OWB&Ah!gd>DNYJ$YEN!xbN9vNrP?vFTmNaE(bQ&C0J4|$o<=Y|2uQaMR9);NC z-n(J?>;>&?O+9#IH~1P``i>JnWLh~Va;p^AbIi{^!wvqlkFN=)hBR0+yfiVdR+OsG znOQ?rvraZVNBH~S{~~MX&zUW3lI$bH_>9A@h;+Z?=~yEPGb(Dx!i}l4TV%I03W~-u zjHoplJgv5LE*eaq0xE__B@;XE>uB729E> zN(^$FLCqxI#zaPg^Vc)nZ$j2a4Moj|zbab2$@G4V*cwyuIu!K=N~_V#`bb1q_w{X3niKRMTS+@_iQCo&?u=brs52>SfITbA;?uWxaJuTOdSZvzfn8PZNe+D5eh=A6+V9`;a%(QHm(vZi#}#cb7CtygU45p^#_ z{qKH{^TYqmfpfsnc!Z}C>V=Ok9FeZ(+{s%i7k!F9tSJ?bne49EZ8cssHQpyNC4bGf zqu_Z87plo!oDoKAE}CuDwuB|?L}G|NUGEntg&am<`#AcBXGRBi>@(3LTGk29c8H-v zGIZJKha~Zm?(+)4n;V3)9fomC8pMo+HK(&Gu35ly=a^!hQ1L(wnU3Op+USd~&xl=> zr;iT^zy15a$~3J=w7KW3eaYtO3G9gNNfBjiv6f=2%_Bh}C0JFcwOztmiR@NGD3xd# zC5GW6X|YZrog&I5riqO<2?@x%G!+ux**|tnO~Q{|{9>Qt;|K220{v2(SlSWpHb_OE zcwmuro79eU!iN>%^p>4kM9cDIxk9T3h2tZJ4_74HEvjctx4^ za~3mnEnxRXqwwXQL$O53eg@|UQ~YN~Bp()ZtrkKp#hEP8%L>8HWuBkpMhDd`6I5q( zDli$DjEe^9?GU3?g8ivB=AJ`TaYxq|+4(tUP(xdf*c_HQo)z)RP)v2!`U-z75UfS2 zHJ{B~Mm_N9&uiS9J4)J)^;)4?JSU#~XT+qtZ!IRFf*PopoifX8gtitqIxchb=&+Sk zKG7?CEA8lhOR*wwzg+ODQN_#_+!-bpwHo*90^7xc&vKiY;-K6)$QM1b!7V@GcF;PE7PJSYqnpAXyZFP(pbz!}s)Nk_P>1WhJk@NHfyFKLQ zM&Q$K9ouU^ld}K-A1z5lK~zqObvKWq?4_&$G#|_0dh>u?qLVEDg~;d;`6h(UzK!Uh zvdeP=-UO@KBhmuQ-0^N#DO4Sl#NGd1l=cJBM+K=Ukx3~|F{G>Ncn>ndzyA;aL-us% zU|BAOxP!=+I8fMVTN*j+b9F|TxHQexp76RV=~Rjy%<{fPg`FIt|tKDlnI1{-KvUF8qqrFGaoJ3>||OMc|Y=)&SNy|3o?03`6y&?H9*Qr zoU}`<9|O`t$Y!iluxzU3Lz28cy2_aqM>NAHHdC9`X@g8IfF0sQW9m_eY&I$M!@bha zD0a~;m+5H5&XPIstK5#}ln+J5fr8~!DP%J;J;HVbo*zkk_Z08*oK5MR!1gJeRM{>h zgxF`joN(IE@GObetjKNPa!}}UmF9w^1W#U5i|V*eMrtLL1O=y1qM47uEO2tt@ovk= z-Eo9YqQ~s+{`?9a#d&wBK~omc+a)%u8Ee-?j%Ac;?oJo@%&72D3aNM@LH@<_Hw4=i zReUE$s^Tge%7(<+2S1bP9A)gDB$Sgf!NjN9ONp;$_&I!FRVPqVv{H@0 zmXTT>e(dej?s?*@Tdm`4Cg_U9DBU3Z_OE`I$$|-LOe!zXgacH61A@e~kkZvQNb5Qe z?vQ7N77rWH)@z)WK&yB`t(h>)nc=rCjnn+~l;Y0T7>b1*ia*bP|hEl09 z9)HB_$)w|O|AjEZJV21;XD36J%(r=Yu7Y&oljX<&e}MO7kr^?a*uzQdgz}h5tfHS) z`QhD)%dW;~?vsWpZL@)0nxcg@I%Mkq80a1}eIMyDm|0P4J{G&a^?{vX0^m zNHv9`U&eO=O6OhDn=7KkXI`(OZ$gBMMSH7qn~te=i%e&8w7jGy#(S!7UaRP`ruFz4 zllB8aK6lj>ih_zgil~)Bj81{!AfVTHL9lorJ@D}#C8|b@TRy@P*97r~Ea&~qB%;EY z&18erwK!I~`!Q5e(-~dcbPf&}=~G&3pR3i9nqQ*PsNpqg#P=Iket_9ZC<5Szt2oVAyf?9nM1AE=A-ccQIamHg(9gIVY_40<34q-!b*x5E|)aK zjB2k!;bVUE7BPDsA67dKECug_g)ZL{M+$y5#F%OLeGQ|S;5xY*8;)B7w>yo-LO}9u zKGqAg;uIANJ(&;}T8sudLfNP8ZRmU+@$jb&rN$)_=|tj%@VQ#kWnetVX-jVqLtVG;T2q zKj7BNh!cM=Ej4`^sqf%VVq8g~(<-ysCYX3^MhW&OCP!hBng6tp z*;TZd)q}+0VTIdV<)~z&T7V#`XnF7YNupJK;`(DqY)%PHgQn6#nJAd5$2vDlJbG9i zjcud0-|ySwCX^o7tcsYri=>02lySxanzlpE9Q;_|Ts`4xJLBRY*z5F0t2SPIMK3W) zm{EPzV)=f;VsXJU#U{{qWCep|l(0qNaK1%8O{q%Hc>8`y)|ewlxy{%?_>2GWAG3Zw zhx4Y)FsRpStUj#i9`0ECTegYBp;^Nbp;ue;X8k#qcaP(Kq*;7UIdk!}l*hpwRea6q z(U3tttbTx_hLX=3c(fBpeF}9Od0Ak$6;K2VwY9->+8Bn-k*>2?M>I48x1cduj!6ZZ z7c_ZWno=4VB;CAyS7be2@=2@3F4I^nZDgrVS`CpsmrA9?X1c?$GzNaiE|^eps$^Ff`rjl zv1c*Q8eJxX2}$8|kmfWS8y@aHQgJ@vqjyd9JWoy)m`^`YbmD#BKrWUU4AyinIz;M} zbO@H?;3_7&)Znz|!l1!I^_VY${jy02SvP^g3kl>qRuYXn2#4UD=iQ`l3E9E_ARBe7pM;t z9ws`crx$pUhrRp}HEZx`tIQ7tkzbY~K8$T1M;k7bE@DIH=kXtDThB;zkFr)Ka&0=k z$hD;J?~C`EL`#dX%3an!kC_GceD>muNZfG!q+$hYd`m<4*Ps8}EI89Bxe*5^*L**G zO(Z=cKCL-;{yC3sMj^B@%MsIj_c`41W!dDXt;6{);<0F=H$s$c9a*ut)|d3$Ufv&M z5)L^m7Wl@gU=?>NEc?;p}3@w=p(c+f!3 z{zPr@OTL-@OuxLtmwOx@JmZZkX8`1lG&GJKm zu%PipdBYFMjLCR%-(f(zN*bBLTKSTYxg6>!dpMCW|WnpVg zZIJ9Q-Ur7v>a5D6>=8aGh{Ze?BXHO_U=i5dW6)ItOHK|(&77`G+t>9z7Ka8U6H0XLMhgnVn}7TkIts;HW}ePi4qTo{dDbi=i4w6O@MN{=MlqT1F0^V*QZ=U-FZ`Yfk! z2|W?HDlxN5B*i)UL(KNmLq4Ac+__82M=6DMhZ{dde}r96V7Cd-^^ji|zu>;^5f(lY zz0(j*e)BqeRr1jaFZZM`agnfbRC<(oQdYPWu!12{;U%)>;*M4<1e<>S0(&zDKbK23 zSjGy)#e%r5po;}WVS)Aa1?wA|_#Z!T`0ShyLH;>fA^&xq>i;?8DpPoQ(qb}NFxh#0 zaR^WEW%_?{%6fc5ks~I~ikULwtoa3#Z-3zPqb9e7GD=UN@iE}h+EN+{ByNCxTBq%_ zd2@S1$t?4_WAk6HMGobdB)I&!`%ejptkVs<{#*E+oY zX@M&QeD!&i$J-21&>6C$DyVc+a}Q5&Vi&Db-}BjPr5ona358}IbucF=uUKt#1T!HE zCCZ^k=lqz*4^ON@hg!XdR8v?EZGuSU^VTWf-2Ny2qW3pEEq~${$94YGdynkzWGdf= zWQxdIo>T2u@MA=p+uu}~AitMZQ}px&oB2C9G6{U0>N4V^XrsJM$?{-)uf)rw%QU#c zDOohrjPY!PX7o7dDy(j7lD3PkX#BXbd7i)Wiw2Ew%hZ=B92;bRT+zD7xV`o0_YxNO zMO-;y+iN2HkN@!>vQ@ZYGY|NrXt18d%#Kx#BY{6Yj`_{W87o=9RLYD#+;Mh%zu@MBmo4%zXw)wqz!fiaGR?oP3zo1#_5gGd4m6LWKSPaG- zULF$M=1_rLvwX$>U(%WOI*umh^^g)bkrcJB_v)@y)m2^HJx;fg%)~~57zq%-2w)%x z@+ChrAMzyu48(~Cp3F>l*IswO+80u!NQ$IL8dUy)K!FlpKF@QG^E~4EOkqW?ongf0=fJO<3eJ`uTUhW59!xLZmHXbn5rlS^q)c^jhFKbE(gBLQ$e)nA{w8 zT$mz3RU>vPH1mube@R0)XFsTMwe^@sCHzoED%P&0HNtOx_fy`gh%AEi2)cjy_IIqm z&M^KmB3{e5uE2g?LLd3`n+Z>wYsz9kNuR?;WN#mkTLr05rdgcGB8QigJ?o!#1a}E} z;ImCyXq^+J{5=Q;t#D5i%DASFP-rd=A>p%5xes1(QI#&rR6?kTSRIctMT^?zu*#?p zO}6iBdUb_yw!>>jXa|FatRk;s{B%NOTq7znaxM@^d(ICM_v5crtsjm{$?{)HgbNq7 z*rk*+oK=NnwPM)+p56Wfn{mpnoAIJ{fj1pfR;44*pj?y5mkDRXh)Bp;-B;tFHE`9d<$ z&|;Bo16oU&SPaOmbFB3gC7v^GL0@a}adE@Y_=%1=;}5q2WD)&KNYrb*<(Rr(TsxDe z#hPY4BFRjy44>(y#6zkuNVXhW0h01pXwzpxrLdp{Oq61EnDH{+Fw5JdV;lcMW}q8* zvps{V#;T;TF3LHh9(J^&6s(R~LNO>3Bb!RAh5g*8Ufa^v9afRfWIv^yr*s-MCUu?a z48qoue9^>d?a5{WSGms8k`ON6{B>SBm3T#nw=d!NB30eOPBN-VM5FJLY|crA4O~Q2 zA20YUJRw;Im7T{RtFQ?|(z=4UFQTOwQR^Jz#8@g&dPQ$>MV?t~ynvDjeJMK9+YI9y z+>eihJ)MWeGw0HPu3l#Mz2+JI`oUL3C& z{Ltii`NaM{M!C>nrxDFdSU)C&yO47~%BfrDPy zJZ1>OfOed6vvXN_0l)e71^z>cO7{`ZdO^01Fm7u2RpjQt2MEl0vD}d zc6azrKyBY7uGq+RXjfDgVId4K$k%r`oicY%B`(zfU&+X`68rqXNNb?U4W6Sps-d&k zgb4rb?|z#{Yn7llKusR;nmy$CDRH!*btU6Gc?^>ltL6eHa;a8jf?!CkaN(3z5E&#+ z#8YN)b|oTyIiOk@vv^OdvS;rM*@jEZPR=ea|9`O4XwBBwXo!2p<&>^{LciAKSNon$ zX-Bl&Ggo|C;uX3iV0$<8TXo#FO8CnhLF-U9bfk3&xtZWdA$25(wrrD#>Wen3n+Q42 z@x&c{^8$N$!vP7i+vCggBmeSp$ZQc~6m+v{gjG4PTg8-jTcitvN^n9beMa<4Y($-4 z_sF$gJi4r?=|yR|iW&!4QXBbnjr%2Gbx285nQC7_s5DRy@7R4!(Fa#-4;f}w#xnY~xw;bF*A?l~7uEt)gQD5CLD;IKDg=95Hsn$pfi`s0B zWRzHMOsp4c)?<~Es>No0peKtY!x{ItRjykyuD8TdHPp;t9&Bh11@u^F8jJMDJM60$ zv_kuc@Ckzh1u(DFE#L(jk+x?T7<`&9$j(cA1A&(zMK)RIg1zlwC_bw|rV&T1oQ$N}$E?_tE#YVjkRpj( zDxBd7?ViPWUqqk{(rkfJx+D?Sh_;7jlsHskqJ10^j`dPTEqa~()8l7SbdQQ^;5rVvDI-mD zObgaMi+nnv{-VSDmpiC$sKq(k!uj5_ zj%H&+N;p_QkcWRlh#DA4g)m>>sX6k>CX#!{L0@kAIFl)()8DYRC!|77Q!-fQ0VEQp zB2y7#YT|-tERy>T!s`m9aS5lmq5sQo|5HA*9FlsA;f>FGb;HTkOS1PrBjpA{OC*hD zBDGDd31pKAP19tyw5j_Ab)rOSiN|L(wPvvMBkYGQx}`Iy4-w-DQuzgoRzfs>q+u2? zcJnx3S}tVzwE{Bb;zS$Xjt2blX>ttkm8OO%zF;wXV078$@z;-(>rG-b64l4l17@ER zdYuC4*JLMU$mxo8V?_IQ&DQ9mwRae^5}}x4@BAa{G0Ji#cTY#F!}K80aEjCDp5*Ks zOm{|r#@gmaD9NQsKR zh!QbUPq@9mrP~=0h$&e$CH6ApC?-BNIp0al3W=7L5ImdsF9+z)Ht|JD^LC2cFxc1$ zasf=*+q8QE_f;5;ecrh$7w1L0t3ncmq{5tZtI=$Ck8z}W*<$?Vj|^H@$8;#Iw0MdR z)QhcCQewQ_Fl^Kymyr$;TB*Uo?6BHA&@@6KXNNX=iMRI%=5r*uL?h4$g~FRT<@5N! zzyFVK2`5Vy4jkfy-D1J0YB4XKr3H(qs0=m|4v!AKp-k+Qv6?lOcYD(Gi8q6{IAfcz zkt0R|HFt_rDv}5-Enugin!Co-pl&oHu7gR!j!@jDs zPg69rjyi+k){M8Doe&bR1WncGC>>MUb_>k*t9^bQWIP)FICNOgm(5wW;=Pu9Ic z-H1q9dK^ea%{|Tvx)&z9L&oZp$oX5H{Aq#I9N^d=Ni>}v=h(VKy%49XD%+sr=qxhY9&S%UIIp;|Wu_h8MXGK`Vp*tW^qa*FEFJuJC zl0_kh@1EjpMdCcBp42%+kEDe}K=G)B3bpzPvcDk}BqqWgfz?IdG#FK9cr-~re8DJM zOWp?gEuFf6=vR1J9jMlaTv!`siG{nE<5${f!5wM$8&E1oCyp?H+Ixd>KO?e4 z)IUy$XwOSM;3*cI&|T&c>Gv7FmLlPl#u29`_3d-?!O*e1>a_v)vVT5`+B# zPm}1BE^wDq%zlNH>vE#i@RWo=ZPIb8OvM6tu%zb=NHrB57q{QV`~4S`k%%2sXl2lB z`#ktvbQU_K5F;I(lD6=+JLqKd* znf&^I(-)~r5vw=q~1I59L6B#q|2Q8H#(C)jHz@R z7)p(*(k3wP$XtUUNHDDh>zgK~s!&p9_?;%qEk>PUYVR_&`^3f!-ziayYXuLYy+Fk< zi2MbW;T2J|MmRO7eA&>rl9`8P*6Rhru8CExQY~u;fA?SibH2TwbExY$w_EBRk@H%{ ze68V^%A5on>`@h84;daRe0Z`+*BYKY=cL!BnKyabPRZ>eZd}vszQrv~sBR>jFyKw| zn*Z&7rfr^5dY%%VRM5kiMMdVd-{f(%B5F-&8<$wSl=wu#`FO*PDDq8lvTMEKzOn(_A?#K*!n8RE+k*A z1B#~cJg+lUd;+h6_FD<>^OE1a8t^}VA7NHfLcK)3S!15&oX*Y&UYR8C3uIu8ueFeY zn6q;S1dQoh8K2`l>Rce-Zjl=zok+x&BGleX>TZeq&>?6#T+B~-uoCQO!u5%aG%;Bo z)}V*1WQFhIS3E@?nq{H79;Q$^;%h=@NnEWlFjJC(Uv7ka?_Be_@(X*xr_+B!u>YCe zL!DYxr0nEyWstWsrq3B_KVkjnkn3I@$zQYlzK-yJJk+ZlrMo_fn_`$94*e%qUP@2y zqa`1BwyVqonciQVAU#ZvZ1eEqg2%uA%JqwH(fvPjXbg!Xm0IBy{||rrH~AqvgYwTu zH%zuMFh^aC{e*Y>n9Gw(YCqe|>OSJGir?`tb_wBK3F9|Kk=CFQcsS=3(#?eWXo&gj z@xNA|IqP*P&0^w2L#iiCKJADG1G?D+^Yk38Ahx+O+e-^I3=wjXNSd3Tf0)8O6{Q1=m?6O#{u&V{WJ*Ed+5F^+e^?z4$Gl2F_CxW6y* z_7z(96g5$BQ=7x0M?>}b_N_`>-mv-`jX(^KQw6itpj?nZrvJpDRzaD)IA-=| zdPMU0nUEgVg~&d6MH2qP_qoN+RC!17FXgiLme`FFLY}f+`PAxfnOYJ*xxXN*f5qJJ zIT(LJcx>?f**E<6e|S%?^9kWi2j%Mzn4PZ}N#W}}VKRFl+of!l3r>fpG)@eD{qv4d zm{4klj7mT9kHYN{@v?X<^TrT)zgf^zhTPXmTm)MdNyK;c28&L5oNWIyvmd37Phbh8 P00000NkvXXu0mjfg;+RV literal 0 HcmV?d00001 diff --git a/data/packs/Alien Ocean/pack.json b/data/packs/Alien Ocean/pack.json new file mode 100644 index 0000000..aa78198 --- /dev/null +++ b/data/packs/Alien Ocean/pack.json @@ -0,0 +1,31 @@ +{ + "author": "NLIBS", + "name": "Alien Ocean", + "version": "1.0.0", + "description": "A stylized alien ocean inspired by Very fast procedural ocean by afl_ext Can you spot the other planet in the sky?", + "license": "CC BY-NC-SA 3.0", + "engine": "shadertoy", + "id": "wldBRf", + "tags": [ + "reflection", + "raymarching", + "distance", + "neon" + ], + + "source": "./shaders/Image.frag.qsb", + "speed": 1, + + "bufferA": + { + "source": "./shaders/Buffer A.frag.qsb" + }, + + "channel0": "{bufferA}", + + "channel1": + { + "type": 0, + "source": "./images/iChannel1.png" + } +} \ No newline at end of file diff --git a/data/packs/Alien Ocean/shaders/Buffer A.frag.qsb b/data/packs/Alien Ocean/shaders/Buffer A.frag.qsb new file mode 100644 index 0000000000000000000000000000000000000000..df573dbc454ebfa9d72121990d38f938af73cbe7 GIT binary patch literal 6842 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 literal 0 HcmV?d00001 diff --git a/data/packs/Alien Ocean/shaders/Image.frag.qsb b/data/packs/Alien Ocean/shaders/Image.frag.qsb new file mode 100644 index 0000000000000000000000000000000000000000..3d354e53321dbf4e3db728ea1a5084a7616a3ceb GIT binary patch literal 11395 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 literal 0 HcmV?d00001 diff --git a/data/packs/Blueprint/pack.json b/data/packs/Blueprint/pack.json index 985f5d8..63b8601 100644 --- a/data/packs/Blueprint/pack.json +++ b/data/packs/Blueprint/pack.json @@ -21,7 +21,7 @@ { "type": 2, "source": "./shaders/Buffer A.frag.qsb", - "frameBufferChannel": 1, + "frame_buffer_channel": 1, "channel0": { diff --git a/data/packs/Kaleidoscopic Warp Tunnel /pack.json b/data/packs/Kaleidoscopic Warp Tunnel /pack.json new file mode 100644 index 0000000..54f57e7 --- /dev/null +++ b/data/packs/Kaleidoscopic Warp Tunnel /pack.json @@ -0,0 +1,28 @@ +{ + "author": "Hyeve", + "name": "Kaleidoscopic Warp Tunnel", + "version": "1.0.0", + "description": "", + "license": "", + "engine": "shadertoy", + "id": "sddBzl", + "tags": [ + "3d", + "raymarching", + "transparency", + "glass", + "reflections", + "crystal" + ], + + "source": "./shaders/Image.frag.qsb", + "speed": 0.5, + + "bufferA": + { + "source": "./shaders/Buffer A.frag.qsb", + "frame_buffer_channel": 0 + }, + + "channel0":"{bufferA}" +} \ No newline at end of file diff --git a/data/packs/Kaleidoscopic Warp Tunnel /shaders/Buffer A.frag.qsb b/data/packs/Kaleidoscopic Warp Tunnel /shaders/Buffer A.frag.qsb new file mode 100644 index 0000000000000000000000000000000000000000..75e0f09d5d92d6692eb80313d08a2ab68c10cfad GIT binary patch literal 12961 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 XNPj>p?x%?R1ku=h&ENkAqvQj$S|x>D literal 0 HcmV?d00001 diff --git a/data/packs/Kaleidoscopic Warp Tunnel /shaders/Image.frag.qsb b/data/packs/Kaleidoscopic Warp Tunnel /shaders/Image.frag.qsb new file mode 100644 index 0000000000000000000000000000000000000000..599c5af723cec8baa7dbf7657c8fe60d4ec5f778 GIT binary patch literal 2187 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 NW#NaOe**{@1|(TVPWu1= literal 0 HcmV?d00001 diff --git a/data/packs/Lucid Dreams/images/iChannel2.png b/data/packs/Lucid Dreams/images/iChannel2.png new file mode 100644 index 0000000000000000000000000000000000000000..87fd78c6219dc057951386b508410c81c7c0b03e GIT binary patch literal 26156 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 z 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 P00000NkvXXu0mjfj^=|9 literal 0 HcmV?d00001 diff --git a/data/packs/Lucid Dreams/pack.json b/data/packs/Lucid Dreams/pack.json new file mode 100644 index 0000000..62e2df5 --- /dev/null +++ b/data/packs/Lucid Dreams/pack.json @@ -0,0 +1,36 @@ +{ + "author": "DigitalArtifex", + "name": "Lucid Dreams", + "version": "1.0.0", + "description": "A mix of xx by XX and Watercolor Filter by mds2", + "license": "", + "engine": "shadertoy", + "id": "ms3Gzl", + "tags": [ + "reactive", + "galaxy", + "fractal" + ], + + "source": "./shaders/Image.frag.qsb", + "speed": 1, + + "bufferA": + { + "source": "./shaders/Buffer A.frag.qsb", + "frame_buffer_channel": 0, + + "channel1": + { + "type": 2, + "source":"./shaders/Colorful_Lens.frag.qsb" + }, + "channel2": + { + "type": 0, + "source": "./images/iChannel2.png" + } + }, + + "channel0":"{bufferA}" +} \ No newline at end of file diff --git a/data/packs/Lucid Dreams/shaders/Buffer A.frag.qsb b/data/packs/Lucid Dreams/shaders/Buffer A.frag.qsb new file mode 100644 index 0000000000000000000000000000000000000000..29a5920335a79ae81e101bd623c8ca3b3edd819b GIT binary patch literal 3080 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 WZ)^u6zqi%DYwY-y<$nRrH%Flg1{Jjc literal 0 HcmV?d00001 diff --git a/data/packs/Lucid Dreams/shaders/Colorful_Lens.frag.qsb b/data/packs/Lucid Dreams/shaders/Colorful_Lens.frag.qsb new file mode 100644 index 0000000000000000000000000000000000000000..e260a3593c084aefadfc34ce2cb3dcaad145096d GIT binary patch literal 4787 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 literal 0 HcmV?d00001 diff --git a/data/packs/Multiscale MIP Fluid/shaders/Buffer A.frag.qsb b/data/packs/Multiscale MIP Fluid/shaders/Buffer A.frag.qsb deleted file mode 100644 index 019c5e3122c2ac1522bcf58ec82ea2d3433c6929..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10152 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 W84sMiYkm4}yqkKR&;J2C)LHAS^^4K~ diff --git a/data/packs/Multiscale MIP Fluid/shaders/Buffer B.frag.qsb b/data/packs/Multiscale MIP Fluid/shaders/Buffer B.frag.qsb deleted file mode 100644 index 5a49e586dbbe04defecf4e9c4ce2ce65818e3cb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7785 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 diff --git a/data/packs/Multiscale MIP Fluid/shaders/Buffer C.frag.qsb b/data/packs/Multiscale MIP Fluid/shaders/Buffer C.frag.qsb deleted file mode 100644 index 4796e3326ae08358c2287193f5f08adef4cc3c69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7035 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 NB-^j~{1bc$VlKaF44wc0 diff --git a/data/packs/Multiscale MIP Fluid/shaders/Image.frag.qsb b/data/packs/Multiscale MIP Fluid/shaders/Image.frag.qsb deleted file mode 100644 index 4f575259c65fd75c6c5f6458cc42ab84384db76a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9430 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 c#j5j|OXK=pqYvm1*BHq)$ diff --git a/data/packs/Neon Ball Pit/pack.json b/data/packs/Neon Ball Pit/pack.json new file mode 100644 index 0000000..0d9656b --- /dev/null +++ b/data/packs/Neon Ball Pit/pack.json @@ -0,0 +1,36 @@ +{ + "author": "loicvdb", + "name": "Neon Ball Pit", + "version": "1.0.0", + "description": "Raytracing in a grid to instantiate objects, cheap enough to run multisampling", + "license": "", + "engine": "shadertoy", + "id": "WlVcWK", + "tags": [ + "reflection", + "dof", + "bloom", + "aa", + "fresnel", + "neon", + "multisampling", + "aces", + "fsaa" + ], + + "source": "./shaders/Image.frag.qsb", + "speed": 1.0, + + "bufferA": + { + "source": "./shaders/Buffer A.frag.qsb" + }, + + "bufferB": + { + "source": "./shaders/Buffer B.frag.qsb", + "channel0": "{bufferA}" + }, + + "channel0":"{bufferB}" +} \ No newline at end of file diff --git a/data/packs/Neon Ball Pit/shaders/Buffer A.frag.qsb b/data/packs/Neon Ball Pit/shaders/Buffer A.frag.qsb new file mode 100644 index 0000000000000000000000000000000000000000..e51b8be83a1682aa31dcf24a8fa1ae76c5d8b115 GIT binary patch literal 6964 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 Gr76UAx@D~Z literal 0 HcmV?d00001 diff --git a/data/packs/Neon Ball Pit/shaders/Buffer B.frag.qsb b/data/packs/Neon Ball Pit/shaders/Buffer B.frag.qsb new file mode 100644 index 0000000000000000000000000000000000000000..bc5a27de9cb760cee42a56a2b9a68c070ad79200 GIT binary patch literal 3349 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 literal 0 HcmV?d00001 diff --git a/data/packs/Neon Ball Pit/shaders/Image.frag.qsb b/data/packs/Neon Ball Pit/shaders/Image.frag.qsb new file mode 100644 index 0000000000000000000000000000000000000000..132d0d4fd59211d43f68b733de719f4140ecf534 GIT binary patch literal 4135 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 literal 0 HcmV?d00001 diff --git a/data/packs/Neon World/images/iChannel1.png b/data/packs/Neon World/images/iChannel1.png new file mode 100644 index 0000000000000000000000000000000000000000..04c0e1ef502cc401ad6f06994306e103a63ff562 GIT binary patch literal 48250 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 O0000&*e^O-yQuSKD)QolhZ2}E5~4|NZLx=8&7 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 literal 0 HcmV?d00001 diff --git a/data/packs/Neon World/shaders/Image.frag.qsb b/data/packs/Neon World/shaders/Image.frag.qsb new file mode 100644 index 0000000000000000000000000000000000000000..bec15b1204714e87b550deda067a495039652671 GIT binary patch literal 3362 zcmV+-4c+np04#WToXr|(cN^99d5aSz4G{KyvJghZ5i=vn3yu>Ln~>0?4z>x4NyS(m z*#nYB8I2q}G$laO(w40hN};7;`6K-aeCt>GFZ!j2-uvEt(w))BG3UTJot%ku_wBv= zuHTUmVwVtN5Z*p`?-7?oBuZjYcw$4$hyebDVntX$>xWl-Pmf4>P{BS?0RdO6O5v&$ zSL$ynxr;mk2Ih>JO@T1Q0{}DLhL4vX~x}_yn{sML<5A%AQFj9 zGCHljOFkK3TZFd;nNX~=y;$#Hth4Y|LBC5vr?(P1B~yiB^D-K3>1;2dyFh3`iZsAV zQtW&$u{|+cLhOZiajU>*+j^1Z6~U63)O!v}+!D<;bE6kC`aTbAO}Q>wpx=jYb)XEu zdrheFc0Kn1+l*KPhwAVTlN+zfhe8#xFD;%!UBbOR_;xEr`a#0JE~U6TOj_D~X=2?X zHWTUJo`}Ol2DT@XXCggg`XP^2veH5A{c@oH;4lWh8#eAYguM--!c^>rZH=E#pItbc zYep-%LeY{^6avz25yMh3zBSj!f{5GUy&-TZ4M_Yj>VR*Ee~4@#d{AKHP)iQsLos+j zJR($nPXp}{k{gonP#Yd5evUgxpBmRkxM_y#C)_N<4G``$!wnMdEW-^E?mWZoAlxFu z4HNDahTBQF2E*+l+%<;F5bi^U+fBG{DPNDm=YEz?gby(I6w&(_%;~E{?`JTl-$>N! zE8-tuFz5f8=z|Q_^xMHozoZXHdHjACe8apM@ZJsl!<5HCi5rx;8m1TNyNKRT^bFB< zNxefdKmC;B4DsAbGRQMY@NI-c`aa5!rtcGK{UYv8fbSsx@Hs;8odl!&T|ys#ijJT6 zO6s)}n*Tnb59mShF!?-4`VG?GM=|avT?5SC0pfpv?U@4vAEKNekhR(?*U7`glY9-9 zPn1DjhbWH2l)FbL4+uX>xFh7JNqIv4EYbE8Tp+zX592Zqr%!76Cs^$!={x72R%tzP zFIbr&TCyc;_B=pY{Be0e*&gaRe z3ykLljOgE2PH6ZgrSq7EmzBzC?Zaxq#;X##HlyJ{!p4)j)>l~05xy!qYXSNH0Pp9Y zz1X(@u7vMBuHlcQzVF)fk0tyi#564H^9kYjt7(6wobVTO`w#MAm~xBo4Z`U-zoIxb z{58R&kV}k5A3iAaAHWO|FYeV(nQnwXV=(UH&k24Kq;S98Ez};xeKl1W$msn8UvdHU51@IhmrK`32#$zAqT!m@NOJlU7Nk+GxpCh;KLg1q3@XgpHa2nEsB>_hX z_&UKlPmhydx<*z?jcmf}8aafsS&iPI8s$l+L%GTk4)tSvqZBh=Ph*6?PU~rcaN{J0 zJ?3p3g z|DOk&n8!23bDHE&5>CtiJRyIUNQ;@zSl%&J=R3`daM&(``;j3!1Q0Dnl)J6Lb7p*)vZash7?DIaJnD0C|`PCtrN_9 z`DMauo(6X({F_4cE$-`E zgxB(K6OO-FZ>0T(>YbxJTqAzWQ$%!~r{4rEp z(LW(wdx)mbD0l|x?@9pru*CEXeSdJ>3!8pWH}ZKalW9g_s~j22txD$gi~�jS9x4 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 AH~;_u literal 0 HcmV?d00001 diff --git a/data/packs/Simulated Swampland/shaders/Image.frag.qsb b/data/packs/Simulated Swampland/shaders/Image.frag.qsb new file mode 100644 index 0000000000000000000000000000000000000000..599c5af723cec8baa7dbf7657c8fe60d4ec5f778 GIT binary patch literal 2187 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 NW#NaOe**{@1|(TVPWu1= literal 0 HcmV?d00001 diff --git a/data/packs/Voxel Land 2/pack.json b/data/packs/Voxel Land 2/pack.json new file mode 100644 index 0000000..5a665a0 --- /dev/null +++ b/data/packs/Voxel Land 2/pack.json @@ -0,0 +1,21 @@ +{ + "author": "Nrx", + "name": "Voxel Land 2", + "version": "1.0.0", + "description": "Rework of Voxel land to be faster on mobile devices (no reflection) and propose different colors...", + "license": "CC BY-NC-SA 3.0", + "engine": "shadertoy", + "id": "XlfGR4", + "tags": [ + "reactive", + "voxels" + ], + + "source": "./shaders/Image.frag.qsb", + "speed": 0.5, + + "channel0": + { + "type": 4 + } +} \ No newline at end of file diff --git a/data/packs/Voxel Land 2/shaders/Image.frag.qsb b/data/packs/Voxel Land 2/shaders/Image.frag.qsb new file mode 100644 index 0000000000000000000000000000000000000000..65eae8813d27421f63d06eeb8f5956db28c7a08b GIT binary patch literal 7147 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 literal 0 HcmV?d00001 diff --git a/data/shaders/generative/Circle Dither (Color).frag.qsb b/data/shaders/generative/Circle Dither (Color).frag.qsb deleted file mode 100644 index cf8c78b929241304c90d83acb6c9afbfc2581648..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3552 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 aJoe{3eeAhE@Mk~z&nrTI?D221_UxJ=)eFr4 diff --git a/tools/packsrc/Alien Ocean/images/iChannel1.png b/tools/packsrc/Alien Ocean/images/iChannel1.png new file mode 100644 index 0000000000000000000000000000000000000000..a2c047206b20cf3aa5ca204cdf0fd84daa20f167 GIT binary patch literal 40867 zcmV()K;OTKP)PyA07*naRCrz-yJwSSS$3ZH9Ph99H+^RL?&@yz7=RdH0CFe=gOoy+5eiEBjZ)~7 zBuJs4z=38k)3$tNrO)f_xyM^Y)<0Nr&fa^i_kEuw{7--PAIjg~Uvbp$GY$U4^TTJn zz8|yA8vN~v&;2Zz6oBNal<{Pc~2xY`Gr;E zcAR1Mp}biz>l{$aBfPH9_PxfiCt@FVx&PC5*wv@RY#1Mu=o1OySAY2*O2ip^b`?RI zGakjXUPP2}2mPW(-kr0SO6o<(#Y9B;W*=?pVr2tl?Gv$8A->%3{L2=vrb}Yqgz62> zxJpH@kd!G-vmi4y?%yTo)i#^u6ltf@)Nj%EO@eKOQn5(ZH+-{i@qJ;FrUJ8M#Piit z;%bN_y3Fb_)$@Yd69YA=@@o7Otyo3te~Xm=gi)&?1|@TUi{P9RZEkone8T(5gk8Ep z3uHR&f>==SXFgT=4C6G$b~WCFA1Sr{t#K7YzqJkNWqRjAuA5}LFx-@(35uW`)XT}~3`wEx<~|ED=^ zr^)Z{f21W3snz#bxgAvTl7r>~KdtdrZ_rOtByok72W*oDuBdX*+2EEHcC#&i(Su3+ zjFZg;_i6=yTaZ3zfH)iv3E7jEkuG)sj4;kW<3T#Fkdr^=Vk zg8%)yDf_>8&gv(RMR(0t(Gjz%PfJ{KF;kHjIfqX+tc5DVD1l=z!z!bXBaXhdxeA&b z2v-oEk?S>lv1D=edk(}7Z;xW0yl%5PF`)>kBoR0&sXrynZ9)p1iB0=dWH$@wb%wmU zUocH?8MMEoe0X8w4T1R_fdyG0kUBM-_=3j4KK^LN`7-A0MB~$^Hd+?2FO}TqE4u9( z;?`lgZ_yBC#`jm)qb+hHM9uc8_7==4eQMunTn?rrS;&{N#ZL4n(?e$U6{qt$d0nLH zTda;ItS>hhNt2}|;@BC%cuBppN9?Z2QiJ1XH9R3EdKaTe8inwQ^Himq*(jX?Gp!&N zI&#(Ir}0~!?yD>|eKwmVds>Oy>m%(XHsvjH-l0;7NP>{iSWu>YiXb7ZRuNY&6{SV1 zp)3|BFq%sEjfh3YFOH`wT z(d&faQ-O`EBbPE}U8lXBavzI0!>@?k@9~yRFkb@rOdXOmB@InF<}pPuWo2auzx&UATY8u8iBF%?8A(`Ab!7jB z#i~WrQ!!Vdo)lcYUr<*h8kJMZqQn?#Y_DHYy&jT3t5LqaW~zqdN`-G*JwBxuWZmaP ztM^2nO+(Yzl~W8`VeW<4L5ijt+>O^fdO4uD49HGiz%+*`Is&{yw)_7z(1mz{;L_&%LPP74`kP}HhgI$H&OvUf-s4XK> ze?usyOQJ64(n@|T2CRl_gLpT4L!u@K4)IuplsF% z^eKl5)pW*~KJo@MD@BrP2><4nzbPX`kVTrJ�y&y-}GPE`wH|tg@jKHn`BXJX)=A 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 P00000NkvXXu0mjfg;+RV literal 0 HcmV?d00001 diff --git a/tools/packsrc/Alien Ocean/pack.json b/tools/packsrc/Alien Ocean/pack.json new file mode 100644 index 0000000..aa78198 --- /dev/null +++ b/tools/packsrc/Alien Ocean/pack.json @@ -0,0 +1,31 @@ +{ + "author": "NLIBS", + "name": "Alien Ocean", + "version": "1.0.0", + "description": "A stylized alien ocean inspired by Very fast procedural ocean by afl_ext Can you spot the other planet in the sky?", + "license": "CC BY-NC-SA 3.0", + "engine": "shadertoy", + "id": "wldBRf", + "tags": [ + "reflection", + "raymarching", + "distance", + "neon" + ], + + "source": "./shaders/Image.frag.qsb", + "speed": 1, + + "bufferA": + { + "source": "./shaders/Buffer A.frag.qsb" + }, + + "channel0": "{bufferA}", + + "channel1": + { + "type": 0, + "source": "./images/iChannel1.png" + } +} \ No newline at end of file diff --git a/tools/packsrc/Alien Ocean/shaders/Buffer A.frag b/tools/packsrc/Alien Ocean/shaders/Buffer A.frag new file mode 100644 index 0000000..a21a332 --- /dev/null +++ b/tools/packsrc/Alien Ocean/shaders/Buffer A.frag @@ -0,0 +1,33 @@ +float ray(vec3 ro, vec3 rd, float t) +{ + vec3 p = ro+t*rd; + float h = 0.; + for (int i=0;i<100;i++) { + float h = p.y-srf(p.xz,ITERS_RAY, iTime).x; + if (h1.)*PI; + + //Camera + vec3 vo = vec3(iTime,1.01,iTime), + vd = camera_ray(vo,uv,muv,iTime); + + float t = -vo.y/(vd.y-1.0+EPS*8.); + if (t>0.) { + //march to surface with high epsilon + t = ray(vo,vd, t); + } + + O = vec4(t); + } +} \ No newline at end of file diff --git a/tools/packsrc/Alien Ocean/shaders/Common.frag b/tools/packsrc/Alien Ocean/shaders/Common.frag new file mode 100644 index 0000000..71d4591 --- /dev/null +++ b/tools/packsrc/Alien Ocean/shaders/Common.frag @@ -0,0 +1,57 @@ +#define PI 3.141592 +#define EPS 0.005 + +#define ITERS_RAY 17 +#define ITERS_NORMAL 45 +#define W_DEPTH 2.2 +#define W_SPEED 1.4 +#define W_DETAIL .75 + +const mat2 rot = mat2(cos(12.),sin(12.),-sin(12.),cos(12.)); + +vec3 srf(vec2 pos, int n, float time) +{ + pos *= W_DEPTH; + float freq = 0.6; + float t = W_SPEED*time; + float weight = 1.0; + float w = 0.0; + vec2 dx = vec2(0); + + vec2 dir = vec2(1,0); + for(int i=0;i 1.) return 1.; + cosR = sqrt(1. - cosR * cosR); + float Rs = (n1*cosI - n2 * cosR)/(n1*cosI + n2 * cosR); + float Rp = (n1*cosR - n2 * cosI)/(n1*cosR + n2 * cosI); + return mix(Rs*Rs, Rp*Rp, .5); +} + +void mainImage( out vec4 O, in vec2 u ) +{ + vec2 R = iResolution.xy, + uv = (2.*u-R)/R.x, + muv = (2.*iMouse.xy-R)/R.x*-float(iMouse.z>1.)*PI; + + //Camera + vec3 vo = vec3(iTime,1.01,iTime), + vd = camera_ray(vo,uv,muv,iTime), + //Sky colour + sky_col = sky(vd), + col = sky_col; + + if ((1.0-vo.y)/vd.y>0.0) { + //raymarch using previous pass + float t = texelFetch(iChannel0,ivec2(u)>>3,0).x; + t = ray(vo,vd, t); + + //normal using derivative + vec3 p = vo+vd*t; + vec3 N = norm(p.xz, max(ITERS_NORMAL+min(int(log(t)*-10.),0),1), iTime); + + //Reflected ray + vec3 refd = reflect(vd,N); + //Approx reflection occlusion from other waves + float ref_hit = clamp((p.y+refd.y*100.-.5)*.5,0.,1.); + //vec3 ref_col = mix(vec3(0),sky(refd),ref_hit); + vec3 ref_col = mix(sky(normalize(refd+vec3(0,.2,0)))*.4,sky(refd),ref_hit); + + //approx SSS + vec3 H = normalize(star_dir+N*.05); + float thick = pow(1.-p.y,2.); + float I = pow(max(dot(vd,H),0.), 8.)*.002; + vec3 ss_col = I*star_col*pow(vec3(.8,.15,.02)*.5,vec3(.3+thick*2.)); + + //Mix using fresnel + col = mix(ss_col,ref_col,fresnel(vd,N,1.,1.333)); + + //Fog + col = mix(sky_col,col,exp(-pow(t,1.5)*.007)); + //col = ss_col; + } + + vec2 d = pow(abs(uv*.5)+.1,vec2(4.)); + col *= pow(1.-.84*pow(d.x+d.y,.25),2.); //vignette + col += col*col; + col = 1.-exp(-col); + col = pow(col,vec3(1./2.2)); + + vec3 noise = pow(texelFetch(iChannel1, ivec2(u)%1024, 0).rgb,vec3(1./2.2)); + noise = (noise*2.-1.)*0.499*2.; + col += noise/256.; + + O = vec4(col,1.); +} \ No newline at end of file diff --git a/tools/packsrc/Audio Reactive Galaxy/pack.json b/tools/packsrc/Audio Reactive Galaxy/pack.json new file mode 100644 index 0000000..fa8b259 --- /dev/null +++ b/tools/packsrc/Audio Reactive Galaxy/pack.json @@ -0,0 +1,22 @@ +{ + "author": "JelyMe314", + "name": "Audio Reactive Galaxy", + "version": "1.0.0", + "description": "A version of CBS's simplicity galaxy shader, to be used with lively wallpaper.", + "license": "", + "engine": "shadertoy", + "id": "ms3Gzl", + "tags": [ + "reactive", + "galaxy", + "fractal" + ], + + "source": "./shaders/Image.frag.qsb", + "speed": 1, + + "channel0": + { + "type": 4 + } +} \ No newline at end of file diff --git a/tools/packsrc/Audio Reactive Galaxy/shaders/Image.frag b/tools/packsrc/Audio Reactive Galaxy/shaders/Image.frag new file mode 100644 index 0000000..23a73fb --- /dev/null +++ b/tools/packsrc/Audio Reactive Galaxy/shaders/Image.frag @@ -0,0 +1,85 @@ +//CBS +//Parallax scrolling fractal galaxy. +//Inspired by JoshP's Simplicity shader: https://www.shadertoy.com/view/lslGWr + +// http://www.fractalforums.com/new-theories-and-research/very-simple-formula-for-fractal-patterns/ +float field(in vec3 p,float s) { + float strength = 7. + .03 * log(1.e-6 + fract(sin(iTime) * 4373.11)); + float accum = s/4.; + float prev = 0.; + float tw = 0.; + for (int i = 0; i < 26; ++i) { + float mag = dot(p, p); + p = abs(p) / mag + vec3(-.5, -.4, -1.5); + float w = exp(-float(i) / 7.); + accum += w * exp(-strength * pow(abs(mag - prev), 2.2)); + tw += w; + prev = mag; + } + return max(0., 5. * accum / tw - .7); +} + +// Less iterations for second layer +float field2(in vec3 p, float s) { + float strength = 7. + .03 * log(1.e-6 + fract(sin(iTime) * 4373.11)); + float accum = s/4.; + float prev = 0.; + float tw = 0.; + for (int i = 0; i < 18; ++i) { + float mag = dot(p, p); + p = abs(p) / mag + vec3(-.5, -.4, -1.5); + float w = exp(-float(i) / 7.); + accum += w * exp(-strength * pow(abs(mag - prev), 2.2)); + tw += w; + prev = mag; + } + return max(0., 5. * accum / tw - .7); +} + +vec3 nrand3( vec2 co ) +{ + vec3 a = fract( cos( co.x*8.3e-3 + co.y )*vec3(1.3e5, 4.7e5, 2.9e5) ); + vec3 b = fract( sin( co.x*0.3e-3 + co.y )*vec3(8.1e5, 1.0e5, 0.1e5) ); + vec3 c = mix(a, b, 0.5); + return c; +} + + +void mainImage( out vec4 fragColor, in vec2 fragCoord ) { + vec2 uv = 2. * fragCoord.xy / iResolution.xy - 1.; + vec2 uvs = uv * iResolution.xy / max(iResolution.x, iResolution.y); + vec3 p = vec3(uvs / 4., 0) + vec3(1., -1.3, 0.); + p += .2 * vec3(sin(iTime / 16.), sin(iTime / 12.), sin(iTime / 128.)); + + float freqs[4]; + //Sound + freqs[0] = texture( iChannel0, vec2( 0.01, 0.25 ) ).x; + freqs[1] = texture( iChannel0, vec2( 0.07, 0.25 ) ).x; + freqs[2] = texture( iChannel0, vec2( 0.15, 0.25 ) ).x; + freqs[3] = texture( iChannel0, vec2( 0.30, 0.25 ) ).x; + + float t = field(p,freqs[2]); + float v = (1. - exp((abs(uv.x) - 1.) * 6.)) * (1. - exp((abs(uv.y) - 1.) * 6.)); + + //Second Layer + vec3 p2 = vec3(uvs / (4.+sin(iTime*0.11)*0.2+0.2+sin(iTime*0.15)*0.3+0.4), 1.5) + vec3(2., -1.3, -1.); + p2 += 0.25 * vec3(sin(iTime / 16.), sin(iTime / 12.), sin(iTime / 128.)); + float t2 = field2(p2,freqs[3]); + vec4 c2 = mix(.4, 1., v) * vec4(1.3 * t2 * t2 * t2 ,1.8 * t2 * t2 , t2* freqs[0], t2); + + + //Let's add some stars + //Thanks to http://glsl.heroku.com/e#6904.0 + vec2 seed = p.xy * 2.0; + seed = floor(seed * iResolution.x); + vec3 rnd = nrand3( seed ); + vec4 starcolor = vec4(pow(rnd.y,40.0)); + + //Second Layer + vec2 seed2 = p2.xy * 2.0; + seed2 = floor(seed2 * iResolution.x); + vec3 rnd2 = nrand3( seed2 ); + starcolor += vec4(pow(rnd2.y,40.0)); + + fragColor = mix(freqs[3]-.3, 1., v) * vec4(1.5*freqs[2] * t * t* t , 1.2*freqs[1] * t * t, freqs[3]*t, 1.0)+c2+starcolor; +} \ No newline at end of file diff --git a/tools/packsrc/Blueprint/pack.json b/tools/packsrc/Blueprint/pack.json new file mode 100644 index 0000000..63b8601 --- /dev/null +++ b/tools/packsrc/Blueprint/pack.json @@ -0,0 +1,32 @@ +{ + "author": "s23b", + "name": "Blueprint of the Arkiteckt", + "version": "1.0.0", + "description": "", + "license": "CC BY-NC-SA 3.0", + "engine": "shadertoys", + "id": "4tySDW", + "tags": [ + "reactive", + "raymarching", + "fractal", + "edge detect", + "mouse" + ], + + "source": "./shaders/Image.frag.qsb", + "speed": 1, + + "channel0": + { + "type": 2, + "source": "./shaders/Buffer A.frag.qsb", + "frame_buffer_channel": 1, + + "channel0": + { + "type": 4, + "invert": true + } + } +} \ No newline at end of file diff --git a/tools/packsrc/Blueprint/shaders/Buffer A.frag b/tools/packsrc/Blueprint/shaders/Buffer A.frag new file mode 100644 index 0000000..88911a9 --- /dev/null +++ b/tools/packsrc/Blueprint/shaders/Buffer A.frag @@ -0,0 +1,8 @@ +// the purpose of this buffer is too smooth out the sudden changes in the fft +void mainImage( out vec4 fragColor, in vec2 fragCoord ) +{ + vec2 uv = fragCoord.xy / iResolution.xy; + float old = texture(iChannel1, uv).x; + float new = texture(iChannel0, uv).x; + fragColor = vec4(mix(old, new, new > old ? .4 : .04)); +} \ No newline at end of file diff --git a/tools/packsrc/Blueprint/shaders/Image.frag b/tools/packsrc/Blueprint/shaders/Image.frag new file mode 100644 index 0000000..f20bc03 --- /dev/null +++ b/tools/packsrc/Blueprint/shaders/Image.frag @@ -0,0 +1,356 @@ +#define SPEED .1 +#define FOV 3. + +#define MAX_STEPS 80 +#define EPS .001 +#define RENDER_DIST 5. +#define AO_SAMPLES 4. +#define AO_RANGE 100. + +#define PI 3.14159265359 +#define saturate(x) clamp(x, 0., 1.) + +// precomputed globals +float _house = 0.; +float _boat = 0.; +float _spaceship = 0.; +float _atmosphere = 0.; +mat3 _kifsRot = mat3(1, 0, 0, 0, 1, 0, 0, 0, 1); +float _kifsOffset = 0.; + +// rotate 2d space with given angle +void tRotate(inout vec2 p, float angel) { + float s = sin(angel), c = cos(angel); + p *= mat2(c, -s, s, c); +} + +// divide 2d space into s chunks around the center +void tFan(inout vec2 p, float s) { + float k = s / PI / 2.; + tRotate(p, -floor((atan(p.y, p.x)) * k + .5) / k); +} + +// rectangle distance +float sdRect(vec2 p, vec2 r) { + p = abs(p) - r; + return min(max(p.x, p.y), 0.) + length(max(p, 0.)); +} + +// box distance +float sdBox(vec3 p, vec3 r) { + p = abs(p) - r; + return min(max(p.x, max(p.y, p.z)), 0.) + length(max(p, 0.)); +} + +// sphere distance +float sdSphere(vec3 p, float r) { + return length(p) - r; +} + +// 3d cross distance +float sdCross(vec3 p, vec3 r) { + p =abs(p) - r; + p.xy = p.x < p.y ? p.xy : p.yx; + p.yz = p.y < p.z ? p.yz : p.zy; + p.xy = p.x < p.y ? p.xy : p.yx; + return length(min(p.yz, 0.)) - max(p.y, 0.); +} + +// union +float opU(float a, float b) { + return min(a, b); +} + +// intersection +float opI(float a, float b) { + return max(a, b); +} + +// substraction +float opS(float a, float b) { + return max(a, -b); +} + +// smooth union +float opSU(float a, float b, float k) +{ + float h = clamp(.5 + .5 * (b - a) / k, 0., 1.); + return mix(b, a, h) - k * h * (1. - h); +} + +// house distance +float sdHouse(vec3 p) { + p.y += .075; + vec3 boxDim = vec3(.2, .15, .2); + + // add the walls + float d = sdBox(p, boxDim); + + // add the windows + vec3 q = abs(p); + vec3 windSize = vec3(.04, .04, .06); + q -= windSize + vec3(.005); + d = opI(d, opU(sdCross(q, windSize), .11 - abs(p.y))); + + // add the roof + q = p; + q.y -= .38; + tFan(q.xz, 4.); + tRotate(q.xy, PI/4.); + d = opU(d, sdBox(q, vec3(.35, .01, .35))); + + // make it hollow + d = opS(d, sdBox(p, boxDim - vec3(.02))); + return d; +} + +// boat distance +float sdBoat(vec3 p) { + + // add the mast (a word I learned today :P) + float d = sdBox(p + vec3(0, .05, 0), vec3(.01, .2, .01)); + + // add the sail + vec3 q = p + vec3(0, -.05, .12); + float a = sdSphere(q, .2); + a = opS(a, sdSphere(q, .195)); + q.x = abs(q.x); + tRotate(q.yx, .1); + a = opI(a, sdBox(q - vec3(0, 0, .1), vec3(.1))); + d = opU(d, a); + + // add the body of the boat + p.x = abs(p.x); + p.x += .1; + a = sdSphere(p, .3); + a = opS(a, sdSphere(p, .29)); + a = opI(a, p.y + .15); + d = opU(d,a); + return d; +} + +// spaceship distance +float sdSpaceship(vec3 p) { + tFan(p.xz, 6.); + p.x += .3; + + // add the cap + float d = sdSphere(p, .4); + d = opS(d, p.y - .12); + + // add the body + d = opU(d, sdSphere(p, .39)); + + // add the fins (another word I learned, thanks google :P) + d = opU(d, opI(sdSphere(p + vec3(0, .24, 0), .41), sdRect(p.zx, vec2(.005, .5)))); + d = opS(d, sdSphere(p + vec3(0, .3, 0), .37)); + d = opS(d, p.y + .25); + return d; +} + +// atmosphere distance +float sdAtmosphere(vec3 p) { + float time = iTime; + tRotate(p.yz, time); + vec3 q = p; + tFan(q.xz, 12.); + float d = sdBox(q - vec3(.3, 0, 0), vec3(.01)); + tRotate(p.yx, time); + q = p; + tFan(q.yz, 12.); + d = opU(d, sdBox(q - vec3(0, .23, 0), vec3(.01))); + tRotate(p.xz, time); + q = p; + tFan(q.yx, 12.); + d = opU(d, sdBox(q - vec3(0, .16, 0), vec3(.01))); + + return d; +} + +// distance estimation of everything together +float map(vec3 p) { + float d = _house <= 0. ? 5. : sdHouse(p) + .1 - _house * .1; + if (_boat > 0.) d = opU(d, sdBoat(p) + .1 - _boat * .1); + if (_spaceship > 0.) d = opU(d, sdSpaceship(p) + .1 - _spaceship * .1); + if (_atmosphere > 0.) d = opU(d, sdAtmosphere(p) + .1 - _atmosphere * .1); + + //return d; + float s = 1.; + for (int i = 0; i < 4; ++i) { + tFan(p.xz, 10.); + p = abs(p); + p -= _kifsOffset; + + p *= _kifsRot; + s *= 2.; + } + + return opSU(d, sdBox(p * s, vec3(s / 17.)) / s, .1); +} + +// trace the scene from ro (origin) to rd (direction, normalized) +// until hit or reached maxDist, outputs distance traveled, the number of steps +// and the closest distance achieved during marching (used of cheap edge detection) +float trace(vec3 ro, vec3 rd, float maxDist, out float steps, out float nt) { + float total = 0.; + steps = 0.; + nt = 100.; + + for (int i = 0; i < MAX_STEPS; ++i) { + ++steps; + float d = map(ro + rd * total); + nt = min(d, nt); + total += d; + if (d < EPS || maxDist < total) break; + } + + return total; +} + +// calculate the normal vector +vec3 getNormal(vec3 p) { + vec2 e = vec2(.0001, 0); + return normalize(vec3( + map(p + e.xyy) - map(p - e.xyy), + map(p + e.yxy) - map(p - e.yxy), + map(p + e.yyx) - map(p - e.yyx) + )); +} + +// ambient occlusion +float calculateAO(vec3 p, vec3 n) { + + float r = 0., w = 1., d; + + for (float i = 1.; i <= AO_SAMPLES; i++){ + d = i / AO_SAMPLES / AO_RANGE; + r += w * (d - map(p + n * d)); + w *= .5; + } + + return 1.-saturate(r * AO_RANGE); +} + +// a lovely function that goes up and down periodically between 0 and 1, pausing at the extremes +float pausingWave(float x, float a, float b) { + x = abs(fract(x) - .5) * 1. - .5 + a; + return smoothstep(0., a - b, x); +} + +void mainImage(out vec4 fragColor, in vec2 fragCoord) { + // transform screen coordinates + vec2 uv = fragCoord.xy / iResolution.xy; + uv = uv * 2. - 1.; + uv.x *= iResolution.x / iResolution.y; + + // transform mouse coordinates + vec2 mouse = iMouse.xy / iResolution.xy * 2. - 1.; + mouse.x *= iResolution.x / iResolution.y; + mouse *= 2.; + + // set time dependent constants + float speed = .25 / 10.5; + float time = mod(iTime, 290.); + time -= 10.5; + if (time > 167.) time -= 167.; else + if (time > 63.) time -= 63.; + time -= 5.25; + time *= speed; + + // these determine which object to show + _house = pausingWave(time, .15, .125); + _boat = pausingWave(time - .125 / .1, .15, .125); + _spaceship = pausingWave(time - .25 / .1, .15, .125); + _atmosphere = pausingWave(time - .375 / .1, .15, .125) * step(10., iTime); + + // set up kifs rotation matrix + float a = -texture(iChannel0, vec2(.5, .25)).x + sin(iTime) * .2 + .9; + float s = sin(a), c = cos(a); + _kifsRot *= mat3(c, -s, 0, s, c, 0, 0, 0, 1); + _kifsRot *= mat3(1, 0, 0, 0, c, -s, 0, s, c); + _kifsRot *= mat3(c, 0, s, 0, 1, 0, -s, 0, c); + + // set up kifs offset + _kifsOffset = .07 + texture(iChannel0, vec2(.1, .25)).x * .06; + + // set up camera position + vec3 rd = normalize(vec3(uv, FOV)); + vec3 ro = vec3(0, 0, -2); + + // light is relative to the camera + vec3 light = vec3(-1., .5, 0); + + vec2 rot = vec2(0); + if (iMouse.z > 0. && iMouse.x > 0. && iMouse.y > 0.) { + // rotate the scene using the mouse + rot = -mouse; + } else { + // otherwise rotate constantly as time passes + rot = vec2( + iTime * SPEED * PI,//had to slightly modify \/ this value due to an issue reported by Fabrice + mix(sin(iTime * SPEED) * PI / 8., PI / 2. - 1e-5, saturate(exp(-iTime + 10.5)))); + } + + tRotate(rd.yz, rot.y); + tRotate(rd.xz, rot.x); + tRotate(light.xz, rot.x); + tRotate(ro.yz, rot.y); + tRotate(ro.xz, rot.x); + + // march + float steps, outline, dist = trace(ro, rd, RENDER_DIST, steps, outline); + + // calculate hit point coordinates + vec3 p = ro + rd * dist; + + // calculate normal + vec3 normal = getNormal(p); + + // light direction + vec3 l = normalize(light - p); + + // ambient light + float ambient = .1; + + // diffuse light + float diffuse = max(0., dot(l, normal)); + + // specular light + float specular = pow(max(0., dot(reflect(-l, normal), -rd)), 4.); + + // "ambient occlusion" + float ao = calculateAO(p, normal); + + // create the background grid + vec2 gridUv = fragCoord.xy - iResolution.xy / 2.; + float grid = dot(step(mod(gridUv.xyxy, vec4(20, 20, 100, 100)), vec4(1)), vec4(.1, .1, .2, .2)); + + // create blue background + vec3 bg = vec3(0, .1, .3) * saturate(1.5 - length(uv) * .5); + + // find the edges in the geometry + float edgeWidth = .0015; + float edge = smoothstep(1., .0, dot(normal, getNormal(p - normal * edgeWidth))) * step(length(p), 1.); + + // get the outline of the shapes + outline = smoothstep(.005, .0, outline) * step(1., length(p)); + + // diagonal strokes used for shading + vec2 strokes = sin(vec2(uv.x + uv.y, uv.x - uv.y) * iResolution.y * PI / 4.) * .5 - .5; + + // first part of the shading: ao + marching steps + float highlights = (steps / float(MAX_STEPS) + sqrt(1. - ao)) * step(length(p), 1.) * .5; + highlights = floor(highlights * 5.) / 10.; + + // second part of the shading: ambient + diffuse + specular light + float fog = saturate(length(ro) - dist * dist * .25); + float lightValue = (ambient + diffuse + specular) * fog; + lightValue = floor(lightValue * 5.) / 10.; + + fragColor.rgb = mix(bg, vec3(1., .9, .7), + max(max(max(saturate(highlights + strokes.x), saturate(lightValue + strokes.y)) * fog, + (edge + outline) * 2. + strokes.y), grid)); + + // gamma correction + fragColor = pow(saturate(fragColor), vec4(1. / 2.2)) * step(abs(uv.y), 1.); +} \ No newline at end of file diff --git a/tools/packsrc/Kaleidoscopic Warp Tunnel /pack.json b/tools/packsrc/Kaleidoscopic Warp Tunnel /pack.json new file mode 100644 index 0000000..54f57e7 --- /dev/null +++ b/tools/packsrc/Kaleidoscopic Warp Tunnel /pack.json @@ -0,0 +1,28 @@ +{ + "author": "Hyeve", + "name": "Kaleidoscopic Warp Tunnel", + "version": "1.0.0", + "description": "", + "license": "", + "engine": "shadertoy", + "id": "sddBzl", + "tags": [ + "3d", + "raymarching", + "transparency", + "glass", + "reflections", + "crystal" + ], + + "source": "./shaders/Image.frag.qsb", + "speed": 0.5, + + "bufferA": + { + "source": "./shaders/Buffer A.frag.qsb", + "frame_buffer_channel": 0 + }, + + "channel0":"{bufferA}" +} \ No newline at end of file diff --git a/tools/packsrc/Kaleidoscopic Warp Tunnel /shaders/Buffer A.frag b/tools/packsrc/Kaleidoscopic Warp Tunnel /shaders/Buffer A.frag new file mode 100644 index 0000000..82cc06b --- /dev/null +++ b/tools/packsrc/Kaleidoscopic Warp Tunnel /shaders/Buffer A.frag @@ -0,0 +1,122 @@ +#define DTR 0.01745329 +#define rot(a) mat2(cos(a),sin(a),-sin(a),cos(a)) + + +vec2 uv=vec2(0); +vec3 cp,cn,cr,ss,oc,gl=vec3(0),vb,ro,rd,so,ld; +vec4 fc=vec4(0),cc=vec4(0); +float tt,cd,sd,md,io,oa,td=0.,li; +int es=0,ec=0,fi=1; + + +float bx(vec3 p,vec3 s){vec3 q=abs(p)-s;return min(max(q.x,max(q.y,q.z)),0.)+length(max(q,0.));} +float cy(vec3 p, vec2 s){p.y+=s.x/2.;p.y-=clamp(p.y,0.,s.x);return length(p)-s.y;} +float tor(vec3 p,vec2 t){return length(vec2(length(p.xz)-t.x,p.y))-t.y;} +float gy(vec3 p, vec3 s){return (abs(dot(sin(p*s.x),cos((p*s.y).zxy)))-s.z)/(max(s.x,s.y)*1.8);} +float smin(float a, float b, float k){float h=clamp(0.5+0.5*(b-a)/k,0.,1.);return mix(b,a,h)-k*h*(1.-h);} + +float h11 (float a){return fract(sin((a)*12.9898)*43758.5453123);} + +#define pi 3.1415926535 +vec3 pal( in float t, in vec3 a, in vec3 b, in vec3 c, in vec3 d ){ + return a + b*cos(2.*pi*(c*t+d)); +} + +vec3 mpal(vec3 pt) +{ + vec3 e = vec3(0.5); return pal(length(vec3(pt.z,sin(pt.y)*0.5,cos(pt.x)*0.5)), e*0.8,e-0.1,e,vec3(0.11,0.33,0.66)); +} + +float mid() +{ + float s = pow(sin(tt)*0.5+0.5,1.5); + return sin(s + tt*0.1)*pi; +} + +float mp(vec3 p) +{ + vec3 pp = p; + + p.xy *= rot(tt*0.1); + p.xy += sin(p.z*0.1); + + p.z += tt*4.; + p.z=mod(p.z,30.)-15.; + + for(float i = 0.; i < 4.; i++) + { + p.xy = abs(p.xy) - 1.7; + p.xy *= rot(i + tt*0.1); + p.z=abs(p.z)-3.; + } + + + sd = bx(p,vec3(1.5,1.5,1)); + sd = max(-cy(pp.yzx, vec2(100,5)),sd); + sd = min(sd,bx(pp+vec3(0,0,-15),vec3(10,10,1))); + //sd = min(sd, length(pp-vec3(0,0,-50))-5.); + + sd=abs(sd)-0.001; + + + + if(sd<0.01) + { + io=-1. + length(pp.xy)*0.35 > 1. ? length(pp.xy)*0.5 : -1.; + oc=vec3(0.); + oa=0.2; + ss=mpal(vec3(p.xy,mid())) * (sin(p.x + p.y*1.1 + p.z*1.3)*0.5+0.5); + ec=2; + + } + return sd; +} + +void nm(){mat3 k=mat3(cp,cp,cp)-mat3(.001);cn=normalize(mp(cp)-vec3(mp(k[0]),mp(k[1]),mp(k[2])));cn=normalize(cn);} +void shtr(){so=cp+cn*0.05;md=64.;for(li=cd=0.;cd<64.;li++,cd+=mp(cp=ro+cn*0.05-ld*cd)){if(sd64.)break;}} +void tr(){for(li=cd=0.;cd<128.;){li++;cd+=mp(cp=ro+rd*cd);td+=sd;if(sd<0.0001||li>512.)break;}nm();} + + +void px(vec3 rd) +{ + vec3 bg=cc.rgb=mpal(vec3(2,0,mid()))*0.5 -pow(length(uv),4.)*0.8+gl; + if(cd<128.) + {cc.a=oa;ld=normalize(cp-vec3(0, 0, -40)); + float df=max(dot(cn,-ld),0.),sp=max(1.-length(cross(rd+ld,cn)),0.)*(1.2-oa), + fo = exp(-pow(0.001*td,10.)),ao=1.-clamp(mp(cp+cn*.1)/.1,0.,1.); + vec3 fr=pow(1.-abs(dot(rd,-cn)),3.)*mix(cc.rgb,oc,0.); + cc.rgb=(oc*df+fr+sp+ss)-ao*0.; + shtr();cc.rgb-=(1.-clamp(md/0.05,0.,1.))*0.3; + cc.rgb = mix(bg, cc.rgb, fo);} + else cc.a=1.;cc.rgb+=gl; + cc.rgb*=max(max(cc.r,max(cc.g,cc.b)),1.); +} + +void render(vec2 frag, vec2 res, float time, out vec4 col) +{ + uv=vec2(frag.x/res.x,frag.y/res.y); + uv-=0.5;uv/=vec2(res.y/res.x,1); + tt=mod(time+10.,100.); + + ro=vec3(cos(tt)*0.3,sin(tt)*0.3,-45. + (length(uv)+0.1)*pow(sin(tt)*0.5+0.5,1.5)*50.); + rd=normalize(vec3(uv*(cos(tt*0.5)*0.1+0.9),1.)); + + for(int i=0;i<10;i++) + { + tr();ro=cp-cn*(io<0.?-0.01:0.01); + cr=refract(rd,cn,i%2==0?1./io:io); + if((length(cr)==0.&&es<=0)||io<0.) + {i++;cr=reflect(rd,cn);es=(io<0.?es:ec);} + px(rd);if(max(es,0)%3==0) rd=cr; + es--;fc=fc+vec4(cc.rgb*cc.a,cc.a)*(1.-fc.a); + if(fc.a>=1.)break; + } + col=fc/fc.a; +} + + +void mainImage( out vec4 fragColor, in vec2 fragCoord ) +{ + if(mod(float(iFrame), 60./FPS) < 1. || iFrame < 5) render(fragCoord.xy,iResolution.xy,iTime,fragColor); + else fragColor = texture(iChannel0, fragCoord / iResolution.xy); +} \ No newline at end of file diff --git a/tools/packsrc/Kaleidoscopic Warp Tunnel /shaders/Common.frag b/tools/packsrc/Kaleidoscopic Warp Tunnel /shaders/Common.frag new file mode 100644 index 0000000..41800ab --- /dev/null +++ b/tools/packsrc/Kaleidoscopic Warp Tunnel /shaders/Common.frag @@ -0,0 +1,3 @@ +//fps control for performance. Assumes the refresh rate of your monitor is 60hz +//(120hz monitor set to 30 here will actually run at 60fps) +#define FPS 30. \ No newline at end of file diff --git a/tools/packsrc/Kaleidoscopic Warp Tunnel /shaders/Image.frag b/tools/packsrc/Kaleidoscopic Warp Tunnel /shaders/Image.frag new file mode 100644 index 0000000..2386ea7 --- /dev/null +++ b/tools/packsrc/Kaleidoscopic Warp Tunnel /shaders/Image.frag @@ -0,0 +1,6 @@ +//See the common tab for fps control. + +void mainImage( out vec4 fragColor, in vec2 fragCoord ) +{ + fragColor = texture(iChannel0, fragCoord / iResolution.xy); +} \ No newline at end of file diff --git a/tools/packsrc/Lucid Dreams/images/iChannel2.png b/tools/packsrc/Lucid Dreams/images/iChannel2.png new file mode 100644 index 0000000000000000000000000000000000000000..87fd78c6219dc057951386b508410c81c7c0b03e GIT binary patch literal 26156 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 z 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 P00000NkvXXu0mjfj^=|9 literal 0 HcmV?d00001 diff --git a/tools/packsrc/Lucid Dreams/pack.json b/tools/packsrc/Lucid Dreams/pack.json new file mode 100644 index 0000000..f158a08 --- /dev/null +++ b/tools/packsrc/Lucid Dreams/pack.json @@ -0,0 +1,36 @@ +{ + "author": "DigitalArtifex", + "name": "Lucid Dreams", + "version": "1.0.0", + "description": "A mix of xx by XX and Watercolor Filter by mds2", + "license": "", + "engine": "shadertoy", + "id": "ms3Gzl", + "tags": [ + "reactive", + "galaxy", + "fractal" + ], + + "source": "./shaders/Image.frag.qsb", + "speed": 1, + + "bufferA": + { + "source": "./shaders/Buffer A.frag.qsb", + "frame_buffer_channel": 0, + + "channel1": + { + "type": 2, + "source":"./shaders/" + }, + "channel2": + { + "type": 0, + "source": "./images/iChannel2.png" + } + }, + + "channel0":"{bufferA}" +} \ No newline at end of file diff --git a/tools/packsrc/Lucid Dreams/shaders/Buffer A.frag b/tools/packsrc/Lucid Dreams/shaders/Buffer A.frag new file mode 100644 index 0000000..229313d --- /dev/null +++ b/tools/packsrc/Lucid Dreams/shaders/Buffer A.frag @@ -0,0 +1,25 @@ +// The MIT License +// Copyright © 2017 Michael Schuresko +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +void mainImage( out vec4 fragColor, in vec2 fragCoord ) +{ + vec2 blend_uv = fragCoord.xy / iResolution.xy; + vec2 uv = vec2(1.0 - blend_uv.x, blend_uv.y); + vec3 intensity = 1.0 - texture(iChannel1, uv).rgb; + + float vidSample = dot(vec3(1.0), texture(iChannel1, uv).rgb); + float delta = 0.005; + float vidSampleDx = dot(vec3(1.0), + texture(iChannel1, uv + vec2(delta, 0.0)).rgb); + float vidSampleDy = dot(vec3(1.0), + texture(iChannel1, uv + vec2(0.0, delta)).rgb); + + vec2 flow = delta * vec2 (vidSampleDy - vidSample, vidSample - vidSampleDx); + + intensity = 0.005 * intensity + 0.995 * + (1.0 - texture(iChannel0, + blend_uv + vec2(-1.0, 1.0) * flow).rgb); + fragColor = vec4(1.0 - intensity,1.0); +} \ No newline at end of file diff --git a/tools/packsrc/Lucid Dreams/shaders/Image.frag b/tools/packsrc/Lucid Dreams/shaders/Image.frag new file mode 100644 index 0000000..c566b36 --- /dev/null +++ b/tools/packsrc/Lucid Dreams/shaders/Image.frag @@ -0,0 +1,9 @@ +// The MIT License +// Copyright © 2017 Michael Schuresko +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +void mainImage( out vec4 fragColor, in vec2 fragCoord ) +{ + vec2 uv = fragCoord.xy / iResolution.xy; + fragColor = texture (iChannel0, uv); +} \ No newline at end of file diff --git a/data/packs/Multiscale MIP Fluid/pack.json b/tools/packsrc/Multiscale MIP Fluid/pack.json similarity index 100% rename from data/packs/Multiscale MIP Fluid/pack.json rename to tools/packsrc/Multiscale MIP Fluid/pack.json diff --git a/tools/packsrc/Multiscale MIP Fluid/shaders/Buffer A.frag b/tools/packsrc/Multiscale MIP Fluid/shaders/Buffer A.frag new file mode 100644 index 0000000..4f18294 --- /dev/null +++ b/tools/packsrc/Multiscale MIP Fluid/shaders/Buffer A.frag @@ -0,0 +1,193 @@ +#define TURBULENCE_SAMPLER iChannel3 +#define CONFINEMENT_SAMPLER iChannel2 +#define POISSON_SAMPLER iChannel1 +#define VELOCITY_SAMPLER iChannel0 + +#define V(d) texture(TURBULENCE_SAMPLER, fract(uv+(d+0.))).xy + +vec2 gaussian_turbulence(vec2 uv) { + vec2 texel = 1.0/iResolution.xy; + vec4 t = vec4(texel, -texel.y, 0); + + vec2 d = V( t.ww); vec2 d_n = V( t.wy); vec2 d_e = V( t.xw); + vec2 d_s = V( t.wz); vec2 d_w = V(-t.xw); vec2 d_nw = V(-t.xz); + vec2 d_sw = V(-t.xy); vec2 d_ne = V( t.xy); vec2 d_se = V( t.xz); + + return 0.25 * d + 0.125 * (d_e + d_w + d_n + d_s) + 0.0625 * (d_ne + d_nw + d_se + d_sw); +} + +#define C(d) texture(CONFINEMENT_SAMPLER, fract(uv+(d+0.))).xy + +vec2 gaussian_confinement(vec2 uv) { + vec2 texel = 1.0/iResolution.xy; + vec4 t = vec4(texel, -texel.y, 0); + + vec2 d = C( t.ww); vec2 d_n = C( t.wy); vec2 d_e = C( t.xw); + vec2 d_s = C( t.wz); vec2 d_w = C(-t.xw); vec2 d_nw = C(-t.xz); + vec2 d_sw = C(-t.xy); vec2 d_ne = C( t.xy); vec2 d_se = C( t.xz); + + return 0.25 * d + 0.125 * (d_e + d_w + d_n + d_s) + 0.0625 * (d_ne + d_nw + d_se + d_sw); +} + +#define D(d) texture(POISSON_SAMPLER, fract(uv+d)).x + +vec2 diff(vec2 uv) { + vec2 texel = 1.0/iResolution.xy; + vec4 t = vec4(texel, -texel.y, 0); + + float d = D( t.ww); float d_n = D( t.wy); float d_e = D( t.xw); + float d_s = D( t.wz); float d_w = D(-t.xw); float d_nw = D(-t.xz); + float d_sw = D(-t.xy); float d_ne = D( t.xy); float d_se = D( t.xz); + + return vec2( + 0.5 * (d_e - d_w) + 0.25 * (d_ne - d_nw + d_se - d_sw), + 0.5 * (d_n - d_s) + 0.25 * (d_ne + d_nw - d_se - d_sw) + ); +} + +#define N(d) texture(VELOCITY_SAMPLER, fract(uv+(d+0.))) + +vec4 gaussian_velocity(vec2 uv) { + vec2 texel = 1.0/iResolution.xy; + vec4 t = vec4(texel, -texel.y, 0); + + vec4 d = N( t.ww); vec4 d_n = N( t.wy); vec4 d_e = N( t.xw); + vec4 d_s = N( t.wz); vec4 d_w = N(-t.xw); vec4 d_nw = N(-t.xz); + vec4 d_sw = N(-t.xy); vec4 d_ne = N( t.xy); vec4 d_se = N( t.xz); + + return 0.25 * d + 0.125 * (d_e + d_w + d_n + d_s) + 0.0625 * (d_ne + d_nw + d_se + d_sw); +} + +vec2 vector_laplacian(vec2 uv) { + const float _K0 = -20.0/6.0, _K1 = 4.0/6.0, _K2 = 1.0/6.0; + vec2 texel = 1.0/iResolution.xy; + vec4 t = vec4(texel, -texel.y, 0); + + vec4 d = N( t.ww); vec4 d_n = N( t.wy); vec4 d_e = N( t.xw); + vec4 d_s = N( t.wz); vec4 d_w = N(-t.xw); vec4 d_nw = N(-t.xz); + vec4 d_sw = N(-t.xy); vec4 d_ne = N( t.xy); vec4 d_se = N( t.xz); + + return (_K0 * d + _K1 * (d_e + d_w + d_n + d_s) + _K2 * (d_ne + d_nw + d_se + d_sw)).xy; +} + + + + +void mainImage( out vec4 fragColor, in vec2 fragCoord ) +{ + vec2 uv = fragCoord/iResolution.xy; + vec2 tx = 1.0/iResolution.xy; + + + vec2 turb, confine, div, delta_v, offset, lapl = vec2(0); + vec4 vel, adv = vec4(0); + vec4 init = N(); + + #ifdef RECALCULATE_OFFSET + for (int i = 0; i < ADVECTION_STEPS; i++) { + #ifdef BLUR_TURBULENCE + turb = gaussian_turbulence(uv + tx * offset); + #else + turb = V(tx * offset); + #endif + + #ifdef BLUR_CONFINEMENT + confine = gaussian_confinement(uv + tx * offset); + #else + confine = C(tx * offset); + #endif + + #ifdef BLUR_VELOCITY + vel = gaussian_velocity(uv + tx * offset); + #else + vel = N(tx * offset); + #endif + + // an alternative, but seems to give less smooth results: + // offset += (1.0 / float(ADVECTION_STEPS)) * ... + offset = (float(i+1) / float(ADVECTION_STEPS)) * - ADVECTION_SCALE * (ADVECTION_VELOCITY * vel.xy + ADVECTION_TURBULENCE * turb - ADVECTION_CONFINEMENT * confine + ADVECTION_DIVERGENCE * div); + + div = diff(uv + tx * DIVERGENCE_LOOKAHEAD * offset); + + lapl = vector_laplacian(uv + tx * LAPLACIAN_LOOKAHEAD * offset); + + adv += N(tx * offset); + + delta_v += VELOCITY_LAPLACIAN * lapl + VELOCITY_TURBULENCE * turb + VELOCITY_CONFINEMENT * confine - DAMPING * vel.xy - DIVERGENCE_MINIMIZATION * div; + } + adv /= float(ADVECTION_STEPS); + delta_v /= float(ADVECTION_STEPS); + #else + #ifdef BLUR_TURBULENCE + turb = gaussian_turbulence(uv); + #else + turb = V(); + #endif + + #ifdef BLUR_CONFINEMENT + confine = gaussian_confinement(uv); + #else + confine = C(); + #endif + + #ifdef BLUR_VELOCITY + vel = gaussian_velocity(uv); + #else + vel = N(); + #endif + + offset = - ADVECTION_SCALE * (ADVECTION_VELOCITY * vel.xy + ADVECTION_TURBULENCE * turb - ADVECTION_CONFINEMENT * confine + ADVECTION_DIVERGENCE * div); + + div = diff(uv + tx * DIVERGENCE_LOOKAHEAD * offset); + + lapl = vector_laplacian(uv + tx * LAPLACIAN_LOOKAHEAD * offset); + + delta_v += VELOCITY_LAPLACIAN * lapl + VELOCITY_TURBULENCE * turb + VELOCITY_CONFINEMENT * confine - DAMPING * vel.xy - DIVERGENCE_MINIMIZATION * div; + + for (int i = 0; i < ADVECTION_STEPS; i++) { + adv += N((float(i+1) / float(ADVECTION_STEPS)) * tx * offset); + } + adv /= float(ADVECTION_STEPS); + #endif + + + + // define a pump, either at the center of the screen, + // or alternating at the sides of the screen. + vec2 pq = 2.0*(uv*2.0-1.0) * vec2(1,tx.x/tx.y); + #ifdef CENTER_PUMP + vec2 pump = sin(PUMP_CYCLE*iTime)*PUMP_SCALE*pq.xy / (dot(pq,pq)+0.01); + #else + vec2 pump = vec2(0); + #define AMP 15.0 + #define SCL -50.0 + float uvy0 = exp(SCL*pow(pq.y,2.0)); + float uvx0 = exp(SCL*pow(uv.x,2.0)); + pump += -AMP*vec2(max(0.0,cos(PUMP_CYCLE*iTime))*PUMP_SCALE*uvx0*uvy0,0); + + float uvy1 = exp(SCL*pow(pq.y,2.0)); + float uvx1 = exp(SCL*pow(1.0 - uv.x,2.0)); + pump += AMP*vec2(max(0.0,cos(PUMP_CYCLE*iTime + 3.1416))*PUMP_SCALE*uvx1*uvy1,0); + + float uvy2 = exp(SCL*pow(pq.x,2.0)); + float uvx2 = exp(SCL*pow(uv.y,2.0)); + pump += -AMP*vec2(0,max(0.0,sin(PUMP_CYCLE*iTime))*PUMP_SCALE*uvx2*uvy2); + + float uvy3 = exp(SCL*pow(pq.x,2.0)); + float uvx3 = exp(SCL*pow(1.0 - uv.y,2.0)); + pump += AMP*vec2(0,max(0.0,sin(PUMP_CYCLE*iTime + 3.1416))*PUMP_SCALE*uvx3*uvy3); + #endif + + fragColor = mix(adv + vec4(VELOCITY_SCALE * (delta_v + pump), offset), init, UPDATE_SMOOTHING); + + if (iMouse.z > 0.0) { + vec4 mouseUV = iMouse / iResolution.xyxy; + vec2 delta = normz(mouseUV.zw - mouseUV.xy); + vec2 md = (mouseUV.xy - uv) * vec2(1.0,tx.x/tx.y); + float amp = exp(max(-12.0,-dot(md,md)/MOUSE_RADIUS)); + fragColor.xy += VELOCITY_SCALE * MOUSE_AMP * clamp(amp * delta,-1.0,1.0); + } + + // Adding a very small amount of noise on init fixes subtle numerical precision blowup problems + if (iFrame==0) fragColor=1e-6*rand4(fragCoord, iResolution.xy, iFrame); +} diff --git a/tools/packsrc/Multiscale MIP Fluid/shaders/Buffer B.frag b/tools/packsrc/Multiscale MIP Fluid/shaders/Buffer B.frag new file mode 100644 index 0000000..de643cc --- /dev/null +++ b/tools/packsrc/Multiscale MIP Fluid/shaders/Buffer B.frag @@ -0,0 +1,96 @@ +#define TURB_CH xy +#define TURB_SAMPLER iChannel0 +#define DEGREE TURBULENCE_SCALES + +#define D(d) textureLod(TURB_SAMPLER, fract(uv+d), mip).TURB_CH + +void tex(vec2 uv, inout mat3 mx, inout mat3 my, int degree) { + vec2 texel = 1.0/iResolution.xy; + float stride = float(1 << degree); + float mip = float(degree); + vec4 t = stride * vec4(texel, -texel.y, 0); + + vec2 d = D( t.ww); vec2 d_n = D( t.wy); vec2 d_e = D( t.xw); + vec2 d_s = D( t.wz); vec2 d_w = D(-t.xw); vec2 d_nw = D(-t.xz); + vec2 d_sw = D(-t.xy); vec2 d_ne = D( t.xy); vec2 d_se = D( t.xz); + + mx = mat3(d_nw.x, d_n.x, d_ne.x, + d_w.x, d.x, d_e.x, + d_sw.x, d_s.x, d_se.x); + + my = mat3(d_nw.y, d_n.y, d_ne.y, + d_w.y, d.y, d_e.y, + d_sw.y, d_s.y, d_se.y); +} + +float reduce(mat3 a, mat3 b) { + mat3 p = matrixCompMult(a, b); + return p[0][0] + p[0][1] + p[0][2] + + p[1][0] + p[1][1] + p[1][2] + + p[2][0] + p[2][1] + p[2][2]; +} + +void turbulence(vec2 fragCoord, inout vec2 turb, inout float curl) +{ + vec2 uv = fragCoord.xy / iResolution.xy; + + mat3 turb_xx = (2.0 - TURB_ISOTROPY) * mat3( + 0.125, 0.25, 0.125, + -0.25, -0.5, -0.25, + 0.125, 0.25, 0.125 + ); + + mat3 turb_yy = (2.0 - TURB_ISOTROPY) * mat3( + 0.125, -0.25, 0.125, + 0.25, -0.5, 0.25, + 0.125, -0.25, 0.125 + ); + + mat3 turb_xy = TURB_ISOTROPY * mat3( + 0.25, 0.0, -0.25, + 0.0, 0.0, 0.0, + -0.25, 0.0, 0.25 + ); + + const float norm = 8.8 / (4.0 + 8.0 * CURL_ISOTROPY); // 8.8 takes the isotropy as 0.6 + float c0 = CURL_ISOTROPY; + + mat3 curl_x = mat3( + c0, 1.0, c0, + 0.0, 0.0, 0.0, + -c0, -1.0, -c0 + ); + + mat3 curl_y = mat3( + c0, 0.0, -c0, + 1.0, 0.0, -1.0, + c0, 0.0, -c0 + ); + + mat3 mx, my; + vec2 v = vec2(0); + float turb_wc, curl_wc = 0.0; + curl = 0.0; + for (int i = 0; i < DEGREE; i++) { + tex(uv, mx, my, i); + float turb_w = TURB_W_FUNCTION; + float curl_w = CURL_W_FUNCTION; + v += turb_w * vec2(reduce(turb_xx, mx) + reduce(turb_xy, my), reduce(turb_yy, my) + reduce(turb_xy, mx)); + curl += curl_w * (reduce(curl_x, mx) + reduce(curl_y, my)); + turb_wc += turb_w; + curl_wc += curl_w; + } + + turb = float(DEGREE) * v / turb_wc; + curl = norm * curl / curl_wc; +} + +void mainImage( out vec4 fragColor, in vec2 fragCoord ) +{ + vec2 turb; + float curl; + turbulence(fragCoord, turb, curl); + fragColor = vec4(turb,0,curl); + // Adding a very small amount of noise on init fixes subtle numerical precision blowup problems + if (iFrame==0) fragColor=1e-6*rand4(fragCoord, iResolution.xy, iFrame); +} \ No newline at end of file diff --git a/tools/packsrc/Multiscale MIP Fluid/shaders/Buffer C.frag b/tools/packsrc/Multiscale MIP Fluid/shaders/Buffer C.frag new file mode 100644 index 0000000..8c0f35b --- /dev/null +++ b/tools/packsrc/Multiscale MIP Fluid/shaders/Buffer C.frag @@ -0,0 +1,82 @@ +#define CURL_CH w +#define CURL_SAMPLER iChannel0 +#define DEGREE VORTICITY_SCALES + +#define CURL(d) textureLod(CURL_SAMPLER, fract(uv+(d+0.0)), mip).CURL_CH +#define D(d) abs(textureLod(CURL_SAMPLER, fract(uv+d), mip).CURL_CH) + +void tex(vec2 uv, inout mat3 mc, inout float curl, int degree) { + vec2 texel = 1.0/iResolution.xy; + float stride = float(1 << degree); + float mip = float(degree); + vec4 t = stride * vec4(texel, -texel.y, 0); + + float d = D( t.ww); float d_n = D( t.wy); float d_e = D( t.xw); + float d_s = D( t.wz); float d_w = D(-t.xw); float d_nw = D(-t.xz); + float d_sw = D(-t.xy); float d_ne = D( t.xy); float d_se = D( t.xz); + + mc = mat3(d_nw, d_n, d_ne, + d_w, d, d_e, + d_sw, d_s, d_se); + + curl = CURL(); + +} + +float reduce(mat3 a, mat3 b) { + mat3 p = matrixCompMult(a, b); + return p[0][0] + p[0][1] + p[0][2] + + p[1][0] + p[1][1] + p[1][2] + + p[2][0] + p[2][1] + p[2][2]; +} + +vec2 confinement(vec2 fragCoord) +{ + vec2 uv = fragCoord.xy / iResolution.xy; + + float k0 = CONF_ISOTROPY; + float k1 = 1.0 - 2.0*(CONF_ISOTROPY); + + mat3 conf_x = mat3( + -k0, -k1, -k0, + 0.0, 0.0, 0.0, + k0, k1, k0 + ); + + mat3 conf_y = mat3( + -k0, 0.0, k0, + -k1, 0.0, k1, + -k0, 0.0, k0 + ); + + mat3 mc; + vec2 v = vec2(0); + float curl; + + float cacc = 0.0; + vec2 nacc = vec2(0); + float wc = 0.0; + for (int i = 0; i < DEGREE; i++) { + tex(uv, mc, curl, i); + float w = CONF_W_FUNCTION; + vec2 n = w * normz(vec2(reduce(conf_x, mc), reduce(conf_y, mc))); + v += curl * n; + cacc += curl; + nacc += n; + wc += w; + } + + #ifdef PREMULTIPLY_CURL + return v / wc; + #else + return nacc * cacc / wc; + #endif + +} + +void mainImage( out vec4 fragColor, in vec2 fragCoord ) +{ + fragColor = vec4(confinement(fragCoord),0,0); + // Adding a very small amount of noise on init fixes subtle numerical precision blowup problems + if (iFrame==0) fragColor=1e-6*rand4(fragCoord, iResolution.xy, iFrame); +} \ No newline at end of file diff --git a/tools/packsrc/Multiscale MIP Fluid/shaders/Buffer D.frag b/tools/packsrc/Multiscale MIP Fluid/shaders/Buffer D.frag new file mode 100644 index 0000000..24e4b82 --- /dev/null +++ b/tools/packsrc/Multiscale MIP Fluid/shaders/Buffer D.frag @@ -0,0 +1,115 @@ +#define VORT_CH xy +#define VORT_SAMPLER iChannel0 +#define POIS_SAMPLER iChannel1 +#define POIS_CH x +#define DEGREE POISSON_SCALES + +#define D(d) textureLod(VORT_SAMPLER, fract(uv+d), mip).VORT_CH +#define P(d) textureLod(POIS_SAMPLER, fract(uv+d), mip).POIS_CH + +float laplacian_poisson(vec2 fragCoord) { + const float _K0 = -20.0/6.0, _K1 = 4.0/6.0, _K2 = 1.0/6.0; + vec2 texel = 1.0/iResolution.xy; + vec2 uv = fragCoord * texel; + vec4 t = vec4(texel, -texel.y, 0); + float mip = 0.0; + + float p = P( t.ww); float p_n = P( t.wy); float p_e = P( t.xw); + float p_s = P( t.wz); float p_w = P(-t.xw); float p_nw = P(-t.xz); + float p_sw = P(-t.xy); float p_ne = P( t.xy); float p_se = P( t.xz); + + return _K0 * p + _K1 * (p_e + p_w + p_n + p_s) + _K2 * (p_ne + p_nw + p_se + p_sw); +} + +void tex(vec2 uv, inout mat3 mx, inout mat3 my, inout mat3 mp, int degree) { + vec2 texel = 1.0/iResolution.xy; + float stride = float(1 << degree); + float mip = float(degree); + vec4 t = stride * vec4(texel, -texel.y, 0); + + vec2 d = D( t.ww); vec2 d_n = D( t.wy); vec2 d_e = D( t.xw); + vec2 d_s = D( t.wz); vec2 d_w = D(-t.xw); vec2 d_nw = D(-t.xz); + vec2 d_sw = D(-t.xy); vec2 d_ne = D( t.xy); vec2 d_se = D( t.xz); + + float p = P( t.ww); float p_n = P( t.wy); float p_e = P( t.xw); + float p_s = P( t.wz); float p_w = P(-t.xw); float p_nw = P(-t.xz); + float p_sw = P(-t.xy); float p_ne = P( t.xy); float p_se = P( t.xz); + + mx = mat3(d_nw.x, d_n.x, d_ne.x, + d_w.x, d.x, d_e.x, + d_sw.x, d_s.x, d_se.x); + + my = mat3(d_nw.y, d_n.y, d_ne.y, + d_w.y, d.y, d_e.y, + d_sw.y, d_s.y, d_se.y); + + mp = mat3(p_nw, p_n, p_ne, + p_w, p, p_e, + p_sw, p_s, p_se); +} + +float reduce(mat3 a, mat3 b) { + mat3 p = matrixCompMult(a, b); + return p[0][0] + p[0][1] + p[0][2] + + p[1][0] + p[1][1] + p[1][2] + + p[2][0] + p[2][1] + p[2][2]; +} + +vec2 pois(vec2 fragCoord) +{ + vec2 uv = fragCoord.xy / iResolution.xy; + + float k0 = POIS_ISOTROPY; + float k1 = 1.0 - 2.0*(POIS_ISOTROPY); + + mat3 pois_x = mat3( + k0, 0.0, -k0, + k1, 0.0, -k1, + k0, 0.0, -k0 + ); + + mat3 pois_y = mat3( + -k0, -k1, -k0, + 0.0, 0.0, 0.0, + k0, k1, k0 + ); + + mat3 gauss = mat3( + 0.0625, 0.125, 0.0625, + 0.125, 0.25, 0.125, + 0.0625, 0.125, 0.0625 + ); + + mat3 mx, my, mp; + vec2 v = vec2(0); + + float wc = 0.0; + for (int i = 0; i < DEGREE; i++) { + tex(uv, mx, my, mp, i); + float w = POIS_W_FUNCTION; + wc += w; + v += w * vec2(reduce(pois_x, mx) + reduce(pois_y, my), reduce(gauss, mp)); + } + + return v / wc; + +} + +#define V(d) textureLod(VORT_SAMPLER, fract(uv+d), mip).zw + +void mainImage( out vec4 fragColor, in vec2 fragCoord ) +{ + + vec2 p = pois(fragCoord); + #ifdef USE_PRESSURE_ADVECTION + float mip = 0.0; + vec2 tx = 1.0 / iResolution.xy; + vec2 uv = fragCoord * tx; + float prev = P(0.0002 * PRESSURE_ADVECTION * tx * V(vec2(0))); + fragColor = vec4(mix(p.x + p.y, prev + PRESSURE_LAPLACIAN * laplacian_poisson(fragCoord), PRESSURE_UPDATE_SMOOTHING)); + #else + fragColor = vec4(p.x + p.y); + #endif + // Adding a very small amount of noise on init fixes subtle numerical precision blowup problems + if (iFrame==0) fragColor=1e-6*rand4(fragCoord, iResolution.xy, iFrame); +} \ No newline at end of file diff --git a/tools/packsrc/Multiscale MIP Fluid/shaders/Common.frag b/tools/packsrc/Multiscale MIP Fluid/shaders/Common.frag new file mode 100644 index 0000000..8c3cc71 --- /dev/null +++ b/tools/packsrc/Multiscale MIP Fluid/shaders/Common.frag @@ -0,0 +1,230 @@ +/* + Number of scales to use in computation of each value. Lowering these will change the + result drastically, also note that the heightmap is used for rendering, so changing + POISSON_SCALES will alter the appearance of lighting/shadows. Weighting functions + for each scale are defined below. +*/ +#define TURBULENCE_SCALES 11 +#define VORTICITY_SCALES 11 +#define POISSON_SCALES 11 + +// If defined, recalculate the advection offset at every substep. Otherwise, subdivide the offset. +// Leaving this undefined is much cheaper for large ADVECTION_STEPS but yields worse results; this +// can be improved by defining the BLUR_* options below. +#define RECALCULATE_OFFSET +// Number of advection substeps to use. Useful to increase this for large ADVECTION_SCALE. Must be >= 1 +#define ADVECTION_STEPS 3 +// Advection distance multiplier. +#define ADVECTION_SCALE 40.0 +// Scales the effect of turbulence on advection. +#define ADVECTION_TURBULENCE 1.0 +// Scales the effect of turbulence on velocity. Use small values. +#define VELOCITY_TURBULENCE 0.0000 +// Scales the effect of vorticity confinement on velocity. +#define VELOCITY_CONFINEMENT 0.01 +// Scales diffusion. +#define VELOCITY_LAPLACIAN 0.02 +// Scales the effect of vorticity confinement on advection. +#define ADVECTION_CONFINEMENT 0.6 +// Scales the effect of divergence on advection. +#define ADVECTION_DIVERGENCE 0.0 +// Scales the effect of velocity on advection. +#define ADVECTION_VELOCITY -0.05 +// Amount of divergence minimization. Too much will cause instability. +#define DIVERGENCE_MINIMIZATION 0.1 +// If 0.0, compute the gradient at (0,0). If 1.0, compute the gradient at the advection distance. +#define DIVERGENCE_LOOKAHEAD 1.0 +// If 0.0, compute the laplacian at (0,0). If 1.0, compute the laplacian at the advection distance. +#define LAPLACIAN_LOOKAHEAD 1.0 +// Scales damping force. +#define DAMPING 0.0001 +// Overall velocity multiplier +#define VELOCITY_SCALE 1.0 +// Mixes the previous velocity with the new velocity (range 0..1). +#define UPDATE_SMOOTHING 0.0 + + + +// These control the (an)isotropy of the various kernels +#define TURB_ISOTROPY 0.9 // [0..2.0] +#define CURL_ISOTROPY 0.6 // >= 0 +#define CONF_ISOTROPY 0.25 // [0..0.5] +#define POIS_ISOTROPY 0.16 // [0..0.5] + + + +// If defined, multiply curl by vorticity, then accumulate. If undefined, accumulate, then multiply. +#define PREMULTIPLY_CURL + + + +// These apply a gaussian blur to the various values used in the velocity/advection update. More expensive when defined. +//#define BLUR_TURBULENCE +//#define BLUR_CONFINEMENT +//#define BLUR_VELOCITY + + + +// These define weighting functions applied at each of the scales, i=0 being the finest detail. +//#define TURB_W_FUNCTION 1.0/float(i+1) +#define TURB_W_FUNCTION 1.0 +//#define TURB_W_FUNCTION float(i+1) + +//#define CURL_W_FUNCTION 1.0/float(1 << i) +#define CURL_W_FUNCTION 1.0/float(i+1) +//#define CURL_W_FUNCTION 1.0 + +//#define CONF_W_FUNCTION 1.0/float(i+1) +#define CONF_W_FUNCTION 1.0 +//#define CONF_W_FUNCTION float(i+1) +//#define CONF_W_FUNCTION float(1 << i) + +//#define POIS_W_FUNCTION 1.0 +#define POIS_W_FUNCTION 1.0/float(i+1) +//#define POIS_W_FUNCTION 1.0/float(1 << i) +//#define POIS_W_FUNCTION float(i+1) +//#define POIS_W_FUNCTION float(1 << i) + + + +// These can help reduce mipmap artifacting, especially when POIS_W_FUNCTION emphasizes large scales. +//#define USE_PRESSURE_ADVECTION +// Scales pressure advection distance. +#define PRESSURE_ADVECTION 0.0002 // higher values more likely to cause blowup if laplacian > 0.0 +// Pressure diffusion. +#define PRESSURE_LAPLACIAN 0.1 // [0..0.3] higher values more likely to cause blowup +// Mixes the previous pressure with the new pressure. +#define PRESSURE_UPDATE_SMOOTHING 0.0 // [0..1] + + + +// Scales mouse interaction effect +#define MOUSE_AMP 0.05 +// Scales mouse interaction radius +#define MOUSE_RADIUS 0.001 + + + +// If defined, "pump" velocity in the center of the screen. If undefined, alternate pumping from the sides of the screen. +//#define CENTER_PUMP +// Amplitude and cycle time for the "pump" at the center of the screen. +#define PUMP_SCALE 0.001 +#define PUMP_CYCLE 0.2 + + +vec4 normz(vec4 x) { + return x.xyz == vec3(0) ? vec4(0,0,0,x.w) : vec4(normalize(x.xyz),0); +} + +vec3 normz(vec3 x) { + return x == vec3(0) ? vec3(0) : normalize(x); +} + +vec2 normz(vec2 x) { + return x == vec2(0) ? vec2(0) : normalize(x); +} + + +// Only used for rendering, but useful helpers +float softmax(float a, float b, float k) { + return log(exp(k*a)+exp(k*b))/k; +} + +float softmin(float a, float b, float k) { + return -log(exp(-k*a)+exp(-k*b))/k; +} + +vec4 softmax(vec4 a, vec4 b, float k) { + return log(exp(k*a)+exp(k*b))/k; +} + +vec4 softmin(vec4 a, vec4 b, float k) { + return -log(exp(-k*a)+exp(-k*b))/k; +} + +float softclamp(float a, float b, float x, float k) { + return (softmin(b,softmax(a,x,k),k) + softmax(a,softmin(b,x,k),k)) / 2.0; +} + +vec4 softclamp(vec4 a, vec4 b, vec4 x, float k) { + return (softmin(b,softmax(a,x,k),k) + softmax(a,softmin(b,x,k),k)) / 2.0; +} + +vec4 softclamp(float a, float b, vec4 x, float k) { + return (softmin(vec4(b),softmax(vec4(a),x,k),k) + softmax(vec4(a),softmin(vec4(b),x,k),k)) / 2.0; +} + + + + +// GGX from Noby's Goo shader https://www.shadertoy.com/view/lllBDM + +// MIT License: https://opensource.org/licenses/MIT +float G1V(float dnv, float k){ + return 1.0/(dnv*(1.0-k)+k); +} + +float ggx(vec3 n, vec3 v, vec3 l, float rough, float f0){ + float alpha = rough*rough; + vec3 h = normalize(v+l); + float dnl = clamp(dot(n,l), 0.0, 1.0); + float dnv = clamp(dot(n,v), 0.0, 1.0); + float dnh = clamp(dot(n,h), 0.0, 1.0); + float dlh = clamp(dot(l,h), 0.0, 1.0); + float f, d, vis; + float asqr = alpha*alpha; + const float pi = 3.14159; + float den = dnh*dnh*(asqr-1.0)+1.0; + d = asqr/(pi * den * den); + dlh = pow(1.0-dlh, 5.0); + f = f0 + (1.0-f0)*dlh; + float k = alpha/1.0; + vis = G1V(dnl, k)*G1V(dnv, k); + float spec = dnl * d * f * vis; + return spec; +} +// End Noby's GGX + + +// Modified from Shane's Bumped Sinusoidal Warp shadertoy here: +// https://www.shadertoy.com/view/4l2XWK +vec3 light(vec2 uv, float BUMP, float SRC_DIST, vec2 dxy, float iTime, inout vec3 avd) { + vec3 sp = vec3(uv-0.5, 0); + vec3 light = vec3(cos(iTime/2.0)*0.5, sin(iTime/2.0)*0.5, -SRC_DIST); + vec3 ld = light - sp; + float lDist = max(length(ld), 0.001); + ld /= lDist; + avd = reflect(normalize(vec3(BUMP*dxy, -1.0)), vec3(0,1,0)); + return ld; +} +// End Shane's bumpmapping section + + +// The MIT License +// Copyright © 2017 Inigo Quilez +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +float hash1( uint n ) +{ + // integer hash copied from Hugo Elias + n = (n << 13U) ^ n; + n = n * (n * n * 15731U + 789221U) + 1376312589U; + return float( n & uvec3(0x7fffffffU))/float(0x7fffffff); +} + +vec3 hash3( uint n ) +{ + // integer hash copied from Hugo Elias + n = (n << 13U) ^ n; + n = n * (n * n * 15731U + 789221U) + 1376312589U; + uvec3 k = n * uvec3(n,n*16807U,n*48271U); + return vec3( k & uvec3(0x7fffffffU))/float(0x7fffffff); +} + +// a simple modification for this shader to get a vec4 +vec4 rand4( vec2 fragCoord, vec2 iResolution, int iFrame ) { + uvec2 p = uvec2(fragCoord); + uvec2 r = uvec2(iResolution); + uint c = p.x + r.x*p.y + r.x*r.y*uint(iFrame); + return vec4(hash3(c),hash1(c + 75132895U)); +} +// End IQ's integer hash \ No newline at end of file diff --git a/tools/packsrc/Multiscale MIP Fluid/shaders/Image.frag b/tools/packsrc/Multiscale MIP Fluid/shaders/Image.frag new file mode 100644 index 0000000..1d07f22 --- /dev/null +++ b/tools/packsrc/Multiscale MIP Fluid/shaders/Image.frag @@ -0,0 +1,139 @@ +/* + Created by Cornus Ammonis (2019) + Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. +*/ + +/* + This is a mipmap-based approach to multiscale fluid dynamics. + + Check the Common tab for lots of configurable parameters. + + Click to interact with your mouse. I'd recommend turning off the "pump" by + setting PUMP_SCALE to 0.0 on line 113 of the Common tab to play around with + just mouse interaction. + + Buffer B is a multiscale method for computing turbulence along the lines of + the Large Eddy Simulation method; multiscale curl is also computed in Buffer B, + to be passed along to Buffer C. + + Buffer C is a fairly conventional Vorticity Confinement method, also multiscale, + using the curl computed in Buffer B. It probably makes more sense to compute + each curl scale separately before accumulating, but for the sake of efficiency + and simplicity (a larger kernel would be required), I haven't done that here. + + Buffer D is a multiscale Poisson solver, which converges rapidly but not to an + exact solution - this nonetheless works well for the purposes of divergence + minimization since we only need the gradient, with allowances for the choice of + scale weighting. + + Buffer A computes subsampled advection and velocity update steps, sampling + from Buffers B, C, and D with a variety of smoothing options. + + There are a number of options included to make this run faster. + + Using mipmaps in this way has a variety of advantages: + + 1. The scale computations have no duplicative or dependent reads, we only need + that for advection. + 2. No randomness or stochastic sampling is involved. + 3. The total number of reads can be greatly reduced for a comparable level of + fidelity to some other methods. + 4. We can easily sample the entire buffer in one pass (on average). + 5. The computational complexity is deferred to mipmap generation (though with + a large coefficient), because: + 6. The algorithm itself is O(n) with a fixed number of scales (or we could + potentially do scale calculations in parallel with mipmap generation, + equalling mipmap generation complexity at O(nlogn)) + + Notable downsides: + + 1. Using mipmaps introduces a number of issues, namely: + a. Mipmaps can introduce artifacts due to interpolation and downsampling. + Using Gaussian pyramids, or some other lowpass filtering method would + be better. + b. Using higher-order sampling of the texture buffer (e.g. bicubic) would + also be better, but that would limit our performance gains. + c. NPOT textures are problematic (as always). They can introduce weird + anisotropy issues among other things. + 2. Stochastic or large-kernel methods are a better approximation to the true + sampling distribution approximated here, for a large-enough number of + samples. + 3. We're limited in how we construct our scale-space. Is a power-of-two stride + length on both axes always ideal, even along diagonals? I'm not particularly + sure. There are clever wavelet methods out there for Navier-Stokes solvers, + and LES in particular, too. + +*/ + +#define BUMP 3200.0 + +#define D(d) -textureLod(iChannel1, fract(uv+(d+0.0)), mip).w + +vec2 diff(vec2 uv, float mip) { + vec2 texel = 1.0/iResolution.xy; + vec4 t = float(1< 0.) return sI; + vec2 l = (s.xz*.5+.5+fp-p.xz) / dir.xz; + t += min(l.x, l.y) + .1; + } + return vec4(-1.); +} + +void mainImage(out vec4 o, vec2 u) { + mat3 rot = rotationMatrix(vec3(-.7, iTime*.15, 0.)); + o = vec4(0.); + for(int y = 1; y <= AA; y++) { + for(int x = 1; x <= AA; x++) { + vec2 uv = (floor(u)+vec2(x, y)/float(AA+1)-iResolution.xy*.5) / iResolution.y; + vec3 pos = vec3(0., 0., 7.) * rot; + vec3 dir = normalize(vec3(uv, -1.)) * rot; + pos.x += iTime*2.; + float att = 1.; + float d = 10.; + for(int i = 0; i < 2; i++) { + vec4 t = sceneI(pos, dir); + if(t.w < 0.) break; + if(i == 0) d = t.w; + pos += t.w*dir; + vec3 orientation = normalize(vec3(cos(floor(pos.xz) - iTime), .5).xzy); + vec3 emission = abs(dot(t.xyz, orientation)) < .2 ? (orientation.yxz+1.) : vec3(.0); + emission *= 4.*abs(fract(orientation.y*5.)*2.-1.); + float f = fresnel(dir, t.xyz); + o.rgb += att*(1.-f) * emission; + att *= f; + dir = reflect(dir, t.xyz); + } + o += vec4(att*vec3(1., 1.5, 2.)*step(0., dir.y), d); + } + } + o /= float(AA*AA); +} \ No newline at end of file diff --git a/tools/packsrc/Neon Ball Pit/shaders/Buffer B.frag b/tools/packsrc/Neon Ball Pit/shaders/Buffer B.frag new file mode 100644 index 0000000..2bb27ce --- /dev/null +++ b/tools/packsrc/Neon Ball Pit/shaders/Buffer B.frag @@ -0,0 +1,3 @@ +void mainImage(out vec4 o, vec2 u) { + o = sampleDof(iChannel0, iResolution.xy, vec2(.71, .71), u); +} \ No newline at end of file diff --git a/tools/packsrc/Neon Ball Pit/shaders/Common.frag b/tools/packsrc/Neon Ball Pit/shaders/Common.frag new file mode 100644 index 0000000..f70015d --- /dev/null +++ b/tools/packsrc/Neon Ball Pit/shaders/Common.frag @@ -0,0 +1,47 @@ +// uncomment this line for a faster version +//#define LOW_QUALITY + + +#ifdef LOW_QUALITY +#define AA 1 +#define DOF_SAMPLES 3 +#else +#define AA 2 +#define DOF_SAMPLES 6 +#endif + + +#define APERTURE .01 +#define DOF_CLAMPING .7 +#define FOCAL_DISTANCE 8. + +vec4 sampleDof(sampler2D channel, vec2 channelDim, vec2 dir, vec2 u) { + float screenAperture = channelDim.y*APERTURE; + float sampleToRad = screenAperture * DOF_CLAMPING / float(DOF_SAMPLES); + vec4 o = vec4(0); + float sum = 0.; + for(int i = -DOF_SAMPLES; i <= DOF_SAMPLES; i++) { + float sRad = float(i)*sampleToRad; + vec4 p = texture(channel, (u+dir*sRad)/channelDim); + float rad = min(abs(p.a-FOCAL_DISTANCE)/p.a, DOF_CLAMPING); + float influence = clamp((rad*screenAperture - abs(sRad)) + .5, 0., 1.) / (rad*rad+.001); + o += influence * p; + sum += influence; + } + return o/sum; +} + +float fresnel(const vec3 dir, const vec3 n) { + const float ior = 1.8; + const float r0 = ((1. - ior) / (1. + ior)) * ((1. - ior) / (1. + ior)); + float x = 1.+dot(n, dir); + return r0 + (1.-r0) * x*x*x*x*x; +} + +mat3 rotationMatrix(const vec3 rotation) { + vec3 c = cos(rotation), s = sin(rotation); + mat3 rx = mat3(1, 0, 0, 0, c.x, -s.x, 0, s.x, c.x); + mat3 ry = mat3(c.y, 0, -s.y, 0, 1, 0, s.y, 0, c.y); + mat3 rz = mat3(c.z, -s.z, 0, s.z, c.z, 0, 0, 0, 1); + return rz * rx * ry; +} \ No newline at end of file diff --git a/tools/packsrc/Neon Ball Pit/shaders/Image.frag b/tools/packsrc/Neon Ball Pit/shaders/Image.frag new file mode 100644 index 0000000..06b4d75 --- /dev/null +++ b/tools/packsrc/Neon Ball Pit/shaders/Image.frag @@ -0,0 +1,8 @@ +void mainImage(out vec4 o, vec2 u) { + o = sampleDof(iChannel0, iResolution.xy, vec2(.71, -.71), u); + float r = floor(log2(iResolution.y) - 5.5) + .5; + for(int i = 0; i < 4; i++) + o += texture(iChannel0, u/iResolution.xy, r+float(i*2))*.03; + vec3 x = o.rgb; + o = vec4((x*(2.51*x+.03))/(x*(2.43*x+.59)+.14), 1.); +} \ No newline at end of file diff --git a/tools/packsrc/Neon World/images/iChannel1.png b/tools/packsrc/Neon World/images/iChannel1.png new file mode 100644 index 0000000000000000000000000000000000000000..04c0e1ef502cc401ad6f06994306e103a63ff562 GIT binary patch literal 48250 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 O0000 maxDist) + { + break; + } + } + + return vec3(dist.x, totalDist, dist.y); +} + +vec3 rayMarchReflection(vec3 rayDir, vec3 cameraOrigin) +{ + const int maxItter = 30; + const float maxDist = 20.0; + + float totalDist = 0.0; + vec3 pos = cameraOrigin; + vec4 dist = vec4(epsilon); + + for(int i = 0; i < maxItter; i++) + { + dist = distfunc(pos); + totalDist += dist.x; + pos += dist.x * rayDir; + + if(dist.x < epsilon || totalDist > maxDist) + { + break; + } + } + + return vec3(dist.x, totalDist, dist.y); +} + +//Inpired From iq's ao : +//https://www.shadertoy.com/view/Xds3zN +vec2 AOandFakeAreaLights(vec3 pos, vec3 n) +{ + vec4 res = vec4(0.0); + + for( int i=0; i<3; i++ ) + { + vec3 aopos = pos + n*0.3*float(i); + vec4 d = distfunc(aopos); + res += d; + } + + float ao = clamp(res.w, 0.0, 1.0); + float light = 1.0 - clamp(res.z*0.3, 0.0, 1.0); + + return vec2(ao, light * ao); +} + +//Camera Function by iq : +//https://www.shadertoy.com/view/Xds3zN +mat3 setCamera( in vec3 ro, in vec3 ta, float cr ) +{ + vec3 cw = normalize(ta-ro); + vec3 cp = vec3(sin(cr), cos(cr),0.0); + vec3 cu = normalize( cross(cw,cp) ); + vec3 cv = normalize( cross(cu,cw) ); + return mat3( cu, cv, cw ); +} + +//Normal and Curvature Function by Nimitz; +//https://www.shadertoy.com/view/Xts3WM +vec4 norcurv(in vec3 p) +{ + vec2 e = vec2(-epsilon, epsilon); + float t1 = distfunc(p + e.yxx).x, t2 = distfunc(p + e.xxy).x; + float t3 = distfunc(p + e.xyx).x, t4 = distfunc(p + e.yyy).x; + + float curv = .25/e.y*(t1 + t2 + t3 + t4 - 4.0 * distfunc(p).x); + return vec4(normalize(e.yxx*t1 + e.xxy*t2 + e.xyx*t3 + e.yyy*t4), curv); +} + +vec4 lighting(vec3 n, vec3 rayDir, vec3 reflectDir, vec3 pos) +{ + vec3 light = vec3(0.0, 0.0, 2.0 + iTime * speed); + vec3 lightVec = light - pos; + vec3 lightDir = normalize(lightVec); + float atten = clamp(1.0 - length(lightVec)*0.1, 0.0, 1.0); + float spec = pow(max(0.0, dot(reflectDir, lightDir)), 10.0); + float rim = (1.0 - max(0.0, dot(-n, rayDir))); + + return vec4(spec*atten*lightColor2 + rim*0.2, rim); +} + +vec3 color(float id, vec3 pos) +{ + vec2 fp = vec2(1.0) - linearStep2(vec2(0.0), vec2(0.01), abs(fract(pos.xz * vec2(0.25, 1.0) + vec2(0.0, 0.5)) - 0.5)); + float s = fp.y + fp.x; + return mix(wallsColor + s*lightColor*0.5, lightColor, id); +} + +vec4 finalColor(vec3 rayDir, vec3 reflectDir, vec3 pos, vec3 normal, float ao, float id) +{ + vec4 l = lighting(normal, rayDir, reflectDir, pos); + vec3 col = color(id, pos); + float ao1 = 0.5 * ao + 0.5; + float ao2 = 0.25 * ao + 0.75; + vec3 res = (mix(col * ao1, col, id) + l.xyz) * ao2; + return vec4(res, l.w); +} + +void mainImage( out vec4 fragColor, in vec2 fragCoord ) +{ + vec2 uv = fragCoord.xy/iResolution.xy; + + float move = iTime * speed; + vec2 sinMove = sin((move * pi) / 16.0 + vec2(1.0, -1.0)) * vec2(5.0, 0.35); + float camX = sinMove.x; + float camY = 0.0; + float camZ = -5.0 + move; + vec3 cameraOrigin = vec3(camX, camY, camZ); + + vec3 cameraTarget = vec3(0.0, 0.0, cameraOrigin.z + 10.0); + + vec2 screenPos = uv * 2.0 - 1.0; + + screenPos.x *= iResolution.x/iResolution.y; + + mat3 cam = setCamera(cameraOrigin, cameraTarget, sinMove.y); + + vec3 rayDir = cam*normalize(vec3(screenPos.xy,1.0)); + vec3 dist = rayMarch(rayDir, cameraOrigin); + + vec3 res; + vec2 fog; + + if(dist.x < epsilon) + { + vec3 pos = cameraOrigin + dist.y*rayDir; + vec4 n = norcurv(pos); + vec2 ao = AOandFakeAreaLights(pos, n.xyz); + vec3 r = reflect(rayDir, n.xyz); + vec3 rpos = pos + n.xyz*0.02; + vec3 reflectDist = rayMarchReflection(r, rpos); + fog = clamp(1.0 / exp(vec2(dist.y, reflectDist.y)*vec2(0.15, 0.2)), 0.0, 1.0); + vec4 direct = finalColor(rayDir, r, pos, n.xyz, ao.x, dist.z) + n.w*curvAmout; + + vec4 reflN; + vec2 reflAO; + vec3 reflFinal; + + if(reflectDist.x < epsilon) + { + vec3 reflPos = rpos + reflectDist.y*r; + reflN = norcurv(reflPos); + reflAO = AOandFakeAreaLights(reflPos, reflN.xyz); + vec3 rr = reflect(r, reflN.xyz); + vec4 refl = finalColor(r, rr, reflPos, reflN.xyz, reflAO.x, reflectDist.z); + vec3 reflAreaLights = reflAO.y * lightColor * 0.5; + reflFinal = (refl.xyz + reflN.w*curvAmout + reflAreaLights) * fog.y * reflAmout * direct.w; + } + else + { + reflFinal = vec3(0.0, 0.0, 0.0); + } + + vec3 areaLightsColor = ao.y * lightColor * 0.5; + + res = mix(fogColor, direct.xyz + reflFinal + areaLightsColor, fog.x); + } + else + { + res = fogColor; + fog = vec2(0.0); + } + + fragColor = vec4(res, (dist.z) * fog); +} \ No newline at end of file diff --git a/tools/packsrc/Neon World/shaders/Buffer B.frag b/tools/packsrc/Neon World/shaders/Buffer B.frag new file mode 100644 index 0000000..3603a69 --- /dev/null +++ b/tools/packsrc/Neon World/shaders/Buffer B.frag @@ -0,0 +1,31 @@ +const float radialBlurInstensity = 0.01; +const float speed = 3.0; +const float pi = 3.14159265359; + +void mainImage( out vec4 fragColor, in vec2 fragCoord ) +{ + float s = sin(iTime*speed * pi / 16.0 - 1.0); + vec2 radialBlurCenter = vec2((s * 0.5 + 0.5) * 0.5 + 0.25, abs(s)* 0.2 + 0.35); + + vec2 uv = fragCoord.xy/iResolution.xy; + vec2 uvCenter = uv - radialBlurCenter; + float c = length(uv - radialBlurCenter); + vec4 texBlurred = texture(iChannel0, uv); + + float itter = 0.0; + + for(float itter1 = 0.0; itter1 < 5.0; itter1++) + { + itter = itter1; + texBlurred += texture(iChannel0, uvCenter * (1.0 - radialBlurInstensity * + itter1 * c) + radialBlurCenter); + } + + vec4 res = texBlurred / itter; + + vec4 prev = texture(iChannel1, uv); + + float motionBlur = mix(res.w, prev.w, 0.75); + vec3 light = motionBlur * vec3(0.25, 0.5, 0.75); + fragColor = vec4(res.xyz + light*2.0, motionBlur); +} \ No newline at end of file diff --git a/tools/packsrc/Neon World/shaders/Image.frag b/tools/packsrc/Neon World/shaders/Image.frag new file mode 100644 index 0000000..3662f9f --- /dev/null +++ b/tools/packsrc/Neon World/shaders/Image.frag @@ -0,0 +1,15 @@ +void mainImage( out vec4 fragColor, in vec2 fragCoord ) +{ + vec2 uv = fragCoord.xy/iResolution.xy; + + float b = step(fract(uv.y * 50.0 + iTime), 0.5); + vec4 tex = texture(iChannel0, uv); + vec4 tex2 = texture(iChannel0, uv + vec2((b - 0.5)*0.005, 0.0)); + + vec2 vign = smoothstep(vec2(0.5, 1.5), vec2(1.0, 0.98 + b*0.02), vec2(length(uv - 0.5) * 2.0)); + + vec4 grain = texture(iChannel1, fragCoord.xy/256.0 + vec2(0.0, iTime*10.0)); + vec4 res = mix(tex, vec4(tex.x, tex.y, tex2.z, tex.w), vign.x); + vec4 col = res * vign.y * (0.85 + grain*0.15); + fragColor = pow(col*1.75, vec4(1.25)); +} \ No newline at end of file diff --git a/tools/packsrc/PolarVisualizer/pack.json b/tools/packsrc/PolarVisualizer/pack.json new file mode 100644 index 0000000..56eb522 --- /dev/null +++ b/tools/packsrc/PolarVisualizer/pack.json @@ -0,0 +1,21 @@ +{ + "author": "Lallis", + "name": "PolarVisualizer", + "version": "1.0.0", + "description": "Yet another audio visualizer. Tried to fake some depth with the light and reflection. Try reversing the band order.", + "license": "CC BY-NC-SA 3.0", + "engine": "shadertoy", + "id": "4lySzy", + "tags": [ + "reactive", + "2d" + ], + + "source": "./shaders/Image.frag.qsb", + "speed": 1.0, + + "channel0": + { + "type": 4 + } +} \ No newline at end of file diff --git a/tools/packsrc/PolarVisualizer/shaders/Image.frag b/tools/packsrc/PolarVisualizer/shaders/Image.frag new file mode 100644 index 0000000..df01c77 --- /dev/null +++ b/tools/packsrc/PolarVisualizer/shaders/Image.frag @@ -0,0 +1,133 @@ +#define time iTime +#define PI 3.14159265359 + +#define NUM_BANDS 32 + +//#define REVERSED + +float noise3D(vec3 p) +{ + return fract(sin(dot(p ,vec3(12.9898,78.233,12.7378))) * 43758.5453)*2.0-1.0; +} + +vec3 mixc(vec3 col1, vec3 col2, float v) +{ + v = clamp(v,0.0,1.0); + return col1+v*(col2-col1); +} + +vec3 drawBands(vec2 uv) +{ + uv = 2.0*uv-1.0; + uv.x*=iResolution.x/iResolution.y; + uv = vec2(length(uv), atan(uv.y,uv.x)); + + //uv.x-=0.25; + //uv.x = max(0.0,uv.x); + + uv.y -= PI*0.5; + vec2 uv2 = vec2(uv.x, uv.y*-1.0); + uv.y = mod(uv.y,PI*2.0); + uv2.y = mod(uv2.y,PI*2.0); + + vec3 col = vec3(0.0); + vec3 col2 = vec3(0.0); + + float nBands = float(NUM_BANDS); + float i = floor(uv.x*nBands); + float f = fract(uv.x*nBands); + float band = i/nBands; + float s; + + #ifdef REVERSED + band = 1.0-band; + #endif + + //cubic easing + band *= band*band; + + band = band*0.99; + band += 0.01; + + s = texture( iChannel0, vec2(band,0.25) ).x; + + if(band<0.0||band>=1.0){ + s = 0.0; + } + + /* Gradient colors and amount here */ + const int nColors = 4; + vec3 colors[nColors]; + colors[0] = vec3(0.05,0.05,1.0); + colors[1] = vec3(0.05,1.00,1.00); + colors[2] = vec3(0.50,1.00,0.25); + colors[3] = vec3(1.00,0.75,0.25); + + vec3 gradCol = colors[0]; + float n = float(nColors)-1.0; + for(int i = 1; i < nColors; i++) + { + gradCol = mixc(gradCol,colors[i],(s-float(i-1)/n)*n); + } + + float h = PI*0.5; + + col += vec3(1.0-smoothstep(-0.5,0.0,uv.y-s*h)); + col *= gradCol; + + col2 += vec3(1.0-smoothstep(-0.5,0.0,uv2.y-s*h)); + col2*= gradCol; + + col = mix(col,col2,step(0.0,uv.y-PI)); + + col *= smoothstep(0.125,0.375,f); + col *= smoothstep(0.875,0.625,f); + + col = clamp(col,0.0,1.0); + + return col; +} + +void mainImage( out vec4 fragColor, in vec2 fragCoord ) +{ + vec2 uv = fragCoord.xy / iResolution.xy; + + vec2 p = vec2(uv.x, uv.y+0.2); + vec3 col = vec3(0.0); + col += drawBands(p);//*smoothstep(1.0,0.5,uv.y);; + + vec3 ref = vec3(0.0); + vec2 eps = vec2(0.0025,-0.0025); + + ref += drawBands(vec2(p.x,1.0-p.y)+eps.xx); + ref += drawBands(vec2(p.x,1.0-p.y)+eps.xy); + ref += drawBands(vec2(p.x,1.0-p.y)+eps.yy); + ref += drawBands(vec2(p.x,1.0-p.y)+eps.yx); + + ref += drawBands(vec2(p.x+eps.x,1.0-p.y)); + ref += drawBands(vec2(p.x+eps.y,1.0-p.y)); + ref += drawBands(vec2(p.x,1.0-p.y+eps.x)); + ref += drawBands(vec2(p.x,1.0-p.y+eps.y)); + + ref /= 8.0; + + float colStep = length(smoothstep(0.0,0.1,col)); + + vec3 cs1 = drawBands(vec2(0.5,0.51)); + vec3 cs2 = drawBands(vec2(0.5,0.93)); + + vec3 plCol = mix(cs1,cs2,length(p*2.0-1.0))*0.15*smoothstep(0.75,-0.25,length(p*2.0-1.0)); + vec3 plColBg = vec3(0.05)*smoothstep(1.0,0.0,length(p*2.0-1.0)); + vec3 pl = (plCol+plColBg)*smoothstep(0.5,0.65,1.0-uv.y); + + col += clamp(pl*(1.0-colStep),0.0,1.0); + + col += ref*smoothstep(0.125,1.6125,p.y); + + col = clamp(col, 0.0, 1.0); + + float dither = noise3D(vec3(uv,time))*2.0/256.0; + col += dither; + + fragColor = vec4(col,1.0); +} \ No newline at end of file diff --git a/tools/packsrc/Simulated Swampland/pack.json b/tools/packsrc/Simulated Swampland/pack.json new file mode 100644 index 0000000..5e885e5 --- /dev/null +++ b/tools/packsrc/Simulated Swampland/pack.json @@ -0,0 +1,28 @@ +{ + "author": "Hyeve", + "name": "Simulated Swampland", + "version": "1.0.0", + "description": "this scene is a awful, awful mess... but at least with this lighting and these effects, you can't tell (;", + "license": "", + "engine": "shadertoy", + "id": "ms3Gzl", + "tags": [ + "3d", + "raymarching", + "transparency", + "glass", + "reflections", + "crystal" + ], + + "source": "./shaders/Image.frag.qsb", + "speed": 1, + + "bufferA": + { + "source": "./shaders/Buffer A.frag.qsb", + "frame_buffer_channel": 0 + }, + + "channel0":"{bufferA}" +} \ No newline at end of file diff --git a/tools/packsrc/Simulated Swampland/shaders/Buffer A.frag b/tools/packsrc/Simulated Swampland/shaders/Buffer A.frag new file mode 100644 index 0000000..921bdf4 --- /dev/null +++ b/tools/packsrc/Simulated Swampland/shaders/Buffer A.frag @@ -0,0 +1,247 @@ +#define pi 3.1415926535 +#define DTR 0.01745329 +#define ang(a) mat2(cos(a),sin(a),-sin(a),cos(a)) +#define vmin(a, b) (a.x < b.x ? a : b) + + +vec2 uv=vec2(0); +vec3 cp,cn,cr,ss,oc,gl=vec3(0),vb,ro,rd,so,ld,no,on,lp; +vec4 fc=vec4(0),cc=vec4(0),vs,hs,sp; +float tt,cd,sd,md,io,oa,td=0.,li; +int sk,sc; + +//3D Shapes +float bx(vec3 p,vec3 s){vec3 q=abs(p)-s;return min(max(q.x,max(q.y,q.z)),0.)+length(max(q,0.));} +float fcy(vec3 p,vec2 s){vec2 w=vec2(length(p.xy)-s.x,abs(p.z)-s.y);return min(max(w.x,w.y),0.0)+length(max(w,0.0));} + +//Maths +float h11(float a){return fract(sin((a)*12.9898)*43758.5453123);} +float noise(float p){float i=floor(p),f=fract(p);return mix(h11(i)*f,h11(i+1.)*(f-1.),f*f*(3.0-2.0*f));} +vec3 rot(vec3 a,vec3 r){a.zy*=ang(r.x);a.xz*=ang(r.y);a.yx*=ang(r.z);return a;} +float sharp(float inp,float sca){return 1.-pow(1.-pow(inp,sca),sca*2.);} +vec3 thsv(vec3 c){vec4 K=vec4(0.,-1./3.,2./3.,-1.),p=mix(vec4(c.bg,K.wz),vec4(c.gb,K.xy),step(c.b,c.g)), +q=mix(vec4(p.xyw,c.r),vec4(c.r,p.yzx),step(p.x,c.r));float d=q.x-min(q.w,q.y); +return vec3(abs(q.z+(q.w-q.y)/(6.*d)),d/(q.x),q.x);} +vec3 trgb(vec3 c){vec4 K=vec4(1.,2./3.,1./3.,3.);vec3 p=abs(fract(c.xxx+K.xyz)*6.-K.www); +return c.z*mix(K.xxx,clamp(p-K.xxx,0.,1.),c.y);} + +//SDF Maths +float smin(float a,float b,float k){float h=clamp(0.5+0.5*(b-a)/k,0.,1.);return mix(b,a,h)-k*h*(1.-h);} + +float gyroid(vec3 pos, vec3 size) { + return abs(dot(sin(pos * size.x), cos((pos * size.y).zxy)) - size.z) / max(size.x, size.y) * 1.8; +} + + +float fbm(float x, float h, float n, float o) +{ + vec2 g = vec2(2,exp2(-h)); + vec3 f = vec3(1,1,0); + x -= o * 0.5; + for(float i=0.; i0.5||length(hid-slice)<0.03) tree = abs(fcy(p.xzy,vec2(5,100)))+1.; + + vec3 tp = p; + + p=pp; + + p.z += tt; + p.y -= mix(30.,50.,noise(p.x*0.05+p.z*0.05+tt*0.05)); + + + p.xz = mod(p.xz+10.,20.)-10.; + + float canopy = length(p) - 3.; + + for(li=0.;li<3.;li++) { + p=abs(p)-2.9-li; + p=rot(p,vec3(0,h11(li*2.)*10.,0)); + p+=vec3(h11(li),h11(li*2.),h11(li*3.)); + canopy = smin(canopy, length(p) - 3.+li*0.5,8.); + } + + + + tree = min(tree, canopy); + + surf = abs(surf) - 0.001; + + sd = min(surf, tree); + + + + + + + if(sd<0.05) + { + if(surf0.?cn:reflect(cn,rd);} + + +void tr(vec4 i){for(li=cd=0.,md=64.;li+cd0.?rd:-ld)*cd)*i.z;if(sd0.?1e-4:1e-2))break;}md/=.5;cp-=rd*.005;nm();} +void tr(vec3 o, vec3 d){for(li=cd=0.;li<12.;li++){cd+=mp(o+d*cd);if(cd<1e-3||cd>32.)break;}} + +vec3 tone(vec4 b, float d){ + vec3 r=thsv(b.rgb); + r.z=decim(pow(max(b.w*r.z+vs.z,0.),vs.x)*vs.y-d,vs.w); + r.x+=pow(1.-min(r.z*0.5,1.),hs.x)*hs.y*(r.x>.19&&r.x<.69?1.:-1.); + r.y+=pow(1.-min(r.z*0.5,1.),hs.z)*hs.w;r.y*=2.-r.z; + return trgb(r); +} + +void px(vec3 rd, int i) +{ + vec3 bg=cc.rgb=decim(vec3(0.2,0.5,0.2)-pow(length(uv),5.)*0.5,vs.w)*0.3; + + + + if(cd<128.){ + + + + cc.a=oa;ld=normalize(cp-lp); + float df=max(dot(cn,-ld),0.),ps=pow(max(1.-length(cross(rd+ld,cn)),0.),sp.y)*sp.x, + fo=exp(-pow(0.015*td,3.)),ao=0., + fr=max(pow(1.-abs(dot(rd,-cn)),3.),1e-4);vec3 sc=oc;float sh=0.; + if(sp.w>0.){tr(cp+on*0.005,on);ao=(1.-pow(clamp(cd/24.,0.,1.),0.1))*sp.w;} + if(sp.z>0.){tr(vec4(256,0.5,0.4,0.));sh=max(pow(1.-clamp(md,0.,1.),1.5),0.)*sp.z;} + + + + + cc.rgb=tone(vec4(sc+(fr*mix(cc.rgb,oc,0.))+ss,df+(ps*max(1.-sh,0.))+fr*0.5),sh+ao); + cc.rgb=mix(bg,cc.rgb,fo); + + + }else {cc.a=1.;}cc.rgb+=gl; + cc.rgb*=max(max(cc.r,max(cc.g,cc.b)),1.); +} + +vec3 refracter(vec3 I, vec3 N, float ior) +{ + float k = 1.0 - ior * ior * (1.0 - dot(N, I) * dot(N, I)); + + k = abs(k); + + if (k < 0.0) + return vec3(0); + else + return ior * I - (ior * dot(N, I) + sqrt(k)) * N; + +} + +void render(vec2 frag, vec2 res, float time, out vec4 col) +{ + uv=vec2(frag.x/res.x,frag.y/res.y); + uv-=0.5;uv/=vec2(res.y/res.x,1); + tt=mod(time, 100.); + + + vec2 pix = decim(uv, 100.); + vec2 id = vec2(h11(pix.x),h11(pix.y)); + + uv.x += (length(id)*sin(uv.y*30.+tt*h11(id.x)*5.))*id.x>0.2?0.03*pow(1.1-length(uv.y),5.):0.; + + uv.x += fract(uv.y*0.53+tt*0.1)>0.5?0.05:0.; + + uv*=1.-pow(length(uv),5.)*0.2; + + ro=vec3(0,5,-20); + rd = normalize(vec3(uv, 1)); + + for(int i=0;i<20;i++) + { + tr(vec4(256,0,1,1));ro=cp-cn*(io<0.?-0.01:0.01); + cr=refract(rd,cn,i%2==0?1./io:io); + if(io<0.)cr=reflect(rd,cn);px(rd, i); + if(length(cr)!=0.)rd=cr; + + + if(sc<1) fc=fc+vec4(cc.rgb*cc.a,cc.a)*(1.-fc.a); + if(fc.a>=1.)break;sc=sc==0?io<0.?0:sk:sc-1; + } + col=fc/fc.a; + + col *= 1.-pow(length(uv), 1.)*0.8; + col = pow(col,vec4(0.9)); + +} + +void mainImage( out vec4 fragColor, in vec2 fragCoord ) +{ + if(mod(float(iFrame), 60./FPS) < 1. || iFrame < 5) render(fragCoord.xy,iResolution.xy,iTime,fragColor); + else fragColor = texture(iChannel0, fragCoord / iResolution.xy); +} \ No newline at end of file diff --git a/tools/packsrc/Simulated Swampland/shaders/Common.frag b/tools/packsrc/Simulated Swampland/shaders/Common.frag new file mode 100644 index 0000000..c00c45d --- /dev/null +++ b/tools/packsrc/Simulated Swampland/shaders/Common.frag @@ -0,0 +1,5 @@ +//fps control for performance. Assumes the refresh rate of your monitor is 60hz +//(120hz monitor set to 30 here will actually run at 60fps) +#define FPS 60. + +#define decim(a, b) (floor((a)*(b))/(b)) \ No newline at end of file diff --git a/tools/packsrc/Simulated Swampland/shaders/Image.frag b/tools/packsrc/Simulated Swampland/shaders/Image.frag new file mode 100644 index 0000000..2386ea7 --- /dev/null +++ b/tools/packsrc/Simulated Swampland/shaders/Image.frag @@ -0,0 +1,6 @@ +//See the common tab for fps control. + +void mainImage( out vec4 fragColor, in vec2 fragCoord ) +{ + fragColor = texture(iChannel0, fragCoord / iResolution.xy); +} \ No newline at end of file diff --git a/tools/packsrc/Voxel Land 2/pack.json b/tools/packsrc/Voxel Land 2/pack.json new file mode 100644 index 0000000..5a665a0 --- /dev/null +++ b/tools/packsrc/Voxel Land 2/pack.json @@ -0,0 +1,21 @@ +{ + "author": "Nrx", + "name": "Voxel Land 2", + "version": "1.0.0", + "description": "Rework of Voxel land to be faster on mobile devices (no reflection) and propose different colors...", + "license": "CC BY-NC-SA 3.0", + "engine": "shadertoy", + "id": "XlfGR4", + "tags": [ + "reactive", + "voxels" + ], + + "source": "./shaders/Image.frag.qsb", + "speed": 0.5, + + "channel0": + { + "type": 4 + } +} \ No newline at end of file diff --git a/tools/packsrc/Voxel Land 2/shaders/Image.frag b/tools/packsrc/Voxel Land 2/shaders/Image.frag new file mode 100644 index 0000000..537f0fb --- /dev/null +++ b/tools/packsrc/Voxel Land 2/shaders/Image.frag @@ -0,0 +1,115 @@ +// Parameters +#define CAMERA_FOCAL_LENGTH 1.5 +#define VOXEL_STEP 50.0 +#define SOUND +#define MOUSE +#define HSV2RGB_FAST + +// Constants +#define PI 3.14159265359 +#define SQRT2 1.41421356237 + +// PRNG +// From https://www.shadertoy.com/view/4djSRW +float rand (in vec2 seed) { + seed = fract (seed * vec2 (5.3983, 5.4427)); + seed += dot (seed.yx, seed.xy + vec2 (21.5351, 14.3137)); + return fract (seed.x * seed.y * 95.4337); +} + +// HSV to RGB +vec3 hsv2rgb (in vec3 hsv) { + #ifdef HSV2RGB_SAFE + hsv.yz = clamp (hsv.yz, 0.0, 1.0); + #endif + #ifdef HSV2RGB_FAST + return hsv.z * (1.0 + 0.5 * hsv.y * (cos (2.0 * PI * (hsv.x + vec3 (0.0, 2.0 / 3.0, 1.0 / 3.0))) - 1.0)); + #else + return hsv.z * (1.0 + hsv.y * clamp (abs (fract (hsv.x + vec3 (0.0, 2.0 / 3.0, 1.0 / 3.0)) * 6.0 - 3.0) - 2.0, -1.0, 0.0)); + #endif +} + +// Main function +void mainImage (out vec4 fragColor, in vec2 fragCoord) { + + // Define the ray corresponding to this fragment + vec3 ray = normalize (vec3 ((2.0 * fragCoord.xy - iResolution.xy) / iResolution.y, CAMERA_FOCAL_LENGTH)); + + // Get the music info + #ifdef SOUND + float soundBass = texture (iChannel0, vec2 (0.0)).x; + float soundTreble = texture (iChannel0, vec2 (0.9, 0.0)).x; + #else + float soundBass = 0.6 + 0.4 * cos (iTime * 0.2); + float soundTreble = 0.5 + 0.5 * cos (iTime * 1.2); + #endif + + // Set the camera + vec3 origin = vec3 (0.0, 6.0 - 3.0 * cos (iTime * 0.3), iTime * 2.0 + 700.0 * (0.5 + 0.5 * sin (iTime * 0.1))); + float cameraAngle = iTime * 0.1; + #ifdef MOUSE + cameraAngle += 2.0 * PI * iMouse.x / iResolution.x; + #endif + vec3 cameraForward = vec3 (cos (cameraAngle), cos (iTime * 0.3) - 1.5, sin (cameraAngle)); + vec3 cameraUp = vec3 (0.2 * cos (iTime * 0.7), 1.0, 0.0); + mat3 cameraRotation; + cameraRotation [2] = normalize (cameraForward); + cameraRotation [0] = normalize (cross (cameraUp, cameraForward)); + cameraRotation [1] = cross (cameraRotation [2], cameraRotation [0]); + ray = cameraRotation * ray; + + // Voxel + vec3 color = vec3 (0.0); + + vec2 voxelSign = sign (ray.xz); + vec2 voxelIncrement = voxelSign / ray.xz; + float voxelTimeCurrent = 0.0; + vec2 voxelTimeNext = (0.5 + voxelSign * (0.5 - fract (origin.xz + 0.5))) * voxelIncrement; + vec2 voxelPosition = floor (origin.xz + 0.5); + float voxelHeight = 0.0; + bool voxelDone = false; + vec3 voxelNormal = vec3 (0.0); + + for (float voxelStep = 1.0; voxelStep <= VOXEL_STEP; ++voxelStep) { + + // Compute the height of this column + voxelHeight = 2.0 * rand (voxelPosition) * smoothstep (0.2, 0.5, soundBass) * sin (soundBass * 8.0 + voxelPosition.x * voxelPosition.y) - 5.0 * (0.5 + 0.5 * cos (voxelPosition.y * 0.15)); + + // Check whether we hit the side of the column + if (voxelDone = voxelHeight > origin.y + voxelTimeCurrent * ray.y) { + break; + } + + // Check whether we hit the top of the column + float timeNext = min (voxelTimeNext.x, voxelTimeNext.y); + float timeIntersect = (voxelHeight - origin.y) / ray.y; + if (voxelDone = timeIntersect > voxelTimeCurrent && timeIntersect < timeNext) { + voxelTimeCurrent = timeIntersect; + voxelNormal = vec3 (0.0, 1.0, 0.0); + break; + } + + // Next voxel... + voxelTimeCurrent = timeNext; + voxelNormal.xz = step (voxelTimeNext.xy, voxelTimeNext.yx); + voxelTimeNext += voxelNormal.xz * voxelIncrement; + voxelPosition += voxelNormal.xz * voxelSign; + } + if (voxelDone) { + origin += voxelTimeCurrent * ray; + + // Compute the local color + vec3 mapping = origin; + mapping.y -= voxelHeight + 0.5; + mapping *= 1.0 - voxelNormal; + mapping += 0.5; + float id = rand (voxelPosition); + color = hsv2rgb (vec3 ((iTime + floor (mapping.y)) * 0.05 + voxelPosition.x * 0.01, smoothstep (0.2, 0.4, soundBass), 0.7 + 0.3 * cos (id * iTime + PI * soundTreble))); + color *= smoothstep (0.8 - 0.6 * cos (soundBass * PI), 0.1, length (fract (mapping) - 0.5)); + color *= 0.5 + smoothstep (0.90, 0.95, cos (id * 100.0 + soundTreble * PI * 0.5 + iTime * 0.5)); + color *= 1.0 - voxelTimeCurrent / VOXEL_STEP * SQRT2; + } + + // Set the fragment color + fragColor = vec4 (color, 1.0); +} \ No newline at end of file diff --git a/tools/src/generative/A Beautiful Fractal Loop.frag b/tools/src/generative/A Beautiful Fractal Loop.frag new file mode 100644 index 0000000..1666359 --- /dev/null +++ b/tools/src/generative/A Beautiful Fractal Loop.frag @@ -0,0 +1,25 @@ +// Fractal base used taken from https://www.shadertoy.com/view/lslGWr and tweaked. +// 407 chars made by: Aaron1924 +// 383 left with removed define +float f(vec3 p) +{ + float a, l, t, i; + + for (;++i < 32.;) + { + float m = dot(p, p); + p = abs(p) / m + .4 * vec2(cos(iTime/4.), sin(iTime/4.)).xxy - .5; + + float w = exp(-.2*i); + a += w * exp(-9.5 * pow(abs(m - l), 2.3)); + t += w, l = m; + } + + return max(0., 5. * a / t - .7); +} + +void mainImage( out vec4 fragColor, in vec2 fragCoord ) +{ + vec3 R = iResolution, p = (vec3(fragCoord, 0) - .5 * R) / R.y; + fragColor = pow(vec4(f(p)),vec4(1,2,3,0)) * pow(vec4(f(p*2.5)),vec4(3,2,1,0)); +} \ No newline at end of file diff --git a/tools/src/generative/Give it Moire.frag b/tools/src/generative/Give it Moire.frag new file mode 100644 index 0000000..4cc7799 --- /dev/null +++ b/tools/src/generative/Give it Moire.frag @@ -0,0 +1,79 @@ +#ifdef GL_ES + precision mediump float; +#endif + +#define PI 3.14159265359 +#define HALF_PI 1.57079632675 +#define TWO_PI 6.283185307 + +#define SECONDS 60.0 + +float random(vec2 st){ return fract(sin(dot(st.yx,vec2(14.7891,43.123)))*312991.41235); } +float random (in float x) { return fract(sin(x)*43758.5453123); } + +float cell_random(float x,float scale) +{ + float iPos = floor(x*scale); + return mix(random(iPos), random(iPos + 1.0), smoothstep(0.,1.,fract(x*scale))); +} + +mat2 rotate(float angle) +{ + return mat2( cos(angle),-sin(angle),sin(angle),cos(angle) ); +} + +vec2 center(vec2 st) +{ + float aspect = iResolution.x/iResolution.y; + st.x = st.x * aspect - aspect * 0.5 + 0.5; + return st; +} + +float lines(vec2 st) +{ + st -= st.y-st.x; // go diagonal + return sin(st.x*10.0); +} + +vec2 map(vec2 st, float t) +{ + vec2 pos = vec2(0.0); + pos += vec2(0.4)*rotate(TWO_PI*t); + + st = st-pos; + + float freq = mix(1.5,2.25,cell_random(sin(PI + iTime*.15),5.0)); + float amount = mix(0.08,0.35,cell_random(sin(TWO_PI*.75+iTime*.0025),10.0)); + float c = length(st); + float sq = mix(1.0,10.0, cell_random(sin(PI + iTime*.005),50.0)); + float scale = mix(sq,4.0,0.5+0.5*sin(st.x*st.y*st.y*4.0)); + vec2 uv = st + (c)*freq*cos(c*scale-TWO_PI*4.0)*amount; + + return uv; +} + +void mainImage(out vec4 fragColor, in vec2 fragCoord) +{ + vec2 st = fragCoord/iResolution.xy; + float t = fract(iTime/SECONDS); + + st = center(st); + st = st * 2.0 - 1.0; + st *= rotate(PI*0.25); + st *= rotate(TWO_PI*iTime*0.0015); + + vec2 m = map(st,t); + + float r = cell_random(length(m)+iTime*0.023,10.0); + + float stripes = sin(m.x*50.0); + float d = dot(m,st)+0.1; + + float c_repeats = mix(20.0,100.0,cell_random(sin(iTime*.035),10.0)); + + vec3 c_sin = cos(vec3(0.15,.32,0.3)+d*c_repeats + iTime ); + vec3 color = c_sin-d-stripes; + color += r; + + fragColor = vec4(color,1.0); +} \ No newline at end of file