From 614ce1f77ed7784f7625453c5a8712e0dae21e42 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Thu, 16 Dec 2021 20:17:27 -0600 Subject: [PATCH] rendering a colored cube --- run_tree/assets/shaders/basic_fragment.glsl | 3 +- run_tree/assets/shaders/basic_vertex.glsl | 2 + run_tree/lib/onyx_glfw3.dll | Bin 120832 -> 121344 bytes run_tree/lib/onyx_opengles.dll | Bin 204288 -> 204288 bytes src/build.onyx | 18 +-- src/main.onyx | 124 ++++++++++++-------- 6 files changed, 93 insertions(+), 54 deletions(-) diff --git a/run_tree/assets/shaders/basic_fragment.glsl b/run_tree/assets/shaders/basic_fragment.glsl index f81d312..ebfd107 100644 --- a/run_tree/assets/shaders/basic_fragment.glsl +++ b/run_tree/assets/shaders/basic_fragment.glsl @@ -4,9 +4,10 @@ precision mediump float; uniform sampler2D u_sampler; uniform float u_sampler_enabled; +in vec4 v_col; in vec2 v_tex; out vec4 fragColor; void main() { - fragColor = mix(vec4(1, 1, 1, 1), texture(u_sampler, v_tex), u_sampler_enabled); + fragColor = mix(v_col, texture(u_sampler, v_tex), u_sampler_enabled); } diff --git a/run_tree/assets/shaders/basic_vertex.glsl b/run_tree/assets/shaders/basic_vertex.glsl index e8d9f2f..d68b046 100644 --- a/run_tree/assets/shaders/basic_vertex.glsl +++ b/run_tree/assets/shaders/basic_vertex.glsl @@ -7,9 +7,11 @@ layout(std140) uniform u_matrix_block { mat4 u_world; }; +out vec4 v_col; out vec2 v_tex; void main() { gl_Position = u_view * u_world * vec4(a_pos, 1); + v_col = vec4(a_pos, 1); v_tex = a_tex; } diff --git a/run_tree/lib/onyx_glfw3.dll b/run_tree/lib/onyx_glfw3.dll index 73650fa112adf7c2d067fca429c4b1d70c7ddf23..ad2c4d481aeed961ce33af69b1a336c4b56f4552 100644 GIT binary patch delta 22641 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�%- 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 z zRq9)fhY7=9)T6n2HDuU`W%cM-rY_)CTw7FhEK{`9FMx^qs=p+~a1$;}rvGxhsM9XN zC-;C<>EAEb{PW6yF;blUGfQ4Csjfk+AV-}jI0EJR2Q!&3WFNFiYbIk0%Nc8vURx$( z|AsQ&A2P|j5Pwm05JFJ(fRWR2@WWp<{vGF`a}&g~#9>=sv;su+8xz4^j1;!@)%#5m zUA0UeiVmsY%uH|=ods2rT|ATJ{zX^T2{04f#0G*o$&u?6{+mtLoe+M?0c} zncyJW3)V?>^&O{(R=rG4{5LZH-yPMDpCa}|b@Y2txkjn@sDg;_Lq9=?`~$A1P&6lkc|Q^@+L;S>qb>C5Nus+`jq)1|!OTG@_zgq-!6b3E zDQ!$V4sD=rNK1~__na!OYg?1gYAQ}S!q0>=%TUHHwbrg5zi_!LhZa;Mh-P8cEtif^Z15w??n7nNSy_t!|LHNoVIV zK{y5~m38WSDg>ptR4}hJD<_4#WA4llJ=#Ve7lhrQUl)l&Lsb65xM-~qtVh=otXmVT z7wF)67@1pm-k_Oc5E}pqGsU(HH_jBhm>T--MKt~;-T}{MimoR4^~>noazVKFR_~fB zdYI(pH!v`63c{PW`d+DG2WD>(()j>O6&vwE5buaV!0Tx#)a_SW&n~y|@6$mJ@AS`7 z#eM-bgJ9y1XmC*TcdSd{yQig~!t$V+W>a0a(lW^+-aH!ROr9k+GWjv+nINnM!M`oD z#3ro#^Z0kvrrCD$52S&*!zM$ke`)tGUt!4tB|(Rw$Y!$xP;!HZ_yxrY7fjIq(JLd${~x_F z`mpx+-zy^@75{r>l&^ySdu5c?iT}qdBN2`tnxz##sncMZFm__X%umK74;(jn^pu&O zjGH~C`-q7XM~)aZ;n0PJ;&aQ-mWhER{-Qo;nb^}R^`dlF$cg@D z75dHD;uNv^ko|ITtSI7Wzfx?VU$sIk6TS2espzABpC;PqKg|(6tU@kHhN2~trWxAb!jDxtkI8HC3@&j>P2&X%LSrBKl@We13wkL#C(0^%w@*h^qHTbz{67V!_VM$xx|O-#S+mV73jZ4EEWa5{dzcV zw^lr2|r~k!A6cto1tBN|pHE7m5!0?dwEWs~lM=PfB>W4*nD} z{w|sx_J^bCr>+-&VNGAO9mQ!kiVQlIq&y8IO@&qwdE z9Y+V%Reith;$*b()I5~(!*<@rHGExtpB-X1G%pwI*&)WDc{%Tv2Yw0T|3LEsJoJlq z!vDkiD?3qAIfF*}&KaUopSTM>WYBNkB~Bs2HU0UGViW!B46&}h+itN7ap982`Y(2i zktFb%9TMy;w)zaF5v3At_RN4Dc$HIzq#Bnp)P3d;OK=qG!W$IkmC|qoiE% z^2HNjy;6BlyFk5mSQT9yo-{e}D|}tq{1^vxPziX3%4nQ5!K;9cLF>VL15bihfiDF5Q3=7o41xj{_F4cJ2F8EV%eh=$R8 zU?C_Cd^s?FBx(UZ3AhB513m}160{0@E^sqw4fr2`Z$PYox4?)|l5SB%G`# z<6#MWGOz-~#|ltAMJk{LaBq?%&u0ko!oQwnxO1u?2;dKE!6Z+^m5&($egk4PC3_cHd3dFjj1b7Fe zWsyoSF0-TrFW?Z+VPuE{PMeKp2cHbw3t9snFR6mv97!Lqs{$U2xlx8AK+HM3!U}kq zFi_@!S|L=9Fies8RNxYsXP5{20R_Q@8oF<^E82d%((0Url^kc0jN{}A|s;s*ra-vX7Z zv3`J80Ruk6{sKM__>&&pk%<-sj$4ENFGRw`HCPHkYzi^Fy$*#zsS>zxJ*F9Sa)I~= zAe4e~XPBLf0SlcRpkg!n7g0Sq$(A zh&k~Tc%QLf%tSH901So0Vowb zKBEZUdnB6-w=qJ&3@c^10jPEUQYyd&7zHXrW`-+4fp~{n1v~|M%8Ua0#PANN9EK`^J&sGw_~C0Dd!@U467t0&$DhFmg0BV^7fSjiz>!55XpkoX zLr!Bbf)53L3yKH-trpCPvw|=YkurV5FMdLE5UW88;24=t1l|X+ z!SxVG%cP}x6|nt9sg|99%RrT|!?5)w%qH*|z%G~3|7D1Tg83T63OEc5FGqhaLB9g8 zgWSMZ086gp8~~o-neWhl;7ft`zL)riz?d7T9pntV-o$T8z=r}G-^RcM?+v^TdIi4X zHs-&}9jRX#&IBW2JHV(lE(u-2gPKeu=QX(f0UZh3%C#z$BY68J!VTKmQ0}a&uCuoHo##Z z<{Un?3UfisX@(u1NvmEb;Fq91(9Z|<{Y7fU7@&Q%R8}BxwH84+l-2xL6 zEo=t`f@hza*k>dctN{$!CnUx*#AhJ%KO*dV5c|xt9y~+#S*H>_L-wkl1VaqjCmp8G zQ2AEk88(r5hFxWzA^U2;^ck`jf5tOpkNS*X`8H8{xn~jfg3n&)8PD*Z%rkr=^9&u{ zNjePKi#F3|$X=ou&v1&&vzO-_&g-uvii`2}_#>_DNQ@;=JCFs)5#$YO4Kf3D0=a;q zL7^ZO$O{w*5kO-Z8+zwN9o^_~qx22pH#*!ceaf-AG>PNw(&xZle$}Nl9B-7q z=6JXC4`6Sf+oit)e;a!H#D~C9fj3H@al9krFC6<%96f=RCDi@3lbQHvK^XI~wQ$7w z(8#*9TA_u;o;WrY9x#c>#kc!YUvZdi(kG&j2tfs1EjDb_v;j|(0u2#Nwt}EZ6NRR$ zn>V4?L>H27wYqs@=YZs~X~|5f2BZQ#ppA)Vhv1D&2J@Q$wTyrJ7a<4{0b@ocGoM~W zA;^JV0B{AJMjAWvf@>jihUgewPg;u=^lKzA4+MB3*a0sT-6hWA8mpdU_AsHk?v4LkaJt8@?}KS)hk0Z~Fg@xpRC(&0Md$cAo@?4$$>?*IT%+6ZTrYxXC&wbv zF^E2LoFkr~Go0ONr9)4p>lup~`!n3k*X0&TQ8_pBN!tcu0G*;5?BMz~&7NLX#VNl& z{Z{!jZQG!i!??GSA#`zrI0whKf_n7F27QUMKW*zAZFkA9u8mk{t+5WWTlNo0m%mHI zr}Tzf8)|3WO3brx!|OO(bz4EuW<+`U(62pR>2#OhNPS;APCcG%Z$mGtHxgwVI>ogY zIpu>`Kf1w6O~&}p=5C%O)`v#Abs+9ObdFmq@_TE#&8?eViqBs>bni|2w5EOCkB|+m zsBI&EGNYAc0B1EiPvX7l@WxxnAunofY*hCA%F;67UrD|CrA2btu5+l0n=`CFfE!n%$Ar)3ZNjhCDC)VI-Q-hpIdBO33W;^0ne z-OAthT6AjmQavPF-b(0RTGgNr2~yLIZH6fC7FblP3V7)&-%9iameSk1&`rLBm3Q~N zRo^42zm@3sSk%KC(oJoLksHo@ByVt*MzWu`7+qBC7biBY%w~2JXLgB#IX*#aSm9NT zRaYBQVMQ;X0z51=M`k?haCnh zGrWnwKES+r(~#x_er~&MJ$H9aE{zKcBk3R0fdRdg_PG}4gj_l;#4x}K`TyzC(4BQI zeZV>Hk`}DRrEnf$E_GVRU3z74sWt5#>P>I9a~JLC>vrdTyw-A0lsha9mm@daF;@7Z zvLlENA68071bLBKJ$H287Zyj8zMusGgUJD3OEc<}|K{`g?R7qva*q3a1gyp9d>&yw z?_0xt-eB>0v;E(jv8xju5gI6_6lH}vicJTu=5^@!xup)pavg3f>9O{{M6-x~92Dp9 znZ@m#&$!#STU*@Ti(UGkP5tM#I=7#4j=OCFYjL}ZN0{69R&lonTim{4^LMwWInbbv z{$!_)4)3_XY0XORb{WnS@|ew$-JW4j{li+5!i9XyBE4?R=I}A=ZSlGriukA3nOp0; z)^ko8vtTV=Pv#Nk^`cDf^)ZXr6RrR5^&4A0W=mFZch_u@#_W7)%x^nk)aOlFe;#krAvhCaN_uVj zN0VN%=1r=a%iZ3%(c*U2M*4F%!+@>z{>|Bk8|s|B#X0WmHLw96a?a%U<`DWXtn_Wl%e%ItmoC=2)Sa4Qd2^H9&j6dsP};UFIN;$asa z2J)~u4;%7O!Ncd=@;x3_@$ftgb>83b$UYu^&ck&)T*kvWJeF%NI?@G1{a^YADS^LepZ-~!%`j|!qVd8`bV)z27fUq8cZR z4pW~u*m3n`KBX1fj6^TZM`+pzbctELt%zQVawV&a=)I`+WKF`SYPJL-R3cnCa+WAONpaSel&Ho%FEN{+q>v}2+LAM> zd%w^=J+qvqV&)4@OHV@kv|{LT`mks7(18b#HB%V~Fdf6mZfS8!8`DWFGE0h+H8>y^LnQ-<9-RM$f4#(dcn(h{74W z)95hP%r!1%^|Jlcs2!!gvY)3VJH{DKgA7$x96u)N{Ve}f`}Fls&Rpe z;d`!fejn`@Gb^@oI(qYX@MqWkKV{dE@Y0lIt$wUK8lktlSv{%%GDEbxHX~YPRwp86 zDAu-Pe1gPh_SQ)8_yXz}+bOm;GiONj(rTYqVvuxTQOuyBrAL_4r4pH~uA%0K5wHr(ALGYy<>FU_`$^0es$JlFR(q4L?S16gUr}uk>J9pHJ!qPLiL!kGf zN|!5I>uJZhPPzw+Au;@rGG6~uoIS~O6?+awxX;q66fYF=9a2q=TJRoKA^tOq+wypF zKyYzQ$T+9ziZ*-UgudMT)JdoK0t%=>0f0prB6=8bO0fu`SSa$fq4cN%j+kE2U*lYy zGxE&llr-&V<(FVET;}9ab??UoJ*vD0+jfsUKxfMCs_L_;!H}5I?P`KT(?NQ5i}ruujK*adFbGhT9PQIzbeU z;|L*Sc$g;86Y+il#~{&{+niS9fx)mBG88+(MgCr@Ne3L7;>69+dVowk*j*_GC|V>=AIL(HnT@ zJ04?$L~A&YB_)sc?%$cvFNzHPMUgDuUbON9B9aw5=$ZlPWc6I?@?i_Ia10Imuz>8y zp{5VNA!E1Gyn)?F=p1@~pojm#QK-dBb8?6lBg)Zq7PHo%%z;pAxE6BRMA(sTX;rcd z2Jihe8v0SRdv_$7Q`ltAf){4BK8I!TA4OMxr17*zqG=|Kpo{t(ONT;c>>|_E#!Thc zk@Vt6zKu#piUKVAKndf(w8>(kt5|Zsy|_Yi9i48wy*$Q(4G;8d7FFOE^Zu_*k&T>$Q%TzYq zjbrSYxJ-pT7_1pnhGo;F;ojEgw4ZnQ4Yj_j8k7Px+?4paqZxb>xn;sn1op@&#y&N@PblbTeQ+}SRMrF`i#bs!1 zVhmX7)~u&1#*EhmO+gDeEyZXO_|~yZ;RK1+AR26zo=FMCmZ%%R2EG19H?2YadNR_& zE0Y^)Lr!R~lw(wfTxKV`TkBZ!DqW_cR~@h~q$m;dM9k!Y{U!@bq&`eYX^2|4fiFlS z0F(Hqxj9?CTS+oECVTV;dmZRu!}J|bDb`G;bZk%3YYnX$Th{a;);PXs;r{d<etBnm*T~^qOOyZMb8amMIl*X+G(yk zoAGr*Yp}(MDs?QaoZ{B1H&jeVm_nv9hVkW$Hz>J0QQ|v|rOK)4q<$P-HFbb(r%Vhd zgJM@N`e14-8P%k-V1dVi(l4I76O7(26xou`mMIi8ax@A$ zAQd`wG!>`&k@2xKaC%SOc({N~yVj{h#BnJFjjJ30kv7v~C@UfS9M-=fj%dXUkIsb-4PtZs2d z-#%tjE>n4bBXvpY*z6iQfVJyy9V|-F*(m9(-AE@T1(Wno=$52x)jBPXh{?YEl3`YB zmeHOw1~}xQ$AuK7lS)zDr)bBFP(qx0(w}Bc_B=lh{$)g0XY^yO#HN(i5PeOXVS`vk zG##6~mAqJ2WSwFw+AH8;vK!jiC5ARmeXsHI9@6&UYg*{Vvatm>*~6er>OrTahS*GA zgfXma--G6*dJ(4{^kS-pJnT*%r}~i6?zG8lFLE-SM$T?alDgArvpq?Cce--6h6Hq{ zg|mH#Rd@R1>>f71>X?zEk<>fQi_l2gD@{XYMAE5gKIHvKYJ@OGN54w*Cr={igS3Fy z6A^V=R#J1eW$i=!?Up4iej!z8x|l(tz;`dc^PH8oFO77dYhYFk9zw^=X*H5Si)~C; zl*cc8cOmw0A0qEy*AxD_g9Sp*tb93`?O-X_>qbk3c6130rK9xwKA(M^O_$Qi>6v%2p*rWog? zHLE)>pt18JNvA$1#aPYzX3@R#2fJ2vMkTFqfAh)+Gd+35W~@hPXWDE*a0_Zl z!s_Bv%4UP2_#hgX(afRiG;S2Pn*-B|24~b4$>dl%`jZ{xTnx20tRry&^fSYV z9yc&Y1pVtbDbA-Am%$?jk3uJ7V^Zs1|C!=)T5;SW_J-JSt;S9N`VU+O+3ohUVzZV; zub4$b{pqn4!^u29+9cDPSWPPGp7|3Y7urxwRsb2;j>cz2ljnidn1!JqM2}|mCUi8JIglN*pFxSz9&%m17}5v!(hlP;T{QLPY`-W+)>8rph~JGkPW(e4L?pzjze8 zs@c>5;VDIU4_dIg5mEP`XI8f$d9CTg)y+wOA62bsN1BYKJ=VmM!(-^GHJdv0Ll@UH z!uA)z81}#&$e8+IJi%x)K4#x8YlxvHW17u9dlb>hV`(HEN!yYfU%HYm@t8DMvfwd@ zF|gpFWehBMbeu~A*FJS^Jc=1o-0H@9Ss_J!?ncAbjUsDC(oO63kg5^1*Ln@vH-b)G ze}dc@PTLv((|F;qcaC(u3@hFQU1wEQPisznvb&J1pXvB)UsaRgY}oR%U0<_$>TtR( zyP>Xd1{TtqAIxSfKy9K7xB;sFgj1M6rmK>)A>Y&a&GpW5nWNvoLf2Tn@^&_3{R>PQW?$0~MykF7fy zPUFhO$-&sSx+D2m1cq27KXA0Y^vPMRp;CM0Y)nXHuVrg_MQi+Fs1X!vj(|~ti8P!z z$};JzyR|LXUbz?(@~YReFW&^woKJ&v^HIH{O_7Ro(-iQi@kD@0kdKqDTEi9X=@Lvx z_C&&;pc;+DS;(8nZ&LCB9wX{2%tL-GEd&EQ`v9gR?97Im+q2n?rQxR$@k`ZMRow319w-(vz%GVCXCw2aA#xo6KnQ%vCHHeln{X88d`=jK) zoj&`#W95G0-%hcOm>qWegB^urX9u%$2PZCCf1}et>vwYR=ehrWcKtRD6P%r0=ON=! zTw$24!w{O*^JClFqw6t@K6Z2+mB@~+@99}ac66NyMmo9%F%$TvB$(bqUUY(V?6r?F zoHDD2$l04D(u>2@w0dK+h8{fUJ=m~k9Bu_^)OpiTvS%2bu_@SU;$YlT_w7>CFE=^) zPn^w4`2kA9!5wv#9PI_(L|&u6q-L`-d~a5_8b)7iYT7V2jIS#DIsw8@W0FsAN?UJk zHSA(X2n_b@jHuGGD<0}J1Vw4}EkUK&{1tI5YxuR4YnClcI!l?=a|c0jX)&gF80_L^ z&Bp|eFg}Q~Qx{H_ZjOr{uxqO}Q@b1|{lT={mdyPWAv)myw&#}oKr)>msd ziQ2CVqcK}%lcr(x#Fh`;?|j5+YC>+jlDrgC?Xgpt)u%tAfm_4Lv2Z$N>oRh$1O095 zKyqm??VS@uwhpGcocB8qqKX7i+A&84Vs~BB|&Qmd^*vex9uXK z6X_?P_3#Kp`(dTc?BdB7ycu=zW=wrBR$=u1XRXK*SL*zEQiJXj;6_QcRZP8T)L9um zfzr>LlWH|R^m*5YK4^$Yb7hSq`qpp?R~5I9X#MSRA4IC*=2>lsy08NdJn;6)S?$ux z@+${C`xN3*s5gRMoS}rPE`3)ur5+BtL?jNziN-ljaC%2 zFG~8tERsDTbjHq>y5%9*gl=6mo7p`;v6#hre}_TW$s-kfN+93jGrEjK1Y_QGv`#aD zX||L!xY~jLqTTkt$t;ppHs= zLm$@z&Nt{w@8pIl_xiKuDh;`e*UCQBH&0JiwWE9U{vfM^=$>7EuHkq*#eG-Xi6pxk z7UklayHs)5mHxWR)AeGTeNSB#%5496LjZfJ#_U>#LqUE7nHorc$S)-J zF4VAlH2K zNG6=1UmX5k*Ww#NXafoYbp&+dQJ5U&?8>lC!H)sH82xt^&A}9$o z8?+F#w1jpzT1>W>i(VYX`SW%-wL3naIKC-be*8i`WvUyxRoW%>9qH(A#;NK-5@$Gv zQ#Tt(ijMS$Z-R)vLy>)PqDYo@pc6~xI={q_=Yt`*u(VKU6+5|YxME;`ZN@jd9znuOyDW>J6(Ej$rVz73(I zbd+NnoS5aS9nBt`rZl88OH;`+XL`TX)3q!Z8-5jz-kzp5N7+2X(YrQ;dX~jFrMMzf zycRcxOvOZJk>0-BN%Q6p=+K#%PY|$XTS`=apQMLHW6MY!3$L(mZlan02 z4>Fr04Oe;_R-BHfB`4dsGqpHF^xn9(r@K2HimUC~)9LFkI~AX!7MdF zVm$q$+~0pR61XK4XD-bcy0QE6sK;G<8J1Kt2fC-n)ndW@a8*r(S$!mc4m>lABm~ey zXZ*aUgG;! z;iWU3wBf(aTwa40twcY%|J(qw@*%aU(2xUm)VJaaIo*bu5qs!Mo1dSnj#Q#$C!?dZ zhNs$+H`Z~P{sFeM@cbR}z6~{A_=r5JPirrx*+7;#)B%Q*6!Zm91%d<%gucHT}MF z=7cM@xVlf(j(&{=;Uah}qA#%dr;wTfhDetZlQLIK#;rhEB&EGHeTG+K_B?E5j>39n zP;98n#8=t@C$Kx`^W{3lmhQWxcg(dxRa;@?;h?g~s;K+rK13J#kUw7xW#2Un zy)<|X@|7gLB#93s8cEVgk_18GDoI*Pk}yadB#By*L_k6$Nj*uTh2+HpUe@DWUe*Li ztaXyobxD*2(I1l1c}bE6$rDL(oJ$Pptl`6zcO>BsNw{1RUXz5YB_TiNge%WU!ud=n zZ8H_@cr}inc#)m{_qmffWqK5eqR@LO z`lU+~-=c#*92RkGq|>UJx$ec;bDWcpX`Isl|5=<5^q-tYKd)+`Ga~xLDbc$b&er3c z0^9EdIxV>-ve*Fcmx#sT6wy+lgI-)q<#IsGr5iEzO2%oOrj;Xy_d1qiF`U6M$K*H8 zsYZQ^7g3|EVtF!^13uwJoP84MG{~U@ep~{TAfd@zL5IRs9xY)4sH{PTCr*QY1f2z) zfL`?zrv#6uT%MpjE~P`pb;?=VX(^5A|AhEC*zpgM^prI?J45~m6}*SiRaSVUQ6E~w z3v)REO>gpYHa+=MU@H^XOjOizOsGW3us#e{Ro)M{HI={B9NPFlExH#<1^SmugNv^F9Ta>Q@%Da*!{oJbPE{U-X>{R#xsPusJf3Nb!IBmv`!0A z{H&{?JS?#<_&jD6*joQ_`ds{ zTk%5*ri+_4Tv5!J3tD@{FDdl>pM7=b5I_0q?$eVmtNd3n{$-&5GN99vNW2l8y!7is zNKQI^d<$a%I_l$0=XIiY50r2ZznPh`ZHNL_~L)5No7C9^PCAc#f_oP0W{ zSRCe=To_9m;)V(}^-&A`0dJErHTq&{iWK}}-$*MuhkCS1nYLNFzhPMVOc>LBN zk7>y?sM@3DRwk}VR2vyynsqt!k3Bo6}dO#mMSv7&-=#Vo}SZy@N(0>tT^$0b(F+(BVq`hx6cD!=~G5yOw zXXCEfMom+0gz7$r$gIBO!rs@gZA~((`?<1x$2w&=+g{$ua0WVB{TQzx?1suIs5p2Z zA@T_O(Db)bcgU(5EKC=1Z-fWou!IY^)^OFVp3O_s8m4$9P@kJoB9Ff#l7AN$20>_n-@36s7a6T(e6m53SIc--#;;}ECF2GeSIC$y<1`sZ z$QUnUR|$1OfGlv4@ztkNfwyJ6Amf)Z?vinfjB8|EE@P^U<7DhFV^101lQDoJ#)CU; z{?tu(Gg~T_{Y04keJx|5j5}n^mhlrA7s@zL#;!89lF?DdH%7_sBN@Mwv0Or(utOHC zl`&n$NixRE_@0bjGTO=bNbbm38HdT3CgTbjPs#YBjJ&qkHU(cCW zXhk1CbJLYk$x5M&n`B%r<4hUH$kQASw2`q^uGaEZlHCe9UMS<*x@t=}SQsY@ z`pDQ>Mqe4-Wh62_!tavV-;XjD%eX_vH8Q5s8^5{fLgko7MmrfFWl2`PlktR%1u|}u zaj}f!WQ>*3Pew->pUKs&ma$yIDB+MS*e>H*8F?KLXa))C%#}KVhb)D7bfN`lJ!65ig&6TGSBxyoL1Mdap-uZUcm#y?k)O+$-DJ$F>; zv}sa~I$zfQEk1vTlwK%fx}08zxr?QA2fc*PWIff+zuLtEFn2;L>o1YeOK{JV5(db) zVv7{7E1-OXRLAahf;vx|&iQKzKmEK zM6Q=qSGTC3!AvV@Ac?3G7Q5!44O>`4f zNlqh}Eaxw}vQB`N&{S+9sFPf{PVv9#_*n^!VW(k|^M7eabhZ+l#Rh_XlASSphG^T$ z;>3TO*|>6s*b_hO6NCn88$q3HE2ziR7u2EFf;zZCwFv_P^$_CX1>rb|jWqV>*$=OQ zpt`tdO$6&;65qhiO0WyH5$yU~C$YR3gu-a(Ee3Uz^Cp1b0E(C6pZ62ogo1YzAQ1L) z1>>}tqN^)2#2mZ>*}49hS;%;!7#m$B5q(fDOGID@Z(f5nBlQh(bKuk$$lF!WI+pF z8tjeu)EC+w#T)f294M7-14jQaP!h(3>g1NE!(vx%M1WQ>E*B-CDL z66{v1u5MV_pxDV$uLxXIW`HKk`l6ei;1=p8xb0UN^>f8G%$b6@q9?-(bHx^XAdJ8Y z`}gV28ld1uLGY`>lz(M(ohSCUbofs<(Gj4HuZ(l&NrP_vJh6o({Y(vJ5T48Wy)vGi zC$?f`Jwg8W>N+X*H>81z;3Pxae`$P=-?6NKs-YAAyK&)s(bed=K(xVO#isdZ*cF(A zb(D?xCQuG2D^?Kp8NZq@2DZ>-G6m@`0;g|xf`-QCQTKPuXiQoqy5o%g|Mj+p^8dfy z*4Rh;|GllTM)=>`+W+3x*fC3R~Um= zial*#R7m#(m2uHZak%JXyul#C7`Y0NVBEG!oGvCEZjdF87scgFr-^axYOzAhF+$eV zxL}PKVteGgWTR3_|8|WSCz>R_GyW}@C>R$}-3_+cyq1TRUBb#z7C0L41A3H)`{K3ET-sX+@lwj#un?LlPl$%za9k^zhmX$dRV_E z3F3@Mtd;l!jJGk0*)XgzK3<0kEX{^$7~`85Z)d~Vc!`htR4fxGFy71PzdQicZ`MK9ZOSynB{LN~$S3yEL5N%XT-RZ4k$jF&cw9>%+y#8|X- zyUpTtv~`0mX!4}PGq#AovbKJ_0WQtYfyX(F_cR9X5p56G=7?HRJR+qI_zbC)QtCIK zi6v-trg?bl=i*3gC`NGyETY+WpuR!IZJ)u&FFV9eXz}JdAsS)K*op2MMV zumn^Hz6|Js8yeGL=-Uq)(*Z>MaBC_Ay#UYf25wMs=&#$r<{#kT3*HM@30eW(YJea# z12IDy;2@b#1ZK%R!!Kk$7g#Ct4DZOiX#h4x?T0w%!YIQuMli~7h0HU&3SupE4LEwB z#E${~0m?>RhMJEgIl~y4PXz8r5QJ}`lMB4f2s}f)cL}$3h!1T;dAu>!PR0K4EFfRjO;!A}8pT8LI$45OXFB!YfoH3s&>m|*`_m#q!QL9D62 z1pWzP4hiXOK1)t8oVQ4l&j;dtmpjLB5s0@OaEHw20&79c4&ID~9y$apG6J|s<{3U; zf&~bk3QKWY1?>i32)qDV0=^RHhHrYTfDym~5OcH;SSiaH*2+A?vCE{gCIG(xu?p+H z1QVQr(F>!Yz^^|+lY%b>o>>6{;46S1ti=1|60{0%)M|Wu1V071U=7v}@ae!U6fFQg z2RL{gx&wS7@CQ&f_@97N)=M*mVef48|1~7UXX9kL0n-e;iXkWmJVT$2QY{%q$vne9 zH$x5`VGGs?ko!`M72rM)YZcX2Jj#H4ATI`%ISV2JMtT!-NvP^bSiuZkc1Z;@j0Z7! z0&p3K*03MQfop1z9hXYa*MF3}jSmtEl7c!p< zyZ~a|Q3>pN5VH^kn0o?U1-=j%Rf28SS|Eb&Tf#;V^KKLHs?1*l_CF&PHUL=fEOan;t$=wT zc6iwh`~!3Zb{K9yhgk&v8L*%Naqxve@AHyj& zASSN_+TX+=h1>zS3dFiN3-|;SngK7KfjM&~;me}%fXSiH za954A>g@)4Jiw9+eGRY##9FZoxagr&SPoF}2;%}eHoy}g=3E)DM)xbWMkL@{rZA!w z%>|xeI*6_F3|${%<$^p27y&YYPY3P<)q>9j9(;yF2lykvyCB}YK*euTv)cfdfE@6U z$nbMnuGjz{j8j@T%v6@I7b*czm4|o`3|LWK=KU9LNSd`^v(; zp47q)L-yr_@eIevJVW;JBN?@4h>snZ|A?@!9_;IY7KRwIFC8p1!v!+WkUcCjIm5j& z&yYRDGdV-{kj{99?6I8j4B3M?;~9p@eAugajA}W;ki9N5C5DS-p5aEBXUHCRnGVD2 zGS41!h1X1OyfjH%hU?XE-NNA*OQ4;g*`Ot$wV>^wWYBKVa!@g-5R?we0_A{`K;@u! z|1_hq7J-_B0znf%NuYF47RU!w45|dhj}{sV)nIZ#wIJ0POvllOw_OlNvdf=SQ!F1M z@@`+gJ!^aR_MGj-+sn6CZZ~bO-Tq?xVb4nOu1y;gN)OA4$kFD+=OpB0&MD8S%(<3Rony+W&3R#L@`I@BoRe$HwaN3z)8YE`r#jwpg2%5+oH%-4ILS3Sn?UsVFK! zD+Gz9+=wL!Z4*lyTN|zFwUnURSnuySbI!fd`Fy^=*Y}TaU$3|4{eI4K-shZ|Gc#vq z?xb-i-Q!NWXSk3G_0OJA+=w^Xpfn|ak_e@$JeZ_rPLwl9v)BL1lF=O6$Y>khDA<_j zT*teDWQ^}t9U#RxwY5A9J0{ncB%482x;Sk#J@;h1^ZhgKl4MLW{Pi2J9f;ZisQscQ zY9|@)Y3O^L{#8T&$>|aeUCin08u}?{6O!N1@V{~SO$~jM(^ob0Elz*0p}*(!c@2Gv z(--WtNsRLV=Ph<#(5alx(a@VYeOyDY;&i5lUdZXQ8hQq!m5t8TOrLYXw;I6;PVdps z^EjQVp`$pxSwm0c^m+|Fl+y~MO_(kA{XKy5TQ%}fPVd&x-8lWVhVH=W?HalXr&Bbv zmx=T1G<;=FuhP)3YN#{Ptf3!rdYOj4%jxAB`ZlK*tF)Vbn(#W51I#xrMaC)|e zF5>hj8u|>UCu``;8YXo>V>SFPE}yEQH*$KshTg>KQ5u?ZI!r?+aC$VS2RruuUd|8I z$hUC1mxfk29jc+1DYIQ_czw8={O9jCi7y5V~hz8mMeYvg^@es<)AfttbqPIuDKO*!30L)Yf?2O7FMr?vg8%jxz^ z{r-XJ&G`+zMM|g(1D!Zp`n{{ zdJCsbj+1k3&VQki*WvUA4PBShNg7(m=@lCK9a}Ue8B7}b$-lCR@v$1dl*?yp=sTSL zL_=TZ^kfa4%jvNi`YfkM2-;*{nH=H#AdUPKr~7K?1Dp=l&>5WWq@j0kx{Zcj51K7d zKhW^;T;51SujaI$hEC#iV-3BA(@iuq<+P8TR$h4cnHtz5u`FH6MGZCdTuy8IHHFjK zevRO?wqJcX{eHjtvpa!~ocGtX>Cfq=8oD2+n`!9I$`@7r^p#xrJx6$D^`7H}5?sB8 z>2b+_&uSIj)T_+D8oCmv%QUo}(=Ro2RZc(C(5{?*{vO?#jq$as+UDQy@r?H5@)sJ~ zkJFD8lOe=(M^jjf7yhQ98*ut}4PA%Rk2JJ9r~lH>I!?d8#gy8fZpuc3-qeJbSv6Gx zIj!wwYfeAVs6{UyYUlx6t?gx3PXEEw$_#^>S9?y}(^PM)tTogiO_VCtTJ)*RB{wvZ z|HI~K_`f&YT$yO7;Uad!FUt06HI%niTaLT0Nh;dXPJ&l_XTLuQ*v=Na;*BPWm;-Os zx%y61ScUh`rlD=T1?^ld<@8gH`aY+%-MsNXyXnsQd6V;hD>*f4n6xwG94~x-hOjzE zIsHV_@}Hd6&Y5CPYv;^$PQO2A)Ptvh^V&&sg45bbbC%P8D9JTzRMXCsuU(a7gTa)= zHQIhzIIZ1&MVx-WUu?{xTiPQom#c4SHpNL!-)6M#y*1W1uF9RN2IXCiN=l5EUf%Ai zcvLf(Qn~uNCdoQZYbW$LX&b-Q&GI{EoM|MeTJAR?l60(s`YiF1GP_Rmu3xjFXjeRKba#kuO6(dxyiucL-b>k2 z$LCHJr1(XR8cClS%pr{$8FNZ17|nUsMauO$!3{q^HDh83o?Bu_!PXE@A{lKK#ssQ2 zJl5KtO4qveWpY3nS9h6iLUkfNEauu_%Hz5x+b#G7d$sLZRwK%o#?N2%=mFo498&p$5>(wP^m5=MSaCg0k%52kGn{QLTs@IA2S&hWNB1Ta_g~ z9prD`Dr;K|QCxk!B)JeNuywrq(nCA?l$wkW!ji*QvPf-UrF_IA^VlR ze%;(Yd-I=M@}LsdeR4xQ`r<$J+(y0^AMDslDQVI~{^M`u;}0e% zF8&kbn7@_#%_oq*m8SUjxl-AGyu48b*KW^6qCjP0@+ejO-9M^8_pb^^ZlKaB`CKWF zZYq_L)7YXnsjsYQVImXoZ=ABGrAdDBOj+A-qU1oSvbL3p z;9msWuc;99MDb{CB9B=>YARLQEg;cKV!LqHIuGmvR7y`8*0=BB+6BiG-|UQ0BHDjO zDk?v>UyFY~>d?#m##=VgjC!Nl`A6kwhk^3^Kb74bd+R!v^R3=0Kld7_?CRJ@w*}i> zsMo$xvbu2g752PfpS)JGI)utk|4@^BSY9yrwKA#?mmkN@7V-nHl&szZ30K!H=RIC2 z9gTK=!ApmJ)=TAQ@ORbhH`wi@=z5t#d)oQV<$S9$<=;L7$?vLu3%f1g`nCVE-U$BH zKMwxMKWg`je&gLQFBtrfLIVd9&L79Du@B&dnkZk@*DmKhUMN3z8c6a~e!<@k{j9&0 zd7bV24NM~Y0G=x~y9^{3RDI`izSVQ(=k5c^FDk#~nM1$!83wHAUOja%Po63r(c&#t z`C&Of_^I-5$ARRg${#Ov=rOHmH#=XuocAbId&u<*o;dWgo~R?`{0(+t5S#w7GB0Q# zDds&d=UY8iM)k1sTi8imZ2G?x+7~^4C7iDVj7cGl+9}&w*7A*HY1jqC-iHh2x0t~3k#l8jaI!;)pU9~dS7o~go>Ol9HFAl)kU zu2wx@O?MPiTtnr-nBhwIVO@0v>IGIUIbEWbH2Y*YxugUQ>!NclFSGs1YYiPH|9nv` z?EkA{3kUH+R*{#jVpl7^=S;t-71JY!lLEC~!EHy`>D#=)Pwi!{8yxs)f&Hn16 zPPLmsyyOA8av@Jmx$34PrRgS589p3`5gS9n4M*AO8$9K(;W%W}@s*d^uJf|d!*PjW zW&N)^>ILz#Pd*$@_VMSCWILK>7Pa6aI%*-SYBrPi8naiUe^C7 zN4+3k#*&)Sc#GE@g{Etcquzv8GER9^V+ zZr%k=-I9});Uh%r6)a=fapoC5B^JKL^soY zf>XUX1SgzUo4?V)Q>hmdF5lau#KsJ9UwFzPh|0Vc<3wb)J<9(1jTDa^0ZOZRuI_H% zIRsK>?|B^vnV-2Rwk08xGWX4IMM!7m=7M8#@lIva!oKbwWjn-UmHP{a>MEBL@3Iu* zq9N}4vK*3BW%r_??gPt-o=Sz!j}s5&)aOCEzDFIpu1A#z3y0|LA8|0h9AUY1=5i+P zi1Ia<7UfKXBZ|}K$K-#vE5Dk$xHmiOs9axZ92cs)oarDgWMa!KlwW4Srgf?p4+()H!c%7dzO)iyP2L54$mIzyGtDQ7;);L@$C zH2r`>y8VDE9a_%xJ;0=7j6- zl+jSRbktM%a;2yH`tp*M%BhuWaSa%hFhI9&pQA$RzRW)J+GAHMw-U$c+|nHdQaUea ztt>KMB)t{m>QT64r>-6)-=43$TpdNs$|p%Nph}XKxm#kz6!jUCtAw?$r#udup}bm? z&X#p+59s{oiQ?c1s-f0+m8li_WDk`*c`=9a~+a2XUZdbCtSf{vb9EG!V#Kw=YlqlG^ zO192cMsE7n)i_(!3s7dR@2Y#X)lu)sR)s3-D$n{)-rD8m9$S@p8`f2x`JeL6UpVTw z`a;QCpX{ppui(Qi4#D6ps$j&Y|H-gmvqLazvnrT6<3EBeDGtHf6ehrW%DDBE{BDWj zvTeA|y2(*|dsF7e+oloRG8TS0*4=BPqd=D#xP3p73#Vq@OPxyOqJ_%s#Id?Ba5fS1 zCwU#;>qL39GeTFk)=}`++RRSd_Yt{lUS`FwzaVmEj8gPveWmPVmGuiZxJHc=Jq=dA zUHdhD>15cONt!G9dqZ>`S2=PtU!@-1*ApGg4~gp0y|A2#N>q<-?{cPEB0IWCN9FOp zJ#J6N*f+@pC1dR_S08)K8;(<6d~?cuh-25~UQ$la!MbL-qs5@*N~O7L$smOu=%xE) znS-COOxb(1hZ45Z)xBCdTS@7jv4uD(*E2qo2aZ%HtDAD;;C}L%vhq+b_XSHF^=BzR z9SU`CP)^iTT4sjo3gR4!({akm%;h9j(H-uldu4L)PfR$@**e=(S#vntb$t1(C|$4% z$N9!1xg=B>eYBT*+UJf++my7UyGVdCFsm8)REf>%=Dv23qi~s$leJOzc%g&%eW5Zr zdzky0awc9mlRcQYDbi>XN>O%oCG*%^UA=Nm z^#v@a?$mrot<3pKZuTHDO!@8j2Q@n~KFK-3OO|pk@&6Fk%4~Gv3FcjQ#qizUD!o6E zCCOv?Iov5+aBi<$`mRB{?p}D7l%%T(u>Lexl9pRynp#I!l%!>rXdk@e`=_Q_{wKgX z6y+D3OFmW_oCuz zkWwetkL*%<`Z>^$nxJp z4APZ_@n?O;myBq@U~jX#iNsd_Cr)_?KkfC)R6D?AVC*Uw$*D z5t^!vQtOU+>hYpS+!K5$FMQR=h>cnn4IskeU#|@48TH$2wwxv zJD;1V3_0JpYVQ^{TTHBRvMv@54!!nD!uj={&#;5oNXO&`4>QI;@`>yAXN1!7f?s8V z^Hy%W-_r}arL*QDa7oYpj^vu({cpD3(mi{<})rNQC9-jCk_;RqO2|O?l=H(aH4k)0Gkp1 zm}%x{%;5O5`U&jR*VfX>c@a)K9vdz8GvOthUp3|Tf+(EbhhJ<%I%KZAIE9d^nU5}= zk{gmr*!9u%uoufJV)p<3RNd26j0NN}dEr~;9%R#2*4 zj+668C>t&}z~wFL@&PhZ`RIxTcPIW=gYnSwd;y|hKQHDcmav7W&I&AKR% zMsso7%hp$jQ4;Nm8QM(AyxPaB8p>?yYlLJpZ!-+Au^Mk1D^;)gc;9S{S@sF)V2=$t z9tS~E|0Py3lSxi1gRXs0OMwD;eOO-eMQiMbDEiT6xb#k0f6c$%P?W}(*`ob0yJ`%> zfuCo+f?3W^t{0r=E5+C9nQAZzI_z%MqaYiB|dG<-tAEO&>I7-0LOOGnB@KiEYD_edxwGQ3}Bbv zRAPQ=UagL|%{I_{r=QsxYJSkqyv$}*GJk4H3YFVG`I`>BWkV~*q>UMAGxR_dUp6YH zMMzSwO8v|~Vqoud*ol5K)M3>?XW2Can_ymfy?Xu3=R=daeOlLM>$h^*zlH7bb|wCt zQ@<{c?nl~i=$Ug-I{5ukY@y2Pb;P$Z()2T5Qv+|75=A<^sp+?Jwatn|4_ybYJd6&f z|J>3v1wCn-ADZMm3=VoWob_xiJGr8g2U4iVHO^SSvqbC|hd=L)gtM1@t6dLG(zQpm zV{9@alP}NIfMx29Ovr&;?)J)C-b>V{pPET*ewOI1I}%}Uu|)Ubqe~9}*0*o}N1~zc zC3^f?NiFtln+K`+CF-1JX)wW9ntiPPx2SJ4U%}Q#U+}cDA}T+`8Rc8$&*H|OD_Ol8 z(0&HTsAh;(e6QDa-GlxyS;yD(X)97a^TX?d2t_xY2+2L+ine@+` zdrx11bW)bxpC{*3&U|~nsm`riJB%bo=b?9=lG*xSGmcB;yRtJibpJ?Fk7L`hxzN)n z1URho|4}x+Y-}ic!HRbCqQksMms$9-rL*DQ8+47mA6p*binU8mJX!Tl&#Z1EvYhse zj;=_WWOXBCXa&-OCOeU{B$AGBCP&FZ>RyoyAXBr#E0QlN$ocoPUQ{Oj707m4Pe*YGh-Ue|7S<0-;%rYm$dG-|=*1TM`-Y_X`ZlWBGRM z6ZLYq()kJ)qnVgpmgmQ`!`k4=1?+^p_&Y&Hv*Gj$TE88sG5Wv`b?X%WgX@4hu5vLt zY^&c8S-o)pC*#TxA1K9C$98zL`r_$iG7F{7~lGG9mjLnpC{$hR4u zp$=wMef5o_;BAJJEGe68EYF|F!;6>avkMtzh3XX(>z4|;oafZL1MwxBvVuC0>2m#^ zPqA>#b|S3OmA3iT^beTVzSm1^u|)5>G(V86ue7<0;Cf@GlRA-MRXQSQn{Q0~9Lq#Q z8=BjR1j;W<>Dx}EUFDmlteW%5(yY#%Ni-qj>47e!PEhA3M2dE{n%U_j9`7u%9>J*- z+qWtTtl5lC(&?C=r=D>*KbHG%AJfWRNgNqNS9K*LDm!n+p=Ne|cZyoOlK$inZQG5k z>C*5NYnT`ldtkBJL*EwHI-Falo>sfF<}ZRXF}wPSX8k}|5A$YQ(>L8n3vz-s>rVQb zCO;>*{@O}CatK!6G1$<$Fiw5qeh4Gu{hU~2zs_Jk?>-DVN%tl72qJ;? zJRhMH+w*#`Lj=uWt})W7L8L7SrJIAua{XH@ArveF~J9?21 zYvrtE+wzDD(y`@fFzyx9b?iav8A3Xf#dL5839PXVs?B{&Q$ z)HaV8beAsmZkvBUmR*6I&u6t7K!(Yr8I2!EW_W*o8@oKQcS+(9Hs25IWP|NpY)r&C zRkwq>4OllHOY6v6kT-=tib=}oo`*}BdU>@T_y@z$8K~z_(o}x9mj(?bjpUb0 z=+vP&TsBciWp1AzL4fKwQ2);ul+-Z{v&6jQNJKlN?>cyd(`xEO&mA zL2W}xJww(n|Fi4_Z8MCFmh*q6NyA9Pal3xTVO8mc&BjhU&R?=su@AdFwTB$oQ zvD@bea3^NH{kKp?Gi6_{jATk@9NG_KjOK^Nr1n8+*!fBAeW-3Ysp%4kVqBDm(B{L* z{4rTSu}to6)*Efv{&L>K;|j+3oB*5Qpb2Dru8T4LwO33L4)p{STgRYP9JveOqmoB=Pguxmevv&5Y)A=&Lu47)fHuE_!_=8A-mQ0i%e49H4zhk*@NMD|Fc? z94fP^dpMcuJ_a)j6TR(an<0XJ9!{FcfBZ!Eh7)i3pJJL9P8vsisrJY{58a)<@VyI> z+50f|ow`tEBYS_LIt)6SZX=4ZnE%y&CcI>voP&jI9EQ}tJZJr^L8D1MB3tKY&HRv< z2>B@M@fZ^2L{?-?h#qoeHZKYKsNd%co=R}gmWJA{G zNOD^y9q7F2q!o71p6R3yw)f-d#8G(CqlV?uF=H{Zy1vCbI; zw#YB*80ac(V5D=|S+(pA!0L0?X2Y8FkF)gY3{u_uCO9I_|LWPR{_mJw<~*F{kDR5x zpOOY-2MuAciGK7cX+sv$EuUiT)tBD;lx*{EtzfLRFmZjD!+tX2!JJBP-mRypGjUe& zquDcYu5h7$%p}X}_FvB{cz0qBDtP-d2Nk?)(iOAF--hE;Fs*Sjn!`?xM|iN9u8ks- z$x!+{ihS#|Z?YuOgCj{Dr(m059X&gnMjED3 z(_GS>M9@=n$p?WKBiPZV-pmZP8O9-EH#0qx!ZUDT3Nhzm^j@=Zl??jPX2Wu)DW|Tj zr@qm|%e0W!ekixSiQ_uP^bR)`H?fK{U%+k6KM~z=H&PEbGxmTjnD|{x8&(n05#qMT zV|h!Q^U=G}D{+dy$?iz|+i!BJs9H;O8!SOOqxg8Rgk>~aOVaFUQmr~0*TWX5TNQ;5 zv*EbV+tH-9ECnh1e)grcV@MUx;n=pv>Y^f!;t=>4R}b1XhScw#i1gWhvU(+CXApJ4 zf_brV9lHcWo&X2(M1VD$tvxXcH*wj-B|nDL854yv`whuhE{~Z7d9;wff2-w$_SBOV zj{B7HlJwr~QEQgQiFeYQr|CmIJ|i_po|;fz=@V4?&+XY$tOSm+=M(7cZMG^%GE`x$ z|AAGp=JxEf_wrO5&+e+)?MDsup6GYn#UEo2Mv!JLNb4qbRb75p)eM!{?b79OinZ9! za}2AR!<+(H}go7<~>vyTYz_jcdQ2QPeb@t`87Kr)%#6X^UpTJCOSBlcvlO}JH8TyJDoO!VmC7`7c7@@q+w^WRL;r8uV8aVq7z z-)2}f7Q*Eg9DXH8j|VwoRpVE9oW6}EEy*$3d_HMSR?_kFiLpy}CXdHa+~wDpdu&w} zz%x$B#hIuoGKgnqM)P%R0}P4HAy4%d-ih9sPyDOgT!P!9i|qEOt@r6;wB`cRM)$>g z9Hk={kRdhNvkoWfI&kR7A&`Ezfb1hq^y7sjq;60)j)Gcvyw;LAcr@6pJ##9-@uc|+ zNfY^R6MeRjMCq%2hK}TvIQ6U08yiaJM&~TT*)5E2TttGZ>qp}tvlTw9f(>pykDE4I zIQ?@G2@N~A7(Fd8wl!FeVj+SKUnwvyzbqbgp>KOZ=R%(dU8p%nm2P}r8dCwc3jJ_m zHJ`yDFp0*0PR_a*zQMpIJ6FsayqHvy$(pQDaqQaUPCs6PDKaSQ!V)r6CT3cD8JU7b zvS}Hq6zQ+%s-B#kt zy^naqxgIYl;|mf0 zP;4`^uCiTSY+-ZK`Q=wxQxkBJH3ckCZ@c=PX7m6bV;5ax&UECAKbX3l@#9PYm};D< z&Y3_kE}S8p2?q0SzMA>TDK)bZ%-@{3&6!9r@?>7^BB!E2m2uHA&cuRw%$YqZV~%69 zv5O9qklo&_=VSsWuX6HpPU0wM$_w=TD&p6#DlhBF^SYp*5@!N9gF``w1BE56$C+?2 zZMnvsGZA2#X0fkR!P1l{exT?7EA7u#p@mv03*v5=fmP)D`9J38(~{v zJ7MXtgRpGaY1nz#_pqz5mR}L68!Qwy2KEW;GuTqt8rT-t*RVsdQ?LTqPq5!$k6|-* zlFrgxOzZ`)C9nk8TG%GoHrOuMKG-4HF_;B*0rmsz8a&fAd7H_P72H>B!d~Qe zmTl?KZR8_;bugjki?|4K$arGgacie?dIK zn(xLidUrc%ptp3aAoVwgl;X`*?<|{PEv=DCrn`3;_RiMBd}W|{^#uz}N+nHeGF_;- z_kqw4F7)&`8d}=DkH@K#ol5BUsbp+rW#~H_R#7Du+GYotNlNIB9VD#s#Ubx({mmP| zzS==9%Y|*|4_{%TEvEH%lF%wc!rs|dId!z1>2F^ByM@l*Nd^%M&D%*@G`}!dq(hsw z+{AHT^h^kO+I@g|SqbY!&$!UiZcc$C);_$1cZSq=7nvYmZAF*v!g;O(J+KS6q5Emk zE)rdDRDe4Bs$mr!K>9j$$(`e2?DAsH7Z33i^m$7w;4$@b`c-kjb7VL%%m%w z_%)_+aSOWmYciZvqgTF0z6AQ>YjRb-(t=*x1MSE3(H^qU(|{$_-03)qjOORYoOcyN zlUm4hVH&wd>d;AhNw|Dw2|c-&G;Kzg5Nu;7YtO*3Wt}{h6|i$flJgRkb+;OmMwIq9 zhraZ;8Sp$Mog|WzbaOgsE@#Ej3+ZIO+t_C6ZAN9A0f+HEGE%;2qC5AIk9AS;=s;r} zt5^_Bp|$pt{@zOli@lB^_ilSRG|Bq_dO2`8B;7o+;`WnYWci0>G~xi6(mG(>#W^XsG(FTGXLmWsruZz6hUrjP?7G z)9pv$>4e9!V%%jw?6((DD6U}*om-(iw4p8#(68uDzY00ij2<)drg^mT>&6g=zUG1@%`{V0Ovpx~leGNEz3_Z0|%x-V25edC$O z=mOXo=t`b>gnRE)`EcEIUJg#xLHu%=t{ieGdn*?q_#uE&?cLQ*C4fC za>1Ik*|cdM^_O9Xuq&B!B8u_wr;BqGbAB+oIaAsvlYC%Wi1^&Ad(Y3kyxAg%`7c|w z=m_*!)&r0H&lNrS3(Pr>6~ALLKx3HBG_S|{J?Gl?3(;GTWovk;Zk)>A^q$J_&fMqZ z+?}iWXYagRoOkZ}O}_)sBAeewtj^MdtY;?7mUH(X8ji3EPao>O0b)`###7jH&&L*= z&6$hY0^$X$`h0ZGxz~E{mrVOw-y#Qi_P3{dy^Dp@Vip{1n-Y~hq{>DkC_0vR_P0C7 zE+K*L)(T$PQ>~L1c?qT?~v%lpZb1qpy*BmA_f~{($vCgFoABGp6 zdp*7YJ@6}4o6xs#VZD1j`sumn;rVE!=JpP_b_SD^e0t4Huv1k z@RD;kN9#JUY&S>yb!YhdXlFJ4eYAHy+Uf|Y*Kn}f*jPhfhDCEPw>x+LrXhVff|veh z&K13C@xuxlb%fM#X$%fCVFF!qgf#B%#iRCU%-XynQ_qUV;x7Jdcy2QG|9wn}=q7Lq znZqW+zi`y!7&$7?XGieVJD7GmN@i9m!kWf@89EnDdu%5?>Fc8??@0S(kv{bU>Zxa( zberK+UG|s*567PV#I9sNwS)6&*LV3wKpa} zqVqT!41o^c2;egM^6fm_x{RQa*`&S67RsImY_7v{<2w0?&9EDOd|Abq30RljL8-mM z3$)K(Y6Rd+tn)`x@cr@P0gnQ;tzH&VADq*EWY0VjohdSfu!a9Mo8besHTIl2oDQ2p zJhK9hksv~1vZ9XT2^0B>u0275noYu%X;iUm#oitvIe0NY3?U#4pnejdS0C92;;PV_ zmYpE4+&)Z^q`98cJX$)3XT3d1w#lSH))%L7Cs^Zl2o9ZSzkhOqqkXJTao6|I_q=l+ zy=x(th&gpkmmH0>w0EP;3Xk@ zIa)4|IEsacXVt3{IkVv`$3nWUfOM>EX<0!{6+w#%u;_b~^|XN4>XW=V@bciP9P2LU7%0%5H&xWLjOXQVIN}~sBR9i^rkCG?UuooS; zEJ>ZNNYX15b-F?ykCN9o%KUzjq;{}sg#<{~hs%p`J6?6P+@zLIGc2E*6Uk?`Ecv1Z zM@)x|md8N#&1g9bF!e)uOnZAJEDJXd=ymY3LoGivA~E3se)8J~CGB*xH_Z-b5lDfZZ0ItXff)Dz=dW z?B&&_5UDBbU+O(h-ie;&jFamCZjV#DTXno#znWb;ALpq&n7)Yi94|NXV{gF9X%w z%w}cc1i1;e#lZ=3+w#4x;Moo=#XbU8C&{&)i{v`AqGQ6e!ISh1*g;w=LLTKv+-eK% zHevtLB@uE>B;Fh$*RQ4DN~Gzq&5ppkxTThhhI8xn7CsNmaxIv}k zCd&04^sU20(j6hvU79pe?t)7BC_@fjlRg%!}mNqmb;l81G(@6+1f6Ui4={W8bO>K3Uexwa|aB7dRW=LekRpkYX8 zzsWcdg0tpNmbbf9&VDY(u?dk%eP_rM*gHW6vGmRi`6H|<4t^?o(`lc|{fU+N6Np5Y z%$94@4`#{(i5K^knR0JD!XoqKI`r?EatJZfb+hDJbm%OZJ;{g95N;w%)_uS81ej#yN8p-UDZd)@iS?n5We2Ng(j7=%&Z z1%OBc>pP6{zpVlt1d-mS&wY;KVCGLC;dC~GC|blIfwnfGPAVmFvL8KVLVvTF{}CzV)S5U@R$9a; ziRLUtwh>FvuooS&4E@SpA_rrG!LLoLFU6)Xaz1t``WwOYA7O*3)q2OHS~BzN(5;(f zSNd(d+!>or&Ev8RdJFSskz$&&4An}xG-SDq4+{4&UOhHeXo_WpKqGrvIR<`c-}}6M{?~>rghoR^Lh!4652eWjpKcg6XXuQ zu|ks|uvBORMV!L5TV`OhE=s@vOYA~{5#hWesUpr`9qH?9{6>sTV4;w?h&Yeu?U^XI z^vw{QMPTq~o-#_rC3Ib)9OSG2mZ$U)m?30^LRQ98x~@XXSfNP}82lkm87N{seVT|} zJ!chmL$Tnj0teTzkbRiJ(% zuaF{QFJ9r=8o8~nF_ZTpTwtNlx`;S{YkRMi8~UaRE?Z#oB%U`?#73s|rw7-{^?mh+ z#n=RfO%`Jl+6bn_*hF!HK>ZXkHWA~b&&D>;#KxA)#wH4^0t-cj6cH!CSK$_`5O{=l z#3(R%DsQ1oRKPW4oxRhkLX#mdY#P@_h}gokeSKYy@|0cz^&fFro{$yOA?tBgud*KN z^C+Q-6Idv;0U|DC+P=QUBD4xjj^rs*MC?LqDL9GVSTEP}4a^cF5*YTe7?IHWFl~@; ziYQJKsQ-k^!bKcNud|d}6r?N@oJ%%OT`08Kf)8WbAm4CN94Rn)I#20k=jrARNcrIg zq|6pvp1`mfTpKImIHnEq^*Y8|^cSfAl*@{REQOBVh?KQAB4w=5BnT`N+CUL!Fl~@; zu?VdKlV|djDI(6JwKlPB$x;R$7u!-`*etFs6WS7{?b{$#6lVz3M{!w%h|B8IS1ED> zx@!}z0WK$aPA`FlLY!x>OqXoJoYt+ug|x*lI3f8^*~>Rps1pPx&*n`8irAm#P`N36 zum-&@5nQRjusK|tD&kg+d!8;wYx= z>+AKM*j)mXqj}0=AxmImYe?&E#*r5*GzkL3V#J6wC(?#eO^dU_YWD885$MZ&t*vcx@qF-&nmCog~*lz;EV!1X? zXeC;-6lblthTvnFHpn+j6h{aw6f(Vt zlWFU1*bUht%(K&<^K7vqPU9mwv<)NjI>TG^7Z|meYm0@}!nLomv2L&TrCi%LRtOUW z>P@^tpooikg*ji!-F-_1C*|@+N`*E<@TIiqOY}Ef6h{h-isLE0M2ux_D)wx8BKk0X zJNl3<3i1S&iVCqJ##)$FIJBJ&@T?f1z``YBfI^EkZK~Xu)=!mvedB~CSzvHH*9MC? zjA;k^mWoh1$5WRq&FcIf5ZC~Fq5xQL9sRLGX zS+?Lyn9Q60^OfApH$rHl1coJXt&fPym{witeBhfWxMF*qHC&q@V%(4ILRT;DL{|gy zc-z4Olh<->snFtnZ5OtCswmE|V=|XT*sIeeyD%b`e4foqVBtD0%M-G2+G8g>QS8R- zh!mPwfqI2&{Y4x_5AMc#aPn@f2MYyPVlNZgWDzGYZIEw3ff$Uy)D2=VLY7Laehpc& zz1S|_#ARV3&Ze`OtW<>3MV_^Ua#@Dp3u)2UY_5soNP(#-T;?TWD>2CAxW!9Mr(;5^vF8VAy7!vRKHxaE(?le`}|)YrhaB2($=spojzL=rrUk79qZw zQs-^J7M?Rj#6~Q5HX!E>mNW2sE;0(V2yvMZN6=b(kuyaUrwI)Eg69kuaV%Cm8?v@c+OZ6Tkx)# zZOOEXH1YAKRWnlps+5CC?cs;!-+#A7)3f2(1DwLY5+87rO3Sxd|=V zC;RvY7xMPQ1g381DJ2p6P~ZKSNogX?78sYxWsxEdWU|KezTw5r# zVe~0W87qnt1ZD_Xpok-x%#SYq1`F~M!IcX1`HH7Z6>%KR`35PCmwC(K0yBinMZ_sQ z<)CkoGDC0{fe|}-$|!qXwvn)Qx+3?+qr2rLm=y@>U+bp}#qi!e{1We-moD`I~p zYfMjPAf?YWo-#mSY8uy;2yHMW2az&C6sHJ`*vn-`5r?yswdm4=ICoeDS0*rEpBRyd zqqug}*H}0Ibr7o{<4?Q~;R3_H;T2p&oIuwd!jrF%LvnN948d6hW_-)FQ6f%dTI{Hw zc}jnQVHsRjEM(bChAVoe+|)NgXi@}59pYM}hzrHoGV$1@RB%!;&#ynswHboPtOBEs@VqG^_Tm-Pr&PCCh2ZPF17QMv zj`9kUhyz%K!M+(Hvq@Pg#t^3EKbB0 zx`W9AZt-lv0t3F|*-C}1m{!e32UA3Gn!r>c3m0)I@8J4ubWpm@Q|bi$b1xO!7}@`UVO%lId6JKzCFDVbv&eR)D|)hX>E4@=i^3}4UD`VGfq zu`o{-cOWGj1y3iQlxy~LdBnr8Z#hPaxKvaN7mM&bfdOJ^9Ce@Tqc(BOqd7>|)c-FY z`ful$AmU^Z z(3RPnqw~L$>zgF8_>L4e;h z;9d9^1s^N6cUTeEmxwr9#Kv8m_YsSh3>Jsr?O&c4aje*sfzPywa4g=V@s+yqCDhB?t`rj`P_9O9dZJ*X3ZM z`kdm$E_*o!h_!jLz*2!>Vzf|#Ad^->KVD!kTkK?Bysu( z7T26Kfj;7}@fT+|7jYGd6qqLv^Gp4Y(08ry@*Ru7T)AfD0CCPMWEYc~zG))N78v&d zzm8b__%EC!T9hl-Zu#-dkLO0(6P5}sKEC0Hi>Tw(nAgFxxm>)>2oS}=0!xIRGv!Z=5Jj7N~D7u4F=%OeZo~p*@ShU?EErG7CL;R_^HQFE(1Bz$hUr7P3;-XdT+< zoZQYgMQG9lrV6b~6F!b`I{%y;)UZqxyFB2-)wkds^bxY``*>Ts2G1j2oWn!IaG{D6 z7$?+TA`YZa&$Em8d3F&OT%JIS(8h`wtBgFnGtNQUp$JRtav@6=aX39#fK_qu6W(Z;K#Pz` zB95ZI7ugMiy;z{sn)fYA#JCr`$c9iVh9EFl$O?rF?_Mur4H+wn69mQyS)hosY3qDU zzd4sM{fY%=6=)IK6cOV#jA<`3ZJ@a183jshcrVL@7Vpo#M=w)EahkwjAqy9=mCk3f zG7-9n3s;#P(`5C7)tLUCQ!P!)dV)pBxvBCdu&?Nr5CGtjyy#EKRCjF0stei)30Ldbc z#cFHNLZu&(g&OA_f5SO|RlQbf8B3x$tgf=C~ROVV)o z_>qTH02>P*zvPfQ{$Dgg6f?N|k1!gTBcRsm?lUz-YH6@V`IygroafqAgu zOb<-JuW`pRJYM8Ob^V1MKe7xVYVch7O@I&jB~IHSOuWVTfa&MsE0{b4 zS6KyM!UF69Rsm>Sh+V)c09_Vg7qAMzJlNk%4@~$RyMXC|(-vbFOvfYz+FHV--Qqdr*035mln+QH0cjJplY$5n~rY(7Xg)Iah&#a|X zSRvzqLw8~eF+H%&F3cPFc)BcA+l{To^uTAZzu`+?V++CFz%Th4lj6`GOdR~BLp;trKbBZS>WSotknG*Y)1Ha&?G^I&LFfbDn!SOtbLjpdYL`s3#I3nQVaijDb>=t}H zQQl|@&6vuqvdDsT{g}}Ob-1h+vhHagR^FR9?_NTD@tOD>NY#00z zVC#I$1NdRU*)R+IXy92G(=)tLfEfNQV8lg?9)BsA;krwhyzn;wi(sqaUj@2+4?TQ_ z*T2X9--X~7f+sMRv=nIm0lfpi8u${nAO0KQr$3@Y@S}ir3$e@K8-bHytnL)xHsPlN zuL_^xec?X>dKPiLrwL9|5i|#`hDlLq7Yt1gR5v9`5yuOuVMc;Lckn+StBt&5?J|XoCVoztw{1D(w7;7vFm;z&4LPg>42c8nX1$bTfw{GM3e|Aeich4a4^POIN| zK>%>5@P`9e2tNUM8pcLx0lMFXkH#1dVLtfbz%9bx3j9s@cY*Ey;9EBkxEaPKV+OF) zgnvqqNV3O@q42UZ5Z7`XUP?1DKsO9C5Px$h4gUyAEG_z2*pXJ`O^ z3NY)1q|T>oV5@&Hslf*T_XyvV2B&5j65+cOFW^5fxnBm9-(jSv-~`+Qli;TT2imwF z26Q4s@@E?00~ue0!G8n{szB6H1_N&j{}%8oXU^{e-gYJ?wc!#3wJPG{3Us0_@I+-I zO@V(BSjUY>ix>}_-V~oMz@Gv1!Ur=a;X6K*fzLjmky;Wd5I)0xuu%9`;PqC#;ak90 z0r-*)Tl7tU37^ro=D`eLgEmBZgbIy-yJ1X}1{~j(`w_tVFt-1a+Y_ln2f}B5N7U_v z4@_8H;BnY3_$PtwI`g^=dvrku!G{2kGv9;;PQvNcl_!k?dUeAmAlQrnz;9p~@H2p( z-BAI0hC^WL;R<{Z#Q8_SM!`fXfu7+XFbn*@ff+rBbeQDHfXLaH3z1^Si=mz>3;tc;I~Y66Bz#{~8^-*)z~RCl z3#72Ib8-Gpf%9!YOdM3s06u_qg^v%^qyaEi86T}l_yAA!8E%8I&f()W$trw?y#{bi zIBk&!-K*<3_Lpk`=2#%7QtOu92)_!7e0<;4TJ!kPr4 zX@K7dco|j<|0?hqj7{XffnA33x?O?Og+BurJq+^<`ZyDu#>4q0jRKw$z6DqUV+}Ku zMsS~D42*Ry7I*~ag8!XDHt;tXYxpj3(kOiC1pXwx%z6!L2mcMQ(`XC;eplcUm?<2= zGC04(7Qw#@Joq6x1phGbDvUM2FnyVs!t%Q_8|C*e?p?*x1bYaW9R0i`J{56=J0=>l^{0Y0{r7QxsIXLtj~I&_P1Q@I}u zoG1JZz(V2Q1%CJuKF>v-vA}zgn6&V%z^9)ODV8-1TsQ-tOTk|RTxFVtUL)85+#Q8U z0Y43Rel`-r&jT)_&H7{F#I1ABrEX#Vm`7*z$GT$iDkeK zmtYH_Lt}yI%*U4754;Csd91*IrJQH@*;4F(CW=LHN)%XtRpa?C@C3%d*y%PFID8qO z)eLvR*luEY4R#Wp!^gN%t>wG{d~hq_V_UW15XQk+9){8iUe{#>dfgEL>qH=M2J?}K z;X#-W{x2tofxp4jNwktkGZQhnpvePHT7?-8%@kmW86OS8XSf3v0)H2<-fG^k4{$n+ zwG|B{Yj8F-LF5i+6pZcHa3KD?jbs780qB~HiwgV{V3qZJQwIWP!q{P%0t{C8C>eeW zD}g=(XxP9<=>^P(IpG_?+d0xpBGqzrGt*ydt*HwF6*8it9R zc_&r_Z^4FxXSi$&F4^#}0@r+jPQgzGI&bBjb9@*Go_#R5b~`R|u{i%T=Ns516l4J7 zQ+cnK0UPYV5dl5`Shfod!k2bq=EL5=XSg>F7ashdDfR<42(^>vA~VO zPXSg-=lMN>x#=c;;W>*SY#)wYRAzVw77YI`urLFcPWTKjAH;bc{#D>#hqzw~j5v%A zf@e732s^y67y-7*#uuIN1AuE`tV7AbsmF;_7ysjpNE4igFgBAP0SBGHtVO{|;E0oa z7eoNRfQ<#83LJ2TNRjYEf#1QR;ah+cb9twy0DaH$oWa2LFgCaF;k%RpW1V0)^Bnd+ zJK;pZxdux?qGI6s^St2=z!Mj6K41+11M)C2;WG?_v5O7Ed$2t4Qa%n(STX!C;5=9f z{8-@fOSn|SPXHc;u})-P!ts9%0Xrm$fy42k@xTa*_XImk%%Gt$XWu=Q2ihoKEr%P)`W&5Q4Vf(}PN9>Q>AGJSwzh(db*Vfs>N@|5+n9Vh$ zigdHhG-+~4YDijvX@bO+WDTh)k~C?8M2=|&i6p7G$n(Sb0}cmQQia4cL5>`Wqz>5w zGdo+cW(E^vh#G?0lx6rmU;C`COQ(1<29BO5!|#UA!?hI3rt5(B*86>s=rRAv=c zQ59E7l~#Q^4&TI|GZ z<}jC~?94Kjvx3d+%5H37D|5NWeID?T7rf+vbKdinZx?O|Q&=Jtk%&biQqhY+jA9bA zuvIQ+~ z*LG_SX-Z3mGLo@OWGV+a%1O@hDu1;*r*k{6^Si9eyP_*Q(A~PFTf40@l&=C6sz}8O zD6V=ns8Q+P02r07#sDU;zzNv8oCKuc46>u1E4YE>?ZekEuWx_9fBEXN7jQ*4w4i$h z0S+G(aNHjy>>XIo4$epZ*XmX+l}kM0lYoReeLy(r$)M9WsYOrJ*6FA8Of#D6^sn?r z7rIi9`7B@|ix^;>^=$Zsjm+d0KXIEo{LC|+9~IpAvKOH9_eJo?pFh(#>rd(5mt)U= zdaTFt_S1JSzhCYNnaX-3l&JKP(4=Oi^O^4m?+H1;1)k0)2L&hr01H^b1`KGz5JoVD z2~6PtM>xS5UZIT~M{e8wZ5@QknchMmf-yvnbF zs;J5eR9vIHRR%GMr9qBKLec}|kxXPJSB*uoL6@I)>OQ3@cqSj8rcdXF&rf?b@4TY|$Yyy=_a?c+Bu zukU>sJQ(G&zcc#whd%JVtGow^yCm);K1HDor!Nlw`uE$Hf8Je!qxt>KXUG1Pnu5;* ze8ylOBH^jVfgi){v)mVPpC=V(ksb5Q;wo-p(G$6~SNnBPhsPR%n%Dhv70o8Nuj57U z<1x^&k!EYPr*_}TM9cErW_l~9LzlO9X`P2KgD)yGcuJE$rFq(gseS1^Y`F)q+-bPr=9oHoe#iwy!ro5{pY)v@;{vzCanMf delta 37625 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 { window = glfwCreateWindow(800, 600, #cstr "Voxel Shooter"); glfwMakeContextCurrent(window); + glfwSwapInterval(1); glfwSetWindowSizeCallback(window, "on_resize"); + glfwSetKeyCallback(window, "on_key"); } #export "on_resize" (window: GLFWwindow_p, width, height: u32) { @@ -20,45 +22,86 @@ create_window :: () => { update_view_matrix(); } +#export "on_key" (window: GLFWwindow_p, key, scancode, action, mod: u32) { + if key == GLFW_KEY_ESCAPE && action == GLFW_PRESS { + glfwSetWindowShouldClose(window, true); + } +} + Mesh :: struct { handle: GLuint; - verticies: [] f32; - indicies: [] u16; + verticies: [] Vertex; + indicies: [] u32; } -cube_verticies :: (x, y, z: f32) -> [] GLfloat { - vertex_data := GLfloat.[ - x-0.5, y-0.5, z-0.5, - x+0.5, y-0.5, z-0.5, - x+0.5, y+0.5, z-0.5, - x-0.5, y-0.5, z-0.5, - x+0.5, y+0.5, z-0.5, - x-0.5, y+0.5, z-0.5, - - x-0.5, y-0.5, z-0.5, - x-0.5, y+0.5, z-0.5, - x-0.5, y+0.5, z+0.5, - x-0.5, y-0.5, z-0.5, - x-0.5, y+0.5, z+0.5, - x-0.5, y-0.5, z+0.5, - - x-0.5, y-0.5, z-0.5, - x-0.5, y+0.5, z+0.5, - x+0.5, y+0.5, z+0.5, - x-0.5, y-0.5, z-0.5, - x+0.5, y+0.5, z+0.5, - x+0.5, y-0.5, z-0.5, +Vertex :: struct { + x, y, z: f32; +} + +make_cube_mesh :: () -> Mesh { + vertex_data := memory.make_slice(Vertex, 8); + vertex_data[0] = .{0,0,0}; + vertex_data[1] = .{0,1,0}; + vertex_data[2] = .{1,1,0}; + vertex_data[3] = .{1,0,0}; + vertex_data[4] = .{0,0,1}; + vertex_data[5] = .{0,1,1}; + vertex_data[6] = .{1,1,1}; + vertex_data[7] = .{1,0,1}; + + #persist index_data := u32.[ + 0, 1, 2, // back + 0, 2, 3, + + 3, 6, 2, // right side + 3, 7, 6, + + 5, 0, 1, // left side + 5, 4, 0, + + 4, 5, 6, // front + 4, 6, 7, + + 5, 1, 2, // top + 5, 2, 6, + + 0, 4, 7, // bottom + 0, 7, 3, ]; - return memory.copy_slice(vertex_data); + mesh: Mesh; + mesh.verticies = vertex_data; + mesh.indicies = index_data; + + glGenVertexArrays(1, ^mesh.handle); + glBindVertexArray(mesh.handle); + + vbo: GLuint; + glGenBuffers(1, ^vbo); + glBindBuffer(GL_ARRAY_BUFFER, vbo); + glBufferData(GL_ARRAY_BUFFER, sizeof Vertex * vertex_data.count, vertex_data.data, GL_STATIC_DRAW); + + glEnableVertexAttribArray(0); + glVertexAttribPointer(0, 3, GL_FLOAT, false, 3 * sizeof GLfloat, ~~0); + + ibo: GLuint; + glGenBuffers(1, ^ibo); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof i32 * 36, ~~index_data, GL_STATIC_DRAW); + + glBindVertexArray(-1); + + return mesh; } -vao: GLuint; +cube_mesh: Mesh; matrix_block_buffer: GLuint; setup_opengl :: () { glInit(glfwGetLoadProcAddress()); + glEnable(GL_DEPTH_TEST); + compile_shader :: (source: str, type: GLenum) -> GLint { shader := glCreateShader(type); source_data := source.data; @@ -113,20 +156,8 @@ setup_opengl :: () { matrix_block_index := glGetUniformBlockIndex(prog, #cstr "u_matrix_block"); glUniformBlockBinding(prog, matrix_block_index, 0); - glGenVertexArrays(1, ^vao); - glBindVertexArray(vao); + cube_mesh = make_cube_mesh(); - vbo: GLuint; - glGenBuffers(1, ^vbo); - glBindBuffer(GL_ARRAY_BUFFER, vbo); - - vertex_data := cube_verticies(0, 0, -4); - glBufferData(GL_ARRAY_BUFFER, sizeof GLfloat * vertex_data.count, vertex_data.data, GL_STATIC_DRAW); - - glEnableVertexAttribArray(0); - glVertexAttribPointer(0, 3, GL_FLOAT, false, 3 * sizeof GLfloat, ~~0); - - glBindVertexArray(-1); update_view_matrix(); update_world_matrix(); } @@ -162,10 +193,10 @@ update_world_matrix :: () { c := math.cos(t); s := math.sin(t); matrix := GLfloat.[ - c, 0, s, 0, - 0, 1, 0, 0, - -s, 0, c, 0, - 0, 0, 0, 1, + 1, 0, 0, 0, + 0, c, s, 0, + 0, -s, c, 0, + 0, 0, -3, 1, ]; glBindBuffer(GL_UNIFORM_BUFFER, matrix_block_buffer); @@ -179,10 +210,11 @@ update :: (dt: f32) { draw :: () { glClearColor(.2, .2, .2, 1); - glClear(GL_COLOR_BUFFER_BIT); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glBindVertexArray(vao); - glDrawArrays(GL_TRIANGLES, 0, 18); + glBindVertexArray(cube_mesh.handle); + // glDrawArrays(GL_TRIANGLES, 0, 18); + glDrawElements(GL_TRIANGLES, 36, GL_UNSIGNED_INT, ~~0); glBindVertexArray(-1); glfwSwapBuffers(window); -- 2.25.1