From e5467419ec64fd4f7f0d27c4871090b06c7ebccd Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Sat, 18 Apr 2020 14:56:23 +0200 Subject: [PATCH] [DEV] tutorial 6 'texturing' implementation --- .classpath | 5 + lib/pngdecoder.jar | Bin 0 -> 13157 bytes res/tree_sample.png | Bin 0 -> 99814 bytes src/engineTester/MainGameLoop.java | 18 ++- src/{renderEngine => models}/RawModel.java | 2 +- src/models/TexturedModel.java | 31 +++++ src/module-info.java | 3 + src/renderEngine/Loader.java | 133 +++++++++++++++------ src/renderEngine/Renderer.java | 16 +++ src/shaders/StaticShader.java | 1 + src/shaders/fragmentShader.txt | 6 +- src/shaders/vertexShader.txt | 5 +- src/textures/ModelTexture.java | 15 +++ 13 files changed, 188 insertions(+), 47 deletions(-) create mode 100644 lib/pngdecoder.jar create mode 100644 res/tree_sample.png rename src/{renderEngine => models}/RawModel.java (91%) create mode 100644 src/models/TexturedModel.java create mode 100644 src/textures/ModelTexture.java diff --git a/.classpath b/.classpath index bfd5adc..f580185 100644 --- a/.classpath +++ b/.classpath @@ -805,5 +805,10 @@ + + + + + diff --git a/lib/pngdecoder.jar b/lib/pngdecoder.jar new file mode 100644 index 0000000000000000000000000000000000000000..fc39e9bea4cddfc19c8be63f15e992b0830bad60 GIT binary patch literal 13157 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�$Cpzv z6hNc|z;-L*CqKD&yU+oQ)68%_*J9U9K*;f72*LYHM;4jbb3MoPGmzi}2mq5LDHfE) zWVF9iw-ey`+rA(Q{o#UQWe(5K%uj%j6391~p66pPuV&LlMBy~a5WeMRuJifRLxv}( zv!xTlJOx%tBmpKO3svgnllQl^T9N1BQbk$m29ARe0O2%oJ+w~WU*_^6hDCWv>5gqN zC--lMAAhvB(v~oa1|U9FoqCDZjo|!pz1ODe^`dGMvz1wpct7^%3riGu3Pl#`{Aj0S zyS_R!8db@1ya2*(XF=#hq5?TFY;58r07Kh2J}lLmrKN8D_^i9V)w&w2Q;fOpX_^&M z6s5@MtJmibAKdA*6eP=j_37?W8&}oEyYv3aUeS1FZNSmcJUG}PAqFJ?C0{J(3ndOp zN*p4wmfNNC*}4*akkNJh8BX6 zwx4EUtMlB6q3wvf=Ci~ z+?(feT%|6OBn%T+sUTKrWfTinmWKfe$IvI&TAaoduMj9n6VX*)#Yk3>sQKFJkCssi zz!>5K=xnhP1^(n_cG%)U-;i=N6aocVDJwLBCSVpURHt5J4>~yv1y8Phk|YZf`u6R4 zy;FIAWkngAli?J|Zs$n`LU@||{L}5lWYpfuKfiF_KRZ3XyB!AZdZ{;S#i{9=78LpR z)>i)elhIZQKirn07&b>^g$F7HHuN0bf)SecA%+1>D2un+1v?BmPC6ZI;Q#8cAMEUJ z>4t+KVU{G%PbbBE{^0IzXsRUoGU3bO0O01&jAjg7X(!2m)C97jkvZMKSI)c`@FC<$Qd zkQ6=}jz501TP)T7_V1tDYaK$7LSBHOm_Pto;7z2NT`&yk;}U^Ms)XQ4-<=G1vVFL=HO2 z_0?DwX`I4sAEOYvRu=m+3yxD9N8Vg(GXuZ~l0&mfRq4-k1fkx%={6Or(vU$6SuDKK z?My0gD>H?mGzAg{O%Jw|7@z<+X7R9I%LR`9`#-!(fu!9i@f??d0187mo~qjPsy7iu zYCKtf|4sM!c-zh5A5Mpk1Eo;_aa5+zejI$boK&`&{rM_aD8t6p;obV*|Kod#27dW3 z4*GNT|M>UcpY?*n{bHq%2&{~=WcPaD`>vH>rz3aefSQX~8MX+Cu9}XPx(f*F)tbeF zoRB@ZU-CVNX2ch77BoeF`R&zmyrBv7<=bBO>{e!JK|;eY<2bNTltCEweec0R1%T2Y zFQzaALm&bGP!jtrDmsYwR$62#o z%#tVyV~HnXAhV2hyCUL*NHg^H$RnYkAY-;?uUE!TKG`0tMzbm5c*0Qdd0+p9iU@zP@^Nzc#v^N{!ZNVvLvOevPtR zV4+1MPGniQ-nj7p_`mnQ;fD^-6K^gx1OX2_{7eh;H1v~CsvLt?Yh~RqAcFe-+2x--ZdD2d2tm(JRg@uc zFft5B6or0&!EsPdL3?BE;YY0`%UG6*{4l3*1ey{IDGU61t?!iyThlpFetC9XDJkUG<|hC zLPcH=FouK}IG)V)l?9Eow7&or7QV13JA#jzQ1}9z20~k4lf))Q#WdF_)q`k=L_F_`F8mH<${oMofh@vSRl}ZV7S-a#o9s_t7M>h z=Em$^%wAn@Zl>O?0jM5i7?Cv}00E-TJ;O}KgQ=2ZQ9KbjhT|{*qbkkvRy%iov3hfE z!9srAn_-BTg{f^v2ozPyB1NIMy-BlCnNBuqHw7V_A#uy~IGMM-2m@o5#bg$rX`2)m zGgwr3B8kJnBHXy~{#L0s+4N_dty*4Pg_G$-6mbSaiUq#g({IM+vsV|DN}*n+c|PMQ zSQ1%nrE{|M)w{`7jWsRYIOzRa+)1d$Fx6eMlS42_#-IW>!(9=8Rx6d#C@)z}T zp6QM(N8219lrji;_3k#`*ne}`)8^Vod&&=Q`y_$ESqNldmSpf3|Mp=PrvigsbcaR& zU(TG=S>8V?-%LXbB6pQk_oE+P^*75?^i@%Yi51c7^_Nf-evOL>6@VieC%jYfI3 zm{iIYC{6ZuYL2z6H5>os%jfrxkFR@^e6e(L(!0|xz>pmVp_FT0Tuuc%69qH~Tm;Ql z8|$c@gR{)?(vwS7#*&9mn%BLVt^0G$%^(8ADUtw{99S#!%jM=nSIf)jR-N#ybYTbU zr4Gf>^+-cOWHepBfAQh?pjIw3FJIrbJB>G2OPOaJbIzjF+DOla>(ywsT_O1#=lPi% zM^Ktniqu(ee*bR!{CqZ>2PDVXHiTw+xhmiE^}zFYTS^+c8_U8NDNfSg{CfY(@2^oD ze}8tff3Tkc*<2le@vxeP-bMGuk39&sLqEb{vRF_YQ*Sjn-%r=BSFh$AD@}1>wD1W8 z{pC-$8YKqF+|v&|1ZUGA+;6kRhI})1&&GD8hDep%RF6-t)Z=X#%p8Esi%Jf|))YtS z9@=Th`@783r`uuVURF`2Qsi;;$7d5GN@QDDJ9;E0MiUF&nAQ0QN2n65dPh})nslT?lmhi zh=3>vf-IHD5^sfZ=-Ma>IhH%_t2~DQX(n>yT#ql8wvn=q<2~NX6_`|A8aP3~7(SY; zwi*fqvEMyAp#&BtiT%S}rBH;yc)3`}CAoJyuNB4jr@cqV^%P850v*jv)u&B$a(2``;C>M9<@YS694h#@Mdg(^0YA;>wkDQy?1B#=DLpn@uyEZ z-(EPwsny~#421+Lfq(t)K2Ec6ZJ4?RI6lNM%reE-g~x4rJrV!*K4EdKcX zypR(tQRL?JGFMm9#6vSeYGkqvm$~$(t(p{cq9vzj3 z)5VqQ(=fm@&clrogQKxd5l}cV0YV`2dSeY`kXEBeAW3fntyJU5$1NiAzy6_HuSg$1 z=uF15cBjE2aic5(SpuQ4C?FY-&}1mEXro#Pf)s@#mI@oS{O#44W#FcEpy1>7MoWX z*Grb0fF>vsv1AT+EXTDIjN*FTq3P-mjt`bg&GnKX4#EuglcZgh(!?8#Odb#F)b9;(1D>l1_s(Y-@L~IGS(nAGHVqRW(Fm>5ho)d8U_TdD?Ks6?q-78Tpmaz*LI zg*xrefBD6c76Lc@QL|Dr0w9bs7|FU5r`4)YZf`54G6-bD=_YXWQl+F$XQgV{*mz** z?H|_v_}!_@^Q)CA<+z*ct3Ubd?nQ55n6ARW&1%v20*=K1L_#wAphJ~P;$-Q5^ZLqn zV_yBwE<^wvyAv*b~Oxm9>3`shX-|awz0iP;7JsM4)<#q98Z^8 zKF2pp(#`EOFHyP|hAA1xajU}X0cg3-!M0%8J}>8Ao{hJP%2cz16me2Ol6lD2Diwb2 zk%Q4XLHP{Ey^SUc1jiD?nb)pS=a*B>2u$0DP|St#P66c@@M@CmG^?5$FEv+HJqU*T zXJQ4d&r%^$H5P*fzcztJE zgq=B$1GSQHdO0E~OcHamxi060^~NO7@WGv?zM0gjJc{Bpfxu{npcsvL6bdYsL6T%U zTS~7#+TW8?0RQsUMhD3fgF3EHqW}dZoPf)D=F30c#J1OHFt1MMND4^>=9?eq1nAca zBrUPkity%gg&E6(T^{G9uinmMKV?O6qg&f84*vCDed3zhXkzZ}*AN0z&2Tn%I2Nmx z8mslJUgg!L1xA@H$zB4zyPjkay4%cw32=Vizk9fo!DQ;&`|S$FprLQ#I7T73R8+cW zeH2JbWnLDA6pr)NCeIS>iU5FVwX7&IH(Xe<%$XZk<^Y;SZ7b2&h9GhToCbbO^Av{Q zIFs|Dbgxxhtrv!uFf`KZjd39l!ay9DB*}d9<9nW$vlJjeuUz4WY5>95_06bvyLj@b zX*+J}`OT(yGct<;lV(tqruxS0RG1hD!<2S|K$Hs~28Ln8_jjeMp^gKoNTDCDhOJsN z&S1-lz&Kpnt{3A*5P>k%s*v-A#gj10up3od+5kwRihw;m%mH!q>U_;I3{N7(iUgyP zrbPrJ!~ilp6-m5kxxn?vW00`jmY&`z ziFEk?{J+m+ufBfw%~xj!`#WEM`$5X*#${3Mcos>#cSfC#e^2ZY;~-7<4k3mUC1PfC9&k zCW~@j&@?lO5R@Y2ob>*D_~VN!h9V24+-B*`mdip(&gYQz2K>*zdrzPMN>O~F#40>X zApObo&RzwI%m@fD7*-T^xwJSUZP!@Si%v(by*4U2(RLGnBt@Q{%)QrdM(18!(?Z#srdkdq7X*?!`oGe@Q=6YP}d+{{y+cb<(-`>Lr1eE_}jmG z`N`A$;aIDcSQw#y`@_hIn7n{+99GJS|KZ0;XgCCc(ULG*h4Y0eanwd%J-JhdfA+5* z>0xv^x1bEFh@i+TI8T56`0(<>*;>~z6igvTW+9wmFZ*NPvPl@L3J}gQG{@a^yIW;` zt6qr$J*Tj`7R5=N0`XiACaRI9D24_c?oVfWe_>ot%!-(Sgpw!lvuX= z{MM)z#b!ky3HD}YZ{mdFg&ac`ip>?XP9Z1Grs@yR-l*e+ zAd(P*D~bXm3C-u+5XMm?$^1&KWN(aiqhxtTVE9p*6!WZOAU~dL#=V82V8{2iXVZ0( z!UB&;vfLM$#v1riKug5mdN&o`cmb<@K$`F(!ILA)D z`}%FExrak$QDSa};mP?R43fNrH_FKQa1*DZ9Rx+5z8D#L3cYwWuGC9O2x#W!lcUo0 z%owfx`P}*JSPnv$poKWXg;I4kRclq=^kTTS%(u_***c;VUW_jmTTQUr)XDDj+vgrA-dm0}YGBN|Qa?-w&5k_D{5;L=Yvm=w+JEzV>1OY%?V#$s7abU*efq}K)~Z_tvKqB$~oHfQ*~u@wxs9p z7OgT7hrSnr>cV0Obm#8D>yz_#Eq8G{jbq9+ZQpe%FxlCb0gSr3oo{dFC+cRlvUoP# zSdr_;5=kVH8w3ePD;$YMNu;~JX}X;B4a$@N%-ccXy{&<^J@iJ6k#8+xN!xED|Z~n`hl546CJlcd)qaua0&KU ze6v#>FT?#ECMVIo;iTTFjMqjAf^Y`YG#~kPIY)G=tWqw?Vv>`X#o97-6Cs$x!>Xy8 zQIxP0givT%#xcOHm6^K__KuEsFcP*M;Pz@-E;30H&Q|VX=_DXwITlNyGK+)>dOfsV z-9a!Sgc8e(w|2Mu&?lg%RH0}B1At^SUpDLIAPVp-JZww7p`9QoFDNh$(77s1kV+(uWxqR1vIthYqeUc z=4sw_wC!dYg%Q^acy~ z$4MMRu`oqm{qQ!I69$vT{X6ZMk=$O5_IB&nJ)HpDX1&45D5NJ z!mSeirfq&B5(QZnXfQ=bi=~%lIEroWP$XjKk*y;v!dEKlJWXgkq(VIvsvzlYB;GRhzSBOS8f_Qyud&JdDS0QE0VQX%c6pU@lp#WR(jjB zD@8s|d=Rknxzbs8RL`?ty`B_gzOz$xqQqQmEN#(gDglHThMhXe_O^`kLX>37`3gow zP4_VrEQs*de*L%q<^89RDJY0I^9FHKxVT1Ki!uGQihGXBAREtY7Rt^?#YLbjyh9yUXw8|Nhk&f5twH%S>l^TrdAa4JUvn!#|Ph> z55tU5C&S%FdA@P{6xsy9%U6R^snj1%%pfZ$IS>Tof*`RZg(8AF0FcqzGAY)FdkG{t8>Tuzq3-NTx`o|meP zZ(m&=b_#h3`SH6`l3@H4@MEa2S*O=3!_fEl3$M?oB8{$fSJTt}hhD3tBw%*go!>4a zk`)Lfu5hrzAi9(6w}tcTDdw982c;k1%;St&8!k!0rHY_$R=mtM8-?|3;aK6?PY@D( ze9%6>np(Db|FArtuMVp@b8&OHRdx*zfPqe#PTh@MDt&)4Z`2eL(isX1Ga$-{EQti3 zyqYCFErc9*yG0TNXeLsqtJ~Y<;dot(!lqq}!% z&t6||wQE@#r6Ag$1MB&!-Od3i2*Aj*%eatdt_RxlQzy2jUp&Y+TE(l|&1yc|-fnmq zdHP{O0Pbf`w^v>|n%XDtFWUzl(6@Fv!uPMcyXD;Bkx1jvXyt7;i%tSfJ%mZTPw!Q~ z{h&VT6dlh;{lN4sUMjrlE@TeDQ0Q`zF^HGvGCo&aTiN;RH!L3ilP_vXmJL;xWm%qr zZWaONSlW0kir7!?$S?tX`%;Au|KcDFgY&E5woE+z^x@zA!?&xYwq2vZzy?vVzqIb` zmcMyZen8OB(($H7W z2L}yqWqD3SeD`{;$gD`iB?WdPXaK}OJHIko{OsecS{{Tl^!mEjt`N5x2tmZoR`K`G z)hLT$m{3r|J zn`T29PtCP%7DX-%3>t=$G)sbn!~l#4s%4&LxP=q5Oz!-0aBoK@vGlY%->Xv#BRW4H zVJUq7sNuOj#)}tM@z8)8nD(ljOzkl{%P z0*9kHL2$eb3mihxI2>EsyCpZm0zat~`N7cjy9qi(=&r_%*GL<~Zi*%L*7>43d2BslTXAHwEr%Qss`%Un9D8g z;Jl{=X2`L0K|wF3-e47NR_m=sF3Hlx+BJrKj!5qvwpOP1`pSg={I4JF)`gGn6j+i? z0BmE0DU2GLwc9BZqUZ(znk46QVB;o^m8$dE_TJv*?P_Y63Qh71ywwmno}DjU5=Tbk z8G|E_4s&<+8^g(Dwb560M4$lAGlpf!f@nA)kO3@-D7oUBS64rO(jf_WG@V`yJ+4r| z5C}n;>)!CuQTyfF%e=tOW@@h4x;X3CTP0Ps3?o<=4vQi?E#<@YC?~U-y$Tc12r&o- zgCMzo@8INBm&5@<#s~z8And#6y-yAc)0OQcI7HD1O-|S5y`6krNGOsD0;kq0gc*zm z!NYsCA5PV!8IlYaS*ySN^~c}6Jgb+g+QJ7%ysXo zRWI@)9)XDK;ZX`Ah@a1uDVnd=L_uO-KD#_URm}kW^4qKK?FI=gf#t#|Y*l%Yr&f0G zb{cKw+Jg>B;AED8Ifa?e-89WUeOQBm07ZdZPWka&cc)W!1FU;vmUE=3>tGhv3I(Zv zrV(gZ-ejpewnY)ZU^qh|QkemzA&1_PsaXGXr3(VwX%<(DX&kt#bx0sFi$x?W z&&_y#eZAY}5rVoM+j)+VM4(g7IgV|aXzRn(`#BnTZpDZiGc3PSG?1#}HAtx|u4F_u2i*YUNBekwg>wt=8puW(HV) zmBIh&fBl!2-DMKk<+40m8-+aiU{~N7CWWb9Z?accM*W4za2+N4c$dEW;P~ohhNb}w zWNX#B9j;E#Cxhu6fT%EvKmeVu+`-IC!1&HV!(JKliQ1^hfbV>`+MG^9W43CSna<(% z#pR$_sTFdBWm=saQp%+l-T5kro6TD9@|I#aAo3_A?v1n%lRP_u05>(vgT2aRvT9T$ zB_~`BHW-F3CYmI%X&NLjW!h=AOcsh50mcH2)tfwy!HdaecdK+YSy@(?2C-oVjtgxz zHUk5tGOerYyh!?Syt`9VSF5?Iml*WNv*k}eJ1i9;FeTt56c~iTF&wZz{;0|_@by)H zXSd>Lt2OF+$VWr1Jn8W7nrM7}=PW`j8ndt1$lz@lPFe(|nfFNqw_xPF8~ z5Q$?X!OvDIg<%p4(=;{KvmkI4fn+)2)w?BuK{yT>y0J7o0Oudy-?`|j)A8)-lkLmX z_aH=DPH?;>zPmA0!)&*5N#rSt7)R!>e%1!T^!@umvnIJAYz3L`SY?TScQyIwsEH)L z=7w&Bz3XpGHwBZ77YQIk)|xAe7zhDZV@Kb3Qy(&8Y&Bc73Y?;#PL%mU%tAp455>Ir zhj(i1dOO>#^Yhc=`+HYo&4)?&C;#2!YMF24c-ME&`)e!%_GdJV0kLx2-XdPwPoq9KU(NniV_s%7}o7b`;#Y~ z)Q@}pA&8_;9^ZNK>~*IhnSPc+-1$Nic-hhn7$a28xg4qwpFDnh-kT3+cecgT+i955 znrZ9$+oMTxe7I0jo6w0qpCObPj zw`bjY87dXgQbD?ZztyOg(_Z`DSn82Rfc$aHJ7 zwOwFooTfnn1d1hky$)R0Cm0^aD4Id#Jk2nC7CM5!CNN=o*ySYn{STKk2B}jOhM{^{ zYHwB63oQZAFTcNF`P})?7+udl{p{X{lk@v`n$ORB1scia@KT;;1R0|^I1X@*Td20D zyBUz&_NR{@Yzc}mo2;r8L0wyp=QXOe-+lS^(ZlV;_xvQ2bIQ^Pwwj8%+|ZKz`rV9% z!%nNfawG^~r`HRbg*wgR&D2v>>!aiPy)Ehda@wxK7>2%hwFJQ|fe?m)6970nTND)n zqiFALi1;woKiQTlGO%=_>#5z4q^sd{w=VJ=v-~*q8eR;d zq_tX>aQ)d#PeBR+eUU{MV;#1g?M|+H zb3@aZ8$nh~M!vsMSG~n5f-n-p_l|a6yu0{|C)EcJ_J8~P_X{oboOMHn2?n^HM}vjW zNToNIi()>w+{X4+rYu zam5LM;mAfaZ+owrWx?T2@zGw11Tb@Y^Rv$?)e2Y03wE4kD1Z6kLY4`XE^G{sVYuPa z|Katm!ZDQ`I~i)@xrJcdVxkK?a&WivD*!OaurSX8`*q5V69!8` zgs~$4juXp{;Vfk({Ajx>tF7vE0}I5XRqqH&7U~ zT;m)!E)^?_sRhDOwbJ)#PZQ<-@lEFBUB|w^b5#mLuKw}@b2^!oaM9y&y7zH7ewKu-N!>SSN?%(_7AHFWi z;;){Fx?xTXaB@9@KlvAJg`&W~K}n3E>FG@GEnE~OXjbkH)XSSWB}gesVvbMTu)TzxlIAFE0jR0MuLc z=kKluw=2!E);hY<%;Vkma${jhHl58se%RWqhQIp!!E`h+9Uo^Xg#~YJrXWt$s|DNC z{TS%9ui6bx~^qp3x@Z$Z9#bF@x%cb&k?OOVV=i*MM5cpAVViP3N zXz=+w$bnw2t`l35nT_}NmI<&x)w z-@iPqm8-75ZZ#A?N;bN?x2+r;m5XI14IKc;U?`DzDlgEnZC{UO1P*Vt>NLgDB;W=y zh9xD1QdpoMLX{#L*lK&Lv0U4gD);xVH))Dlo|_~=Rg!M{z1<2^tLDecAOHXq1=0k0 z{_0jBlAOduU<||fXrku|%xLag4&ntN#UPF!HLJzMvE@k)&`aZq)eEaOMSY2!I)crp~6wBb>k( zR;Zcg?oJ*=A(Acs@zsqVBuy#)M;h9dC){J;G=blpa)`R;m+qjZ!7wN7oa zT*6S~C0U*?a1{9HUh8(U7#p#%w&!cdvy4ZN_PaNWM@OZ}WZEBT8O+E6_to!DU>H^~ zXS32lEIU4I?p6f^qo2Ke_pg5Q`H!zI-oCoktN_j8pFY@`&*%Hcd;jH+Z;LsGBI(dt z+&MZryBK6BR^TaXxeOD~apI-!l#BUJE2lX@RVitXd-b84g-*4ee|_WUSr|fro1wbB zU9MCMo|hnanxgz->Mh38o!z`7A{Tv4cY}6Ql0|ej(I#g6=x)AH;GbWNj~{HEpIrX* zlMW*Y3FB?t#QowNe1HJh*!?D=BoArnNHr z;^i$4qr6P&Gqu@JM$6#rM!kQxbUV{Nd9e5XLcKj7?6(T8>v0^4F>L>)cXV{{>}=d= zG)&bQ4RsKR5B3BW$6*i}+^kF|uH^YIP`ra>C{8P5LWcik|~C=!P;Btfv@(kV)U zh-1Hhx7xjTe>$IIY2pU%*UxTKH)~Yo%j+o`2D^86|HI!u|2O~q1>C^< z9D-yZ_F=S?1&IU$KZqF=7_5zecTu2n;~?2IfDY95h#eE>=1h2HFyE*Urk_yGd4CSh>jJ_)b%I#w%?u& zt&|Ev|D(gaI&%~{-aBm5RHmvE0*F8V{K0?xX2#PPihzTK`S?*MN&;Xn~Z09g)DIyfN}rn4PS;MI* zNZ6gjN*Wt!oD@nTBGmr<|MhiQ;_mDzju-j?H0mvk&7@UjD*1-CazM=ISkCnzZN16m zDH?HkmV}{*hTzGWWN*T17q^IfB5! zI8@G~_Ik;XgrIOAE|)1Ttu<3-c;8%q@}!NXo)goXncCSc_y7Nb;HyWH#6S>pc<)_$ zU%tDlefK!dki+3R?(XUK77!o^f*vFR(!)W|f&jhfuLzP3tGnfL$u&bRIn!g?R(ExE z+007sGb1v*4}D)}u-(e@GFwrxR*{&meV!r=H$y?Rl>=+}q*>!^%er-ICrYB3LpVWn zecm1}!UTanJyPo`_O?Ae9mO}j85o9JRptBVR|1yhDy6vlpZT8%sm_#q~R3B)om38i?JnjvOnm?%*2 z{@*<28DcPA;<)14&f1OlcXl?m^UbTy{#MzU&$k=7(bD_;(NCUz^~_k!svPyF z-LBC8`fp#4eEjvm2w`k#n0N0~1d@LFZX&_pPLq|3wd2dlo&AQnF^7XiA*W4Z1b|Tr z@Le~#d%HPY8I$W?7y`92cKe`35lEo-KRS@-E5E;R3o^OhI3L`tMoHG6na{Gf7v zF>F=@6!Z^v%5fI$Rf);U<|smyQO8RWL7+Hpu{812Dk)R~0wIVI3<*ae8QJv$6%qVo z?cj`nq~1YG8C~`(EpEDS%bIj`y~YX5%3^^xI>LQjT+{=I|pW??EU7Kg5+NH_*TfX|E6&B%;1ayFji z6@eh3Fmx3e)AGe{UXNr3tQR-{LC4E5j$qgG`s2Y~^8f@hRYE-&a3b=}*{D_1atsuP z0Rs8FEQc{h)6`XWbu~wypN&l;j8bU3sR&KRko7(2RkHhq|LySzBc;5Q`C%ZSNt}AS4Q;fFM`H(sLX{_#T<+z?Jc~hrhcrcg z{kmPNQy3*3-`KO2y;~9c-Rb9_ZY^wgtfK-0H){Ob>v?Od`m0|*{n>{V7B&nI`NQjB z62^b}X$^&gB+g7zuNRrX4t)qeA6P>(FzgiYqJx%jcbC!>`m2{y7-Oro+Kcy-oP?t& z{`AN8PKBvyY*9(iF4hPJaT0qowu6{hEp?tI+Qa389m({9-sOPf`l z8>hggg3MhGjPp0ocAJf&CSiEWkO%-GA`QI0SU zt1_D=sg#$0^^ecqzk01uOqeDisjO{RrpSl)DzDBbkmmum@xf=G_Igu+1Y-c4uQzKO z=~*baS>LPChlkbgPNpZ9lPZ(7TE(;T<>lK;2tk{z!pZyYZkfLrS)?T7i*%AkAjzg# z=!dSmjvtp2cXK>a*)F}fTDFSn#m(%ek8>LjAPD$s=uot1Y#g2@ zGkaFcp{wPlT;fGhX7P-MbX8*Q5PJGzJax$+0V@g)p}_Mi=;HKh?`S88!@*>A|Lz_y zav+Fv0^)9FSQ1691%WY1;SdPXoY3!%4)^OEkt8XCvuyinR#33Jht;QVSHA0(6i~>Q zHZIoPV0l$SA*)#tve;5+1|i~uo$~d?07S4PgOC^|af=c-KS)Rni@fkB5BF|0lXcLfR9*tSSHa`x8mP_v>P3XsEJu{C=8Ynz>x;?J6@p?k?hwZ^`ejZ%U2o#!X*d zuV^gWZ*lKOK?1PfzFaPbqg%TLoJg<7K%jeoujdMq>%><#K^TUQp4|Gse*2QfiTk(e zcAOfs)h|EVl4zUdsXx44>l3}6hqt$K7yTte;=4`$u%&g|{p}`!Q{=);O*5W*>B>l4 z!}roS%;0-ld>p%}kBO3~Qb7V5)sIU ziyv?a5R*6vC1L1Cy>|cO4<8N((@}pI1KGiTxi>MtJ8t`)w=oS8_Jq7>8~%garOsu0 zya;ErrJK=k79Lb(I?HYb3kXgtTa}e=-D!yVqW1s%!}t5;VgNC3kFR(Lv^`%@xjY-( zzP0t^$p{CLFaF|#GQ zX?%aSnT=NkP0^^VP$I9pIxDchdA+{4*xXEK)k;MbXoe*nFW?Cm@c-yJW%{chMORjV~6$xwZ12R`7sYmvcK zS@HuDC&<@lBc8-0S)ELlMLDcjbAAF>RL(Jt5TV;s|BFZUMuiGpU1EqRF#|yQ_UYRX z?l+^F-{Td0tq}Mq9Ol6C$?j z2?YP$Y4@W8F`r{!y&GnT&>xR6Lg5LsUgIY-zg1=mIqFR>nN3%>cFN27WVb55?s!*Y zXF6OC#}0{t4$0FlGCh7ldf&?Usakh0RF%w_juGx++V)Fhk+1F z`Xw1k^;mL4(c{=?0PnxD{ zLm&btUZc*(uE{a1q1(AU#p1|=Z9GniZ(nrxTDk5TnHv_5GlStEpRZDY%aIU_@V=`* z?}xe-*JYT(lTuOr@pNf;31kPh8}95hPfson4$Hco4n`Xxr@|;a9d!Tv=MTPm-I+{+ z+1d~oaXuP-{z)SS@fYuBjb?4JHtrpizx?`oz1SS?@b`|&ue+fUpl{B{@2*UR3ac6@ zu-sz4E^6##lNx4_LLdjY z_a=s$VH5}dPyffyFpP@AjKR<(2}0MDczR+chV3@#acr}}OmiO@f-d8_dT#Ox>rQyVN?L?HA#oV-Q zduN+-{8SI&`}<`W2&)n^8_dm>`S~x7x>LKUN_hpT?`;3>$D5+ePFA|a3)4;fW8VbV zmS>nrnhw@kUO+hpdw)KjF1^O?mbnT1ID=!C7nlqpFdQNXBJiL*hxB{%&MJ~9M8v|~ zo!pNvZ(2O*S?12(j^l-bOm+wJl89uyZlv?Ph$stc{UhM|DzCr}0h0D|MNpTuzhH;d}^YMyBP}s?v9F`Yar90>N;_H`ikj zXJUXFcKZ~~Z}de@B1(CBV@86+ytAJ_ zpZh1X2na%bW#wglJQ#7JI+(c?2^1uDx%N#TG<0jHA)8jPQ)bu3I`SflMvu>@1kGIZ zHUbUq)&%DQj_1SP1d|I|vHJeBt<@XDwR3*i zmuXJ7gRM$oH5=W(Ra?v_2nbaxxwUCCEWOpzy8TIPy3>_^u&cE4LaA2L9XEmC|NNU* zqv7o5pX|JR*Y|9oQZEcA_N+5q3|GyTI-2=Ab$VquvzdVs++TlO0%2@8nHB}8R1n)k z=e#o$)O;~7uWav+-(H3(ri$p}dnJrPzj?bkeSTHcI7wv~nn=NTq9-iFtY`B^g}b_* zC%)^ZSW$r+8k{AmRFGDq*}=Z5h}6x<9}On0hPqt&%Z+vSuq<rnXxjfB}`+X zf`%t4(6dM!M?3F(KfWEOUZw~vj3t$dTq%j&iRC)6#AR^itaLv^xiAi#(9b~f)!XT0 z(0}x3Z?TFlu7;W{NCF)O$ap-jZdG1fIXul)3s~$KimLfh=6ex}!t=$fxwUh3e*NU5 zJHPqO%Tg`BUV6Dat#V-Npi*nqeS2-Lh7!lfl4yG#f&m!-Lok|o=I&1Z@BaDh=yr8B z^J32xIAF0fig|4?Pkwkdaotd2iDET(+8#STOt9i`vV=gG!Q)a6$ABPLtUWuQ1_@vV z&_R=XdwSyl7=sgFmb!knG_8zcAm7}s7iT`Snj1Kd2U#2gYyk2A9M@W{LP;|1Xt^|G zBB&G?P2;;={oT-u8J>2Qt&)0vc7-#1At$zqq_Ol3C)jRPyQ3wLrHUehi3`(We;&BD z8+mc9Kvoop6R7FT_5$!~kruSv!T~Xw6D5AGCsHntA#7);=Trf37FCUa>py879h4Uf zS1Z(wN&nN&?qByth7l|mE-L06Kltx{c{CkO=RVO}dd_-n8|#8hP!tIuSc;%5&- zJ;rbmNgYlkQwaa^o0Bj^r+WDDoxGA`zj-^|D(4uHyt!GR0K8K|zxcfQ@>P3puXNQL z%PeDA)`y41_vfA44V7VFS>a!uEv{yMjFWYN8qVe@A;JV9kqn&r6w935tdaomoHzlJ z)?SVxksw6hTx}>M$rlR~2WFDM_2P?*ZtA!I0J9v~YATlF+W)2Xie;O>_A=uTzrhR@H|#e$G{dIEsuf@+5tj%Q#T z#+dr+A0{Ltlw=}J1FazBE2ZglPP0IzT6Ue(Sg%@jRpHPqwiJb%=!xqmm4X=i8++qa ztEF#W%%(2+_N@2OM>_=UL>Pa3;{z#p+0*TfS1!^Njp*yOX~Vz$^0c4{MTG-N{P)jB zOCL83{m!;>*3&QE4L4MY9B_Fwc*2l7PagZ3jpDg_Rj#B+|RvsQ`BnXT~gZq0@z94j_&OF9RAXZ3lJo5>fld<6OEe5BFv%Y!M zq_el}h+ zet5f~W~rA`=~__;!f15e-YUzj-L37tYMLc11|l#hi9)Seh7$emuF_O_njrd}>p%b5 z_Qv$yo)1a|>Gk#GYUF(T)enz9`P2skshBTT#qVFVHI~S!;-wk?)koz)Z_({7e(|Jy ze%c!>ZQFML;-eykTD=v*^Yo}cDJYy_McsMu?9I)i-J+Y(vVctWU}ISy+}q=0Fau1D z1=p5uX9$2GB+pL<<6@;;s$kcn5XhotS)QB8+nY6<#e=!`&c+CaiNZL^i21_L6^h@V z4plbQB*6|MEibqM_V>TNh=ZWjkUYZ|IP&CtcF~#cZ1Jk9L@+oVtvEbvG?nvl)Lta# zopGV4>Shqz{?1l$Wv3Yc*|v@#U>NuW!@)TF!*Q>b;|07>;m+s4@)^} z1Hu3yXjh$euW#~XL?f9j;vqzSb2h6MawO>cet2@WL6Y?FUgO>S9#6m!3Mw*pH8wrn zBW-=HJV67E#DnX!WgveWHy*Re%N~7HEt&EW^ORDge9KDVo?Nvk&`4Djxa63 zdvZs5KaRsV3o=C1l%4G|ibU3OMe9hZ#&S! zfvDIwoj@)N$8WCgZ!6UTYItz3v%GhhUo0#yiublO*9tTNEUI)NPx1r-(F{drSr|AG zymFGGD#26Xus_+UD8(EB1pZGSH_$NX%^kxD9Ylg}{mqj!fyKP^^4YsbyOQk%vVdRS zOmG~#w_nmH(_&d2PDgjDL(QA*>~ql2=S`U@u>O{O?W6pAG; za9qm@Odm#2({UHeHAa(SPU!TFKfD^cA@Jnk_P;%E?=?#wKDj%aEq#C}7g>(MfBjtt z1h9U)_lwVNwKVt-&w7Jd#$u?f6@GR%ztY|HX06HUXddj;I7L!L7D~h5&9%O<09$u= z?;a7rG>QQbKz1wgaJ9J{uc*k{E0V@aA3D&|w4XdYfWpPfrGa_CX`fEX(m2Uh4PPfBlOG zr{rJNYo>=8 zgn=Y=t1SAqY5Nh1rYr{9rY93#vy44^-u~cj6U_YO+#RjVWdPHhgkt!3W2`rxmnII# zTq-ipQ>dt^JmnUO`7|Srwpf}@rfXXjiOF>F*+&Pb=R;#O zIc)Ny+4QIP8uxFNyfF1`^WJu|R$w#^mLz^I69f|RKm>uY*rJyt@f4QCVVZ$3glv~dnxW1w z2laBkJ<^*6@vFD%eoX{Q(C)ocT7 z)_?vdd#2@1mtNo+rFw~Ar8KtVEb{?@=Xo~>{UA1+D8%y_N;pv}sX0|4ullx}Q%MYr zBmdDs@$I{g=i0s(WH6fIdrE6lYIMp=(uqf!~%!09H++`3g-FQyQN9_$rn^BD%Em+du4(RYt_e*evD zC*%w#YE?0PwR-t}HC+df?-t)(_b|0}+Fowuc~Pb~r9cqi#s~c%E^x3pJny!<-@WRz z`_qyHe)_0RqVW0UKq+YRjrH)BdexbTEE}gO2&BE0d$aU^`Ji}mJ;EuWDj^@R?k(#@rdHu?+bb94qJrN{Ha9cB zqzX5yaPHcZ?yN4Ql1%%4I_-`A;=?_Evv~S?RIlc?8~NAoy4_huRyxQImTG&5J`qXoWbPN>zK+y2JuTdAqMc9 zfssYocoQvVc0t5=2?s!EG1Jw2Wwvy_f6;bQ*$V;R_q>=p{_)*|JJl3S6;b&9_)4aL z2M=341AcKb*lFZLe|34){ptM*E6JUar79{0hogD&Pk-#gB)u`5omOr*_b4J21nKX8 zdjg04XP@k)vFXI%v-i__S=j`E6VRinZbtwJkyl;4n#XtcwD!am@Qn87?diOp6Idc` zFI*Y3TP5PvNv|xXj_Hkc3qa6CfQ?KbMtBO2Ni^go%n75;*e!6VMhBZw$Mb?1h#-Px zSsp=fA`U0rPL88JCrp#fwXG5lWRd51G0i9-4qUWNg#}d&=P9grGs_jVbBkD-{wGIr z7+Ow%osFGQcPJ9L>jnr)K^Z8kVxw8`Y{v`IB!R3Tp-9G0z`DxUGz3a~_!s}fomUrQ z6oK6^i!<=v?V6%0`?s3AJGpLmdinlFtK<(_d1t-;{WsmSYs+`t?K*FJfFFUa!z~ES zu7<1bGA2364561N;~$P^B!-tN(x|(*nE4pS{N~qxtXH%Y#pB5T;C{t3435n|d)s;6 zU0qzSF9(}43xE2g{`PXRyQTPEI9)9t-zq$R+YfxAstLtP-dfwu9G3##-JOyR(P092 zI%D6qcB&-~jZk1wEfj(%h0?HDl_>%&(9y<9&O6R_S-4*&WC_j}q>~x;^jt5I5tXHH zFME=Re)3UE7*P-`J1&W zvq=zXWvOSyBOPEF@#V`-3Ls%%0a2vTNTZ%RK3h>F-zXp$5+Jc#D3$-|MF$9@y)srQ z@=%6;`FunHxMk=U(fU&|&a*Ivfp$PX`|(U7)B6XNC=RcN z8$v3ORQl=1cNy4V7{+ydI~LF0T(l}!twI|iesev!y{$kP-O(Z4iJxD(0*l0vuNB0z zo;8{Ik?R%}gktHDMGXf-2%^9Iy0h-DK74YUq0y6TQ};4KU>sc!eJ@uo;w&u`<;6NJ zmMaMgMP7WbMIuqy9jy!HVt2GG%IxiJ<@lug)5m3JF^NDdbR8rGhVu;?nZI~k8X76Y zi*@V5cFCqv_+v zhnFM!tTSykYPWaPPG`MZd3lwgS?Z5Jo}Leb@gfmqjUmy4Iyqn2C>%Z97eoe5Ae2PV z=cgl%7Ab}^o%HF~F9jUl-YHGSJ(4C>k)Dd%Ko?i^&O4{Jkv~V=kdPkx$eu0VXL{-K7X&N0*0rwSpKFRytGXO#- zN-Ue9z*31Pi8xL|iNm5aBQP+hNpG)g46yTDtjT=7s6BhzUo9=yu=~SJ5TOJd@{p|+ z)Rd6m#C3H4-RYnxV9lC<$@zahUd~5T5f7Vnb!}O?1sm(}{XGRivc<+ImkYo8m(!>J za(1|rZ#9XD2@X4x?K=Omw<@U|jl&n6*}cQUdg%%RzM2OWP1r610*#yx)*&WaF`fd@ zi_^t;H2C}{w`c}`eYp%1(6u%|7#p*7;(LxAx>0!6nXgt$oRaHRp;F>szPU^@5XnG4 z$U@IDJg{D387MIHkmmT=CeC8>mrq*5;oy&N=IyZ!LS*FoVVKH_go|>FlG@%KR1_;z z);+!4xQ>fJ6f4$Cc(*&dxai+MsCLKGxrYu%E=LiuzZ3;F&VUf4ZidraJNeUVgJ5`L zZQQDA?fz=Cv@tmT;I`Zw#c>cR0^&v}1ff?KQ{P@x3TU$;QZ%Kh%$wtzN{$m078akB z#{K!HPxdzRmE!~u1|?bY`3Hwzef#=PKiDZLz_-ud?jG#USB7q7ps9cSLA5)$v0~J> zHuviy3R-X9jsN{GAN_DL9M1K-CGt@XoejsAv(2TRz(QfSEU6M5m=32%OBd=7M&*L` zhacL$m7pjJ!ZAsJUwpXx)%WkZE7)CI&3sbGix&ec&hXDaJ}A}1x5w{&%T`4E!JR6E z!eHRBBKzIR;PTbGB#!4RQ{>^C#)}kKEeRw^^hVak_HM4$io(teOOVU$p@DJLsp;Lc zM>GWQ9@b@z+pZ}H!F~VYM&n{pKw%(}c=k=l^Zm@%y%)#by6oS%C6}sltt_c3+^Cms z?-W%w;Y97b9}ni4}n#0)RYO70Q$=yb6iOwP>PZW$jb2Ri&?L`Jlf~;Is8UP7SqMQ`*cepgWC=1 zZ055h9(y)PGViY^Ytyxj_+Xn4;}}H<(;5>T-8|fhF(uqA9zLqTFn-!yEv-=BM1kv6 z%a!qBNs|cAlRK6Cu+x5Zv09rR3?QrZ8pW8^Lf@%LQybt(q^csvC*z}g_t%E;aIc1d z?hkKgagg|?>w7-I;9imB=a1GqL$+|4WpaQI)Mq1ML`5ZNV!sECb~<= zRgC3RFe>HQ>B5=KO@W0frJO3_Z+m7#YZ8Fh`sDHb zhGqMKi>6V)p|R^YVu1q@yeKAuO2ho;cN0=ruT~YAje;0O62o@7dJ1G<mK2RaqjP4TnJly}w>{hOa}l~g7~`OR#3aybUWZ0^R6k5FjbsA;B~ z04cCqFB=8^mw)+~q!Cpietb8lF`S^VjZgf`mnQ=gBRFj^&`+-xqrPcu);rC@*orU! zaZ>DhXje7#>N}Z<_{YT4w=omh7-JPtQuAMvTN`XcX~Owy;UVi zGzpT=AG8EE1`*8hy#C11*N()JuV0@A39{NGWicjEb34Za5PE#xt7^nnl`PaM?Xj8H zNR9^u7R)PXjFOYFIUid%krqqp#6>JCC@4aAx{zq5QDTh*WNGB{j|=--1zD1&lXV)q z0-bV-1QWDp`(J(ApD&%Q2L17a3PV$G#{S9a7_&@XU|;t1@89SIiq;Es2++TKHb^3h zA)=y|F)aD)LcdevaLiW-l%Uyv`R@9`VYS`Ujg22ASbv$Ksavjz%e9?XxOb3v8^b`lw80z=C@i$} zQjQ`n2bON8)e>u%`e^PL9_d>qMZkQnP-!$E0`pDBS&Std7+ef2JDo=`AxWg71|Vrz z3CB_O95mU)%{wb1}TLUE#=Nw%EW-?x+m-#<)+V@!hNI ztIlizasevLjU?~^4o9-sjDyHSStIt-$@1P7#d74YzP>a5c6qVXdf5 zmKFpg2$-I9H)UC_l*9lg|I=^YefjGbt5N^f7E>;B*OS21H^rQAv-Cc>*ZTBMel?y8 zGM+gBi(}PBfh5T{*K2DsFs!s^V$Md-@!0c=RkN;Lc6#|-PWS!&TD`=C+ZAfI(3=%T z)kF|s3>U#kcy<=sB>(^kIY~r8RBEKN(JEI|O#mH^dTH#iILR^y#WH_*HVneF(Q3{Y z4vs@e>P;pll16)V8bHN=dbz$HC+F8Indd%vq-a8lKq-!eiXct&_^NNisl8PZAQ0Ty zs$6y#1D*Qnn~Nuhd4j_K^_z>j#MO$VqGDoR%s?cI!q9U>ff4gLA4o6T%d4JQ*6{ng zOrs?CrcP&(*yg5QR;Gsks=KKv3QA%<1K9Y{V6veRuwEvk09`Fsts1vj8x56RZ4%cB za2$F!*rXm9qf`=ykB+oAXT9A`Q3o%`6|`Wm3%hmL6uv%7?2}b!`VX(-g${D9uVTwb6AeWiyVKcu~o# z49|?)*XD3yt>$$RYL&S8%$QA#G;q@-dgQ5|M+>D zW`-T0KnR23R+$;E-PTU|^m0lulA*_5nzhIJbTE|#%5o!uE#L$ZMYf>G`pQ{OyL)@p zxtW4N^!m8>?qn3j$xegIizxi_|M-_tnwge27>t9!F7t3p#h?t>crg(9!$JS{Ua>nI zKe>M!qoIHM`iI^m0zh&!a~XkypqMAg;z8rL-=1x$T4wuLY-oAK&Tufbw>7p}hL1x;c)oxzC zct7+Vk7L*{lETa$h3lbVKICC~$49BJ-FhD}!p=*WqKYl%UbJEv%s$Ai=iy}v4 zl7PBC{tvIscQ=N$Fq*AA!tmX`eS51w^BIBD48xq?EFEKAQy@veNLKu&8<{Cu=aTNl zHOELe2``;&Wka<_dAwdLj7$K_Qb~2aP|At#-cJOrjt1*`nYJVRpMUp$Fw+G=;3!z; zS&TqI1fQ;Tg+W-Evr=>#k#DcOEfr{J@!iALI)=v{Lcu{*!fh)YjP*NvrIqC><$_pk z1Q=gdNfz^7U(fa%`IRweaTcb?-~QX_#}694;cQ`pG)JKna<|2dCMJp@Fqmw&v|BBn zMX-~zp$iZpDW|C~aVUX9i}`9XUlBNoBlrh*%XgYczdOjHH1SQ#PXr~O5VYf^_QuRp zu!1-Z#V2CV+*mM524M)KX_^6x{?HoFCcUBWg-HS<1cyTLYHei+1moO6tGZdt%<%wr z49B%gdG*fyquFSRVkF1n5AIZ+KEIZ$)zGq*F2qUdNqc!`KbK`h|7PT;L6G654`m?Y z8;ku`@ps?8jl;BD$_XM=twa+dQPE#&bBu(bNd43*l!e*@wq1bHW6mraJvH0xa-f`b~eZDb! zokvghKDwL7NIJ^G|K?A2w_D7`Wgkl-jYBX9fM}MXiGTdv<)CfGVdz1$XZwHkQ9}fy z-+cKtjL>J-t5}dd*IN$;KmGJRMq$S%?c2LWH_eWAOJHQ1Zamv0KpIuc%G-8mx@o^Z z3GM9Zm(OH2DU_6*mcX;*@uk5?(gxseI_CW5YA_ncUU+-EIPG1r{fDBghv@sc$1hh9a57@?LC_I3iWH*M=u*`Sv+wN>Wv;-C;SZX+RX;J#_ zhxdXYZl9l7K9mq5tmC0n>dvvFK(H)t~G2pLEFEQ*?$>C{|T9#L@7ANCbDbKw)wUaU9k zqm^FC(=dsb>aCO@1J?t6p8^2@1ONQvgM->%{PoWa*P9Re_Hr?t=m@XcA*{!&=i8AV zh6vT|4H1leu*bc7-xJ8(UY%)GC=y9rC(d(Oqr|*A*DW`Wd>a4)6iKx_?5au zt0_vcfa3{ALn?#Ahd)0!D3DaL>CcxjM$gSK$xs@BR2grN*Fl6=~>1Dk+&`Q{>qh{Rrfev9?31t)Q$CNq-M8#udlt~1ns zyjbZzq>pqEVrFi@Q*f~$e)Z$U>A>%FObo+6*(SdDq`bA;fDyo$>xZ{%r!QVVd9a(J zNh=>m0s8u8(;pj$2d(!vi=2WZQQT}6zx?BQsaXDh|I5=-NhVnK`wRQ+$X^BF;eP(V z|E~@jDjB+2bGHJ4SzTiyZ`G`qHz9V_AAWW_-y2RukYaa$%M< z@x@vDb}Nq|k&}|J?>@d?eE0q)^__Ahj}c(ABu9a72dH0UEeT%`DZ&p zh`)GwT~Sd*;y{#`+VNyy+}qDJTa~pJ+J+@kfDush2;Qz&9^TFs8wK5TdlPG?m1|WM z%h11n)?OP>VQWVxn&V}Vgs#GiD<55$C?QK~zPPZxx=P$G;wNW)wOZl${N==Y^L_|n z6ijmjtxyz|FIRAaN3wLWu`&#;RVosV4R1!5okalAjjcU10yiOuhi)9lOtAuyd|<`x zLEo`}$;x?s+$J$>GF(=3LKJxkM7w^B^PH#&2#H86ez?W2H&*DTu^R$VB*;XwSzJ4= zmu0hskrPM+0i8^>tnl6Y{%W@TlMf5-YMB$+?L2kz=IqJ+T4(J2?)R@RPWwn0eEwu~HA6k(}Hwr_Gc5XE4WVgTTgM0WQ;V_7;&;r}01FVNk3fwTDl O0000 vaos = new ArrayList(); private List vbos = new ArrayList(); - + private List textures = new ArrayList(); + + private void exitOnGLError(String errorMessage) { + int errorValue = GL11.glGetError(); + + if (errorValue != GL11.GL_NO_ERROR) { + System.err.println("ERROR - " + errorMessage + ": ???" ); +// String errorString = GLU.gluErrorString(errorValue); +// System.err.println("ERROR - " + errorMessage + ": " + errorString); +// +// if (Display.isCreated()) Display.destroy(); + System.exit(-1); + } + } /** * Creates a VAO and stores the position data of the vertices into attribute * 0 of the VAO. The indices are stored in an index buffer and bound to the @@ -42,11 +65,75 @@ public class Loader { public RawModel loadToVAO(float[] positions, int[] indices) { int vaoID = createVAO(); bindIndicesBuffer(indices); - storeDataInAttributeList(0, positions); + storeDataInAttributeList(0, 3, positions); unbindVAO(); return new RawModel(vaoID, indices.length); } - + public RawModel loadToVAO(float[] positions, float[] textureCoordinates, int[] indices) { + int vaoID = createVAO(); + bindIndicesBuffer(indices); + storeDataInAttributeList(0, 3, positions); + storeDataInAttributeList(1, 2, textureCoordinates); + unbindVAO(); + return new RawModel(vaoID, indices.length); + } + + public int loadTexture(String filename) { + int textureId = loadPNGTexture("res/" + filename + ".png", GL13.GL_TEXTURE0); + this.textures.add(textureId); + return textureId; + } + + private int loadPNGTexture(String filename, int textureUnit) { + ByteBuffer buf = null; + int tWidth = 0; + int tHeight = 0; + try { + // Open the PNG file as an InputStream + InputStream in = new FileInputStream(filename); + // Link the PNG decoder to this stream + PNGDecoder decoder = new PNGDecoder(in); + // Get the width and height of the texture + tWidth = decoder.getWidth(); + tHeight = decoder.getHeight(); + // Decode the PNG file in a ByteBuffer + buf = ByteBuffer.allocateDirect( + 4 * decoder.getWidth() * decoder.getHeight()); + decoder.decode(buf, decoder.getWidth() * 4, Format.RGBA); + buf.flip(); + in.close(); + } catch (IOException e) { + e.printStackTrace(); + System.exit(-1); + } + + // Create a new texture object in memory and bind it + int texId = GL11.glGenTextures(); + GL13.glActiveTexture(textureUnit); + GL11.glBindTexture(GL11.GL_TEXTURE_2D, texId); + + // All RGB bytes are aligned to each other and each component is 1 byte + GL11.glPixelStorei(GL11.GL_UNPACK_ALIGNMENT, 1); + + // Upload the texture data and generate mip maps (for scaling) + GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGB, tWidth, tHeight, 0, + GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, buf); + GL30.glGenerateMipmap(GL11.GL_TEXTURE_2D); + + // Setup the ST coordinate system + GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL11.GL_REPEAT); + GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT); + + // Setup what to do when the texture has to be scaled + GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, + GL11.GL_NEAREST); + GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, + GL11.GL_LINEAR_MIPMAP_LINEAR); + + this.exitOnGLError("loadPNGTexture"); + + return texId; + } /** * Deletes all the VAOs and VBOs when the game is closed. VAOs and VBOs are * located in video memory. @@ -58,6 +145,9 @@ public class Loader { for (int vbo : vbos) { GL15.glDeleteBuffers(vbo); } + for (int texture : textures) { + GL11.glDeleteTextures(texture); + } } /** @@ -80,46 +170,13 @@ public class Loader { return vaoID; } - /** - * Stores the position data of the vertices into attribute 0 of the VAO. To - * do this the positions must first be stored in a VBO. You can simply think - * of a VBO as an array of data that is stored in memory on the GPU for easy - * access during rendering. - * - * Just like with the VAO, we create a new VBO using a "gen" method, and - * make it the active VBO (so that we do stuff to it) by binding it. - * - * We then store the positions data in the active VBO by using the - * glBufferData method. We also indicate using GL_STATIC_DRAW that this data - * won't need to be changed. If we wanted to edit the positions every frame - * (perhaps to animate the quad) then we would use GL_DYNAMIC_DRAW instead. - * - * We the connect the VBO to the VAO using the glVertexAttribPointer() - * method. This needs to know the attribute number of the VAO where we want - * to put the data, the number of floats used for each vertex (3 floats in - * this case, because each vertex has a 3D position, an x, y, and z value), - * the type of data (in this case we used floats) and then some other more - * complicated stuff for storing the data in more fancy ways. Don't worry - * about the last 3 parameters for now, we don't need them here. - * - * Now that we've finished using the VBO we can unbind it. This isn't - * totally necessary, but I think it's good practice to unbind the VBO when - * you're done using it. - * - * @param attributeNumber - * - The number of the attribute of the VAO where the data is to - * be stored. - * @param data - * - The geometry data to be stored in the VAO, in this case the - * positions of the vertices. - */ - private void storeDataInAttributeList(int attributeNumber, float[] data) { + private void storeDataInAttributeList(int attributeNumber, int coordinateSize, float[] data) { int vboID = GL15.glGenBuffers(); vbos.add(vboID); GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vboID); FloatBuffer buffer = storeDataInFloatBuffer(data); GL15.glBufferData(GL15.GL_ARRAY_BUFFER, buffer, GL15.GL_STATIC_DRAW); - GL20.glVertexAttribPointer(attributeNumber, 3, GL11.GL_FLOAT, false, 0, 0); + GL20.glVertexAttribPointer(attributeNumber, coordinateSize, GL11.GL_FLOAT, false, 0, 0); GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0); } diff --git a/src/renderEngine/Renderer.java b/src/renderEngine/Renderer.java index e7e67fb..1b08d0e 100644 --- a/src/renderEngine/Renderer.java +++ b/src/renderEngine/Renderer.java @@ -1,9 +1,13 @@ package renderEngine; import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL13; import org.lwjgl.opengl.GL20; import org.lwjgl.opengl.GL30; +import models.RawModel; +import models.TexturedModel; + /** * Handles the rendering of a model to the screen. * @@ -54,5 +58,17 @@ public class Renderer { GL20.glDisableVertexAttribArray(0); GL30.glBindVertexArray(0); } + public void render(TexturedModel texturedModel) { + RawModel model = texturedModel.getRawModel(); + GL30.glBindVertexArray(model.getVaoID()); + GL20.glEnableVertexAttribArray(0); + GL20.glEnableVertexAttribArray(1); + GL13.glActiveTexture(GL13.GL_TEXTURE0); + GL11.glBindTexture(GL11.GL_TEXTURE_2D, texturedModel.getTexture().getTexturedID()); + GL11.glDrawElements(GL11.GL_TRIANGLES, model.getVertexCount(), GL11.GL_UNSIGNED_INT, 0); + GL20.glDisableVertexAttribArray(0); + GL20.glDisableVertexAttribArray(1); + GL30.glBindVertexArray(0); + } } diff --git a/src/shaders/StaticShader.java b/src/shaders/StaticShader.java index f6ab20c..ae6d9f9 100644 --- a/src/shaders/StaticShader.java +++ b/src/shaders/StaticShader.java @@ -11,6 +11,7 @@ public class StaticShader extends ShaderProgram { @Override protected void bindAttributes() { super.bindAttribute(0, "position"); + super.bindAttribute(1, "textureCoords"); } } diff --git a/src/shaders/fragmentShader.txt b/src/shaders/fragmentShader.txt index 3920269..d253531 100644 --- a/src/shaders/fragmentShader.txt +++ b/src/shaders/fragmentShader.txt @@ -1,10 +1,12 @@ #version 400 core -in vec3 colour; +in vec2 pass_textureCoords; out vec4 out_Color; +uniform sampler2D textureSampler; + void main(void) { - out_Color = vec4(colour, 1.0); + out_Color = texture(textureSampler,pass_textureCoords); } diff --git a/src/shaders/vertexShader.txt b/src/shaders/vertexShader.txt index 8399bc2..ee4b5e1 100644 --- a/src/shaders/vertexShader.txt +++ b/src/shaders/vertexShader.txt @@ -1,12 +1,13 @@ #version 400 core in vec3 position; +in vec2 textureCoords; -out vec3 colour; +out vec2 pass_textureCoords; void main(void) { gl_Position = vec4(position, 1.0); - colour = vec3(position.x+0.5, 1.0, position.y+0.5); + pass_textureCoords = textureCoords; } diff --git a/src/textures/ModelTexture.java b/src/textures/ModelTexture.java new file mode 100644 index 0000000..eb3520d --- /dev/null +++ b/src/textures/ModelTexture.java @@ -0,0 +1,15 @@ +package textures; + +public class ModelTexture { + + private int textureID; + + public ModelTexture(int id) { + this.textureID = id; + } + + public int getTexturedID() { + return textureID; + } + +}