From aa06320a1c424663cbe32e0d133b4859c89915a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ignacio=20Casta=C3=B1o?= Date: Wed, 25 Feb 2026 00:56:38 -0800 Subject: [PATCH 1/2] Add support for packed normal maps in WebGL backend. (#33055) --- .../screenshots/webgl_loader_texture_ktx.jpg | Bin 51438 -> 27062 bytes examples/webgl_loader_texture_ktx.html | 2 +- .../ShaderChunk/normal_fragment_maps.glsl.js | 7 +++++++ src/renderers/webgl/WebGLProgram.js | 1 + src/renderers/webgl/WebGLPrograms.js | 11 ++++++++++- 5 files changed, 19 insertions(+), 2 deletions(-) diff --git a/examples/screenshots/webgl_loader_texture_ktx.jpg b/examples/screenshots/webgl_loader_texture_ktx.jpg index e9fffb50c6324b39a14bc2d253ed776c06528068..9d057c9ea88efd2e2eab0a538687c625972800d8 100644 GIT binary patch delta 25269 zcmb5VcQ~7G{5BjlYpdF`MJYwC+H~1P?M>CDC~AjWsl95~uD!*cA@(e4*Ctk}kr)v~ zJifo@d7tBb|9r3G$bBWblN>p&`*VLj=Xrk4>nH)YX&UD{18@)LzwzJk-hTrR_rD`P z9v&_p0X_l2|2zoq6A=*JCnO*sA|bj@{NK2HMoL0V`rnKH{k41exVZSlgam~DbNc_s z;T|z@ZAL#1E*AJ(zcE03FKPYWec*g;fp6m$)FaQfzqp;&pDhK4i`K@9Lh4rgmw7^1UBwY|Js)n zdlFY>X;7~rogLmYu^^9fotL5TtwL9*%;dmvYozvLDOXxw>K%-~;&!dA0?Ms;U$agQ z^JJ-tqyRSbO%vv5?`vY9TN7O ziUq;-s+oZc?cYZn%14UMg|mMOO2@61i9Y2>(qmKRWd^AanRUzpv0-k#-CEj?$7lNi z_YovmqLOP_?4-Hy)H5g_GUHgaVeafjmhnEGDT&FPFNd0E%eSw9aGCm)knVHHssVe* zCfuih`dhS4aGTeqceAFzuBS{fjnx=k5#;m$j6`ap*wFw&WKgQPcY>KDy8W8Ln9sG| z!bRmJ$Hmv_7#bVP={TZs1%C@*8=Ek8uiX*m-#OjXUDrDEmad!NXHktv^R$n#Lw+ z6J1pw1XPzPDuElv(d&NUOF9ULAbQ8aOHzK@@s%k*|x#@;8#hKK~$TN0EVV~ zF|o2k9@65mu|b=H z+(l&|G<*1cIi2Or<~N#W@I-uFoKM@-t1$cx%xtFb3HP6r+yw;HO}41BQQ+)GmCs)O z=PGHRY2cz**sX=44yQejL*n0FFitj{4b9%%OaDs>5+);@xHqpA`Ozuc9ibeh`0|lQ zQhdoL&wh}UJo-_1H@`)XN)_6qhr~nXS;Cr<2b{0(-s`Ac2euw@oFScoz#x+K3G^e2 zZb5pqziHfVPnl)4gMn7%i&~$s6T`yD?@jPQJm7&_7al3AVb*&>$&EGizRe#yH@+lv8fa0sv5|nmNYftBgN-ZJ~fH?t}D;( zi_Qv=65fid!%$7CQ9P}-%a`k)xdp8Q@oP1y^*@ar1L-EA3N9$rzSz5eb#i;PL&Wa7 z?&N-+5V>Nj$l%VfnmmnnUBBhm6M@>oRqncJPiN{re*8YT_}jU{3EA#@O$9&n%4b}v zfBl>MLY-vH+5kf+OrW38W&(UZNeaks4$h>`C^bzg6%LJGlCRyao3s@@Zg^4wD~A@3 zimJ0e!#d^bB}0do*|YN)%1!Kjkqvc%e|>H9y%emDs00foYQWZK0rOW|d0{hYbRjJ^ zDrH$DSaRHFJI5+c+fChJ%TuT5wTjBY1U-@)^S~8*{}SH*!;=jMLyAlbKU=W2|GnQS z?z^23CUSDX|K<64bb#eiby?c|>m)cWQKP-;8N-Ga*MdZv>z>dm0zNt<*SCeLeL@C&qNA^6=C zShIZpv7V4)&0vLa#P;TnS?{xS8wTbu&JSNRGK^-8>$ep&?-elRX5IoIgiicI$h!Bz zB%FfC5JNG2PE_UT&s5TpioM(shB{N?x!}5p*IYoH2qUrsU0lL*wV7kt1PmO0yvMoA z4i7>9Gx<{-q;o~7L-@BLnXUXOip!zH->tC{5P8SAS@D18bhs`P?A64ue zQ!7UTJj9=JFBfQQWl?&Q^9KdVs^YnJP%E1FNNnEo)Me5YE*Qp+cJN^PhIuNuWSOBU zd_|P|OE&@Zn%V19(nLuyUmf$THcE5FLE1M5T%am7JEhVH2!!jb|M@bixqt%LjO=+c z`mh{PPauFh%ut5@&(E#y{FLha9I$b&} zUD?gVby`n)lkh$O1!LJGL-JnAc=%kAm9Xa(VI`vxX`-$L`)RqJ=(u85vC6#)`R-h5 zbV%>jTBv75E;%}0Eo0QdMx*D7Ldgk%HamCEwc6K8bRM6xVz1tMQUEfQ|^7#laFAZ|7yZn zA(a-hcs=2l&_>AONsh*wR4BzpPg%$$by`H_)XDIqyS|iw{497~pi;l%G+&&lB=1F_{qn1K@n^Z>_JTjByUSrfWzbIw z2y8t9%T^1!X|BX*l^P8S+e@*G^}X7?UuR@2ZMc-%ajHSbc4*f`M0ljwf&AB(kzhe& zfg!I6jj0_(tsO=~o;9uGu>EbdT;pITwGCotV+Lz(K*$&WA~B@3v(FaEn$p&m9#p82 zf3A95Nm{=2S@lR3`SKxD63Gn=uo5B~u$+_FhkI$M8QHt(Tt8<8-hG$KFaG^bLK4TP ztCunL zGG@r;9^<0;-WJg@6E&yH19+lZSkzWkyvLlC0VVj`3pV-(<4o5)IXjK1~?Z! z>BVJBjz7!)^^zk;Sn(x87YOs_78IN(7j_G3NNGjPr15`{5pqIVG#OPvzsd|p5Quq` zoGoisQ-E;0p-k%#Isp6z$ps0)kZp{Pndm|Tn&w_mGH`-PlfM22-RDGrIKLA(+VJ#< zC)F{k9|YFl;ZoRooCR?wg%2~v@1~@oLvWx|GDX~Gkt2Q~CVxt-3Xc&4M<6V6w5`=fsZ())z0cV_HY0dCCNribQ}!>okN z;~Tve2g{p#V8r`gWSb^Gst$fR%0!Z)^?xvjZk?~M--1FPa@>CcarhFD?rEl0?QB(V zt|YeJz7$X816->$BU$5RP*-8aIiFqy372uzEPY*;96raI$-_E!=c`~4oyc;b_?Fdd z@_Cb%#_++6!LaJoxz&M*_sXBL362G5LW$!Di5cSQk38nZMwvAA<0dvL9#6zNgBkLS zWe1uo7flp7@6qPG9D*I<%!DK)OzfFaf77*iu|m$d11xUOp3C{n%1M~{SoOWQDvm|@ z?o7Lq);5&CmfRv;4_3T?#Fv=O&1+s#!d-vhr|JWNPejW-Sl-K#n{innMeO_07Tx4S zNKD4R{ZQscKNlJ#+#XbIv4j_SdFVopa?=2W@u9FfQy+|?VR&1RQ{V50t*r9thvT&l z|5kr>V0={xU(LM_?b5-){`1})q~rnp&veCyy?>3El;hl&ds1trxXSRzr1JYQn!AGKwKRM zymBb4a-arj8WN6^4hJym{GxYe3<^tdbD&8ApzwiPQ2N01fkT^Xw+^GjO^16N&pDrK z-yj>TV4Zxbq8SB84psB#JNl2`?_Qki*UQ?WJ|kd#6s)FZ7;&U+LisJo#>}yX$*IMw zP+xoWDZ?m;{7BQhVyRiyPgT!S@^30OL~m9~Bv#N*-5xp*_X6nTnD*E3DrMdP8_u3N zb52V3RW4lm&HnH=Pb0nW!GxR5TL(mR-YiH}DXOaFrHQG|ByY1C%mNl)Pf{z^$6jBt z$o2MivURky&E#(7m>3ZC*U(sf0{2P|-#E>_hiWT#&onG$Ri>`(Ot_(Kt{(*chTS_V zLZ@%Cg-FF>L!M`9h!Y15?btH`(j0{TDWmt_b2JL*{|#_XG+UDZDv_?_lFBJ{_M*EkH8w!&_}M8 z@N556lNOBPiAmn|w8Ac}1Zq*&fYYA0q1D2wVzEW9?aw74mKcAN2g{C~34Dyq?#$tT zG*ivGL-L`8sxonCi=sag9VVdcQhinshvxY!J`od^1FDF58eJb5L5Aymw_ z&~G4iBcP2U%W9ZcoY@bU|25lZ-WXp|5Y|YNPAg@*u=p6}S!?EA=IIe9dTR!Y`BzkWrCAM{GwNj3(r@nFc|jVNn(hb3 zTM$WqC~WbrHk93h^oeiwSLs(Bj709Q>soomQTOGL^BOC}+W|ih&5KA46n%YS*v#VP zkoqZH^}aDbZ1w{b{0$wWjM?O)^EWDZ_E7^QPWP2>K_(6@z}hGIqAxlr+guCSh@A>1 zMZvZkBgIBxV$gL6mPp5mW&V)6EVA-}eSSl8#$MsOh|SnSPhO8~tX~%hmz(?VOZm?- zdPtM?@v7qLG{7Z?L;Tk;HfEI?y4KFIeVrQ~2oQrZ70~erZzV)r?wvM4y)TvQ{oTY@ z_=hN8KHhtLbrQI1&ji8W#J?Gs#oZLQr!Dm@(YNk7wiZDrHlCeRuip<8rtv2&}Z=Cs;kJNVZwlB@Gt-tPc9% z-V=5cSQ7$Vp>6HYc0J%Xg(6PO0dqDAO>Iw-nwp3i!+i0e$BDLdPR zX_Bw90EGg-H&S0Pnc#dKf8MndB!3^aUYenv6MC)ss=(o*c!$K5%tV2#JG9`G#x{%K zPZ!Pl7xwpr|B)}FPuM@=FJeBY$&o|D-W*IXQS3%-{E}b6+Ro7Iv(>TQ;hQL1N#{mB zaP(8?9s6~#3d+LzLhc_`e;G|n`E%+T!f4wHAn67IAJb8(xU}Wuxwe#E>d_S1?%rg@ zM72yMb1p|z7(Y-IlDfMF*zqPOQgIJQ5;qracK(XPHrYw%Y z>}9rsjT5=L-GF%03#s|u%)yp8raTW)R1C}f_Lk+V#ei3PIobdGzL#e@tn&Z0VbIxb zNGVJ>o`VrKW_$Ep$Wz^d>I5IPMeR!*H?)5v3+E~E9vwLWn7ue?CK#zg>3oe1j(_V3 z38w_mz~@~`BC)?;c;#>+`28ae&xY}l*k2anf8m&Agv5qJ{?A!kAA4387L98U5MnBp`g$jCV zT*yLn(QKO)v3x3Mw=y4Lb>8dOK}(L3-#_KhBt-Juf;@v0N4o6rPUmV;$UnUS!X|+4 zopsp)*42#`BB$P1a&EL|p%39;E-91BZ2#}hsYY?PmfC2i#h~_ht>EVY6)=Hh&Yk>> z#^(F4-$(5@tkqt^%oF}UWGvwBhR2IB6S#hjPR}!5ecg7myvT;KX^7Y^X(qUId2tvU zrVABtA3Z7fAPLa3vU(Ru44=XNx`wxBC*FdB`~(kKey;AZ(F#E2%ij=>T5)<|txa+T z^i15|@c~`ROZY?}-Z6~-nLb7FstyZe+)8|IEQ>Rgh z-rj!><=3n3LIG?}f=&V|_5zt^OuA{)-0hLeW`sWaaBiN*dh*^p1oQ~6?2;Ik&w37n zIhl2dKu30)i#wb{&SxakS=!8ElJ!orbI7fy2*r{+WDLf7s*|YwcFqqQ*?0O!=i2@c%g-hpwgIYG6eD_^!;`Fg>Aim&=| zJRv>6LkpAUwy6)PY5_``^~%nb&RQ%x!fNaeT$iflN{oI%7M}+v`}I+*6FFEVE}Q#+ zo@a_EWFCui+B`@RzRHfY7}%>4ZC6U?--$4Lb)WmisUl1&{$+KE-0Z^Z&!JpTWl0xP zCyj4G3GLS!f#VjGGFF=uBxtn_SO^5-!j3pEni=`LNTdbT$D-&n^p4L0y>pY=l;!Ba^lljIVRZ(NJq13hx}YA1=$1tSkJ1>Z&|~8=3C|cTCMB6{PPYR`>+Mv_0WkJu#Q!sg7vSuk)Odp_>zow9sk|{sv#dIs>MSn&+c6Lc3Ayt#dShta zyUSnBtUe9yt1qUFqqBBTsw;Z|tVU$ChT8P3ZJeX~N?S+WnhMdE$_b^k4B@7*q6 z%f?+X&cqT4<|#n1GsY?PfBL1WVxdWwlfkqSJEvdq&g8zlw^~aWdI;cLkHL>aS1Fvu zuU+3kC$Y0Xwy2dnDLI2Bhh&glyYzCq>!OAgs+Lx@yIN-_404^`C=4eyD{;^&VUo12J#6?k|1V#jnkgTDMybVz5K}>&l((#QXi%f?8R@C32fZAV3yC=-jn1fc-$KoBT?!P-PECTMZ(+ zkXrHQp}vtFo`ApGU?a#g7om{-Qpg#XRm4A z3MII{Qgj?IBeE$-dxw$iNl2>l>)BFWB_~@Cp0C?28zeD$glc^@h{kLHo9*WIqNGY@{%T-$eC~R5;#prJXs`dxfQ-_!50&YZJ&IX{TSt>UV8HCW3bB5=*`gNenTR#w1n3&#|yV`(s8&6~oJ0&}+2w z#sr(=ceFuYr$cjw=3~x?lr_&F%CzpGe_hPvevETKETdZ)Z`_61%7MCSBlAO=%4>Un zy55NeZjGB<(dZ64Eu@nM_bn)m#Anp^9pNvZT`wjEQ#QYCqhC)|P1{gXHYqa@`csGH zE2s5~ZWCF5l-DfS$i}%;sdQib@u*s@aG4J!$MfZVLz`?B_8bty*1Qt(5#yNSl`nIg zP{~t3TYCwTzGYE=(VI(x_J(htH%E!KBZ>g-rr7cJ+#sWk>CU>LMs($?2?HW{F{~g zZk&_hN2E~RsMf-QIPkm2$B}g@C+iFBEf{FNRsidE%850K&tKsWgy)U9u_pO$95Sk> zQE8OgN_(@3c?aQe-qUMkxL4CVN~PW0l%iPK;GgZeXSugA%hPk=&z87`@X(Ba62hg| zz8b9J$6<-AC&d;RC$vub5+1cQ>V2%mlo}Rfw@!eNIf0o1E^f)09S6QCbbQ;5l|Z23 ze7^1fQBnVAVtX0bEypnjWrCYo^k)bqd1j%cC+R_JqLos?A}7{%Ef7AD7(Skd~k<y8pNkS>gj4Re+iA^I>#r64==Uw^#S5Uz7$DZ^k@HhXU1uD z?Ov7E7oFqLP95NQ-Xc?3{q4y3HW>8inqTHzmJRNGXmPEE(YwiM5G3NR*!yIY(X*fUH6FU@@Ubb$x{7a*m{l^uc0Z7 ziuQPPs~UB#56tgevq@ll;slAnEUqzh*rzj`uuN^*7jyF@u`kF@cpkjMd&w!JC`%Q& zsLUW)oyAJt_{{V#+&K9$#2OXoTJaB%3mJg#&Go)6rhSo>U47V8wbbl-dRO3(^L^KQ zGHO3pu#*Z0UnE&7?bPZ`n}Tr)kJZ{1Vcj(s|D98@|f z(z%8hLUah?w11IiK6YOD1Z+6Rt<;+6AZK9H6!yGjcq?>BZuR`6wUTert;E0Q0%LS+ zgB@@LbQ+6lQA)kXQ5HmjOqjO_@j(`EqXnA^@U!VJCO=qLY?9PxJ|(JopKgAl#hEpY zt8{v1(Aa0BV_b5@kxCUSF7XTV_KpIT`=q@_#vgLozyrvYCzim1q-l|)CLD1d-kz;m zDjRMMUzfx#Bo(k_5a2|n@~y99Lwq(=k~;;cT7ng(EJYaP4~BU`XakD^hp5qPclaV$ z59~PUSxfxyxg(>(K;j_NNF=jLd{@l;c6vOQ%qrQ@V)G{O>&8M5l_ETlI&y(|239LD z)1-^qQhqt|osi~i_Hhn_>1CUX+QWkY-)j!^Hk71t(W$NDdPiJ8Zc%(-^VotaQwdmH zeQqIgST{J7lzGWk5=iu)e2968?%3c$^E4}`iY!*ul@|+3S&5w*mS2XFcD(mwtJlCZ z|33fRYHOe)d^J*>yrvU=QvqAgV&$0(q|`+EA^Ih(1-JX$b;Tvcd>ns_JlvZtV|wi` z;#k*hP$Bg&dzUqQYhnOGs#3UL4=gosc}e29O?95)=&3$kMlXAEGssfhM<$!AswBkV zT4;uP+h2Y%uKTpz$&YVAh8E?y1^vKly#;kGMV+0@`=R5Jf;UgNW77*uE$`a+x1h6D zW(B{&?+wUU6=X`HcsLCm&&|5E7S}Oz}gxfCB?EJ zJ$6{0s38Kj@u&eEV9WGN@sD#|P$~nxj8$&2G$W|)7KDQlglpm%`jjI}&y_6anrKyUIfxCmIdoS1zZ&EU5~uIY0U zlTsILH6m2YA3BCbqDyz#lUMsVpiRIYSb%h~f^hp-=@2o`H+7kRLhVilBrtLvviP7tA^_;t<0nfywBm1nwVklx z%(pclgpKJ4&~*3R%F#3io#mq0J0OdiQAC_}kvwy?8i&kl0RTDo(N!G@R66ce-w6FXI-_STkdlD2!* zlV!5+YjEg{1T5fm5iao|uF#3c!v%4Z#^!q47RfvZLUiVX|4c0HUq775wbakbTGaG% zlcF0u)ZB;2}<6 z-~J~Zn-H|~`dS3QrsrwKqN}tIKvaL#O2EseMx}dVbYH~u5BS;M$cdMKiF4p) z0aZ-lrhUbQ8Tl<}V=fPAx31Yoji?)hTc@Q?6bHbxYo@C#v+*V#@qp6971Uet9w>7% z8{{zpKYpk`9c~#$S381~JB`eQEkv))|E(#?!A( z=HM%CBMec;Bm*WnnlwIHv_kzeAzEfvcZ?*Ci6KP4csdCq|LbxT6@d(^-(U&6Rz(=Z zan(7KU-5Z{a;8dG^o-Dtw%B>mB&Ve_2vp-e%WI%r{NeSXq}pR zC+t-3W@6qVl_Jjk3kZrfZDyz7E7mKHRdfs9iDL{gr99rdvT+^*%8VPO8^`{qLbDb6 zbM^5FmnnCRCD>gzyV$2><8UzIv9&m@UqYz)=UtqtNN#4k1oPB;RlHdvEYB2-JpuNl zq>hPi|9%VoU*-8ufTqyD$-pSM6*zQ0s{h(WCu~$tzH66#8L(*{_<}EoIzSNpXEC{G zWOFk2HAZlzn!nNC`OQoJ_@=ZN<57nv3_r3y$@*}|1^CaW&g`oWtro;QhPaBHO`v4a zuEl==R(_10ThU+rw6@|jz?D3<$cf5#0yXq!R4A5)R9)bY?&CPq@6Vs}?IO=FIi#Fr zm%OI_VH#)t_G%~R-7l`n@7xpFT3ZbJHyB8Xj)$N#2Vu02TIW0g%C)5@iN#iYeG4Rh zRGA~Z2Yr?i><}J zJ+^x$mgl{jcE<&_d1fn+B5-kyEbtjdWHyihqd5KLhSCIWtQV~_YvZ5bA*86cK!vZB zch-@gWEL#q;kQ1I|ZVz?xdmdQ7W^I&G7dyzBLGjLKocaAy?*Byll_-qS7i= z*z9nlR`K1lPfKd|h_Eyh+??lCdu^h-jbr zrrQcb+R`6K%fB&yVMU}H6|z5t(OOX~QgwHa{_8I|$QFIU#tgG#qXfT!{dWE&W)gWM zz+D$?!DCY3*j`URu4ORZbqo4D&rd9r7ae1Dm$^BNMs)JL=ho6MpI#gLPJwkzTJ7wN z&Src<)_{Cp_AwpVHTxp=pHjQ1j2 z?_KV8TdnIZdpRs)+2Rgb)ZDZnO#h%;>sVrS_O707^xK!~<h&IN4U5pQ3kZ23}KvSs%QAl6H_^ zz)dYE&YY^)bn2rPoq3jZN$$~eMHqK}3nE+Fm!m???j$iYekZf} z6g5ffGo>WK!P}peQ}_k-5JzcaE@5-Us^71x6S+L)s848ZkhJi2Kd4U)Upvc%6R-{$ zdMRs-|%1Z1{d@ii#=TWH1wO7SmoXtiqmXT4}P?qZD%^2$s>%R#FuiqPD zKBApA_;vJJ(7olW-ON#V+QueymxZy4BnmNKhd8acvrb>KX!b+yfz1#NZ{AO0MI3kf zpQY+HX3(>JbSA4c9L%CfV;Jr^2mZZe3%Xk`T?;BFIsThsE2LnA>*7A@xK}?6?iKUM z86qqQA_bL}<1lnF3=jV#U&0dk!ZVKvu!~bpi$2(?{9Hw@-Zp6pnH77;G&#Hm>R zp~%IxDmuIf?J}q~eLf~ST)K}mTbuAR;lrZR1p(c%Ny2Ool=TcfltFJ z=q$tz$`7XN*;j&mw>%DW0{&vj@QJ=iJz~&xao-Q%x|Xo_#)=?18}kIRIp-#qN~a6k zlSrI}h8M}jK|b<=8WO;k+_wCTsT|jsNp6mUR9=^oHM)eq%<^ znPxC;d*HEe5eHeTYNA0RO>&URy#g{l{W5Nrg;2l1@%w6Tb4n(1?;nb}vVnD{1sm2F z+9@c^d;ypGABVQ5_a6|rW=9T!f(Sfq6NIZdb%Z0Jl8BHwxR6yOCuRP1p{cVKaZP!- zIksf?7KEXbHpI@t(C>?Po-*>&X;Ew^Dt|;RkR1=mQ}nbw7rk`U&Gn~w+N|;X&|}^4 z?A?DZ!T;0J<-uKsSx$tRbE9)NrB~>B&B@#608Za3OXaGKXZa2?Yfn|^LA5$T%6NQ! z25A`vC5jmyUTcWj4r1*JK90R(7Bq*>O%C>nCSnuLd36_H>Qwx5X@$u@6rOTW)mQ6M z;yjb&2>R>;$;tbn-=`a$N1No|xpH{P8pnYfUh+C{(V%XU|9Ic;I0WXHO=0l+EEZn| zunQ26JcO)#sqnWiRD7T)lwuh}N4lgk;7dqfKE~7bCt@b*LjSl8$QgX0-;w%2cVE_g zv|dDhz07zmT25$x4bgNK9q`P@an+|d70X~1rBe7Ifh}Qe%=cjsk>n==FWeomCISul z_Gr^cBSG_Bc`hl}42NqK*)LP0wYdmQVBm^71WUbNpgn)iiCwDkef<674yay0{GB2# zRgG{M?^sKm4+K{b^$zx9LPp83SfU&1{!1>dn?DDXVJ=us>41XVfA_?g3(Z zAkT*HlNm3`$BYo3fXvk8L_-(ClK1ynx~6>gAC~iI=(`?0FL|vK?Pe?pJzx8?tCO@& z*LNR`1CLmr7VuwM;B>H-=vi+ z`$A#^pP@76H^M`oSx?`KPHzn0JyQH&Ztal&ok4or%$!NU98U+;KhIC0Jm+9OZHcbZYOh56$^rFng#G#PbY*FY6B)GEdx z&48lpK&#Kp#q+MEU|XX-sqw}Nv;)2Rp~qb=%V^k4lP3zJtlnfw{kscUEv$(=W1HJ* zY#sMW8=Q(A+ua3pCyWn(yb#!%XsTEzlN=8?i_@5QOF}F6SMx*S7n64)QI*%$uh@_0 z)d!+yR!KDNf;$I5m8W+2v)zAJ%z8FsM1FzA0WKfzsHPo;64#^!adG(7&9}t9l zE_j4UyzZO959N~w!XUkf6D6?sPl~@J{j8$M&0ZA0!A4cu!mu823N(;UP7tQ-t=)p= z?>tG|aM(j5jO1^4JwjX4UbLmZU2JGry@jD`>#$1#cb=sbm#^EnB*xEjpV!3@m+<>sn^Eu)MOYEV{E4!4XPa z$DjdU^?CGFyI2m0Z3zVpARBXIWz67ae7#uy&blxM!Gx+O4O7G~&_zbcHpOnSlcdPs z*IOW)z`0c}WL(O+`bP>@qrG{rOX9c29#3`!UNnmnf|%_f3=%)d zCSk9`(-)iaz5khQ?=WsRt8?|Sywjw!1IC=O?UdZ@8}&=glj>*wYUE4ey@mU1P^>ue zo0s_`gp3sD=ajVG3sjoG=Jy=!=isXZz7Gatb1J&AZ6kyFET`RTmoDIiJ3kPf&l)`W zJ=$-<8fb-P>}-5`BP1Ee1r}_&m*t=F4_csA$EcC0q<8npg?|H5O1)-p;Bt@+e|`@2 zY39KSGbafp2X9I$noe8GE_U)()|PEZjBe3U@eO&DD2tMVwBLa%<`H`3Cz^5pDLG`z zNb_^em+85^ghB;0~XPL^Fhj%6tk)TGGD-4WS?)jBNu_ zJ_!8AX}wNxeU`X0i6D=G=z{2%wchIMir5j&(mjmcuu?8*kuw*{pN0O%>xRuQmlpjU z6RC1+fBojeI)xnr*^r8bA3K_%YS%vw1rw|mE+U^5g{_-flTyB7rd05id3CrEUOe3h ztYl(MR!;3_o0_tX_N>RhRj7y+Ri~Ax`)4;Fn!(9P`i*rx9NLOz=KaiyX;=5jl9Jg1 zqLLE7)jXHJ-Mx04fDbxCgCjK8r!(spp|0vgyLXhez+*8UA-X-E+Z&=(Xy+13G% zRIAs2UG{)s<{=XQOccG6R2G=)qGKeh$}Z>cIObop*k*3<8kG#;#xc`gJoT_$8Ix18 z^v{;}bISvNE^CN)TevgM>aL;+ZEO`EGslXoOPy(a{(qaCt_=Vz(cbkJjQmYxBSj?L zs?f~Y^__2k(jmhafhs8dBQ~{YW+HP`H%O_d#Ul)=d(i&og-FY0*M$4<4sWgiw7Kor zpXJ9pwce(7Y&ahrh^N9BqARMwR!ECJmdBfB^Ns1AOvBj41lkOxXGU+D=_hcTK;q&sz7b#$=agui%@dp^`JoL8ek zG&on==h4zo&}OZ*8=Lg!id$(GW(`D&`=x!u3UG@1c@e%C%FpeIWV*^ zy3E_IQEZI$N*bP#+-dc3hs()^iY)e2(Zcm5UB{Q1qVr3Sx#(}#d->Dq7t>0v>2XYS zCOAh5WxY+EepgPl>w&U2xlrHI?oSyM!2(<@b?=mXw9T#bbd`U98pQD!i7Uyt;4lxb z)k>N<1-Ka#A-oAo`NGcvaWS8wrgqg`@zIIODZNXDah;~I@tI!hpC#6v_mw)I=zYF0 z&M!FR_X=>jmIB+)VoA}2stECj$4J!$qy2;xQ`5|+0)h&i)W4b)5*R5BgT<*swfpY5 znY+lv2ze&wIcJ=}l$O`E6nE~Tn^`H@M};5VrBU* zlaacyI>j~AxcU})zrWh|dsSaCjS)fus@u445T{12MbWn)8H04GKSUjlgU7Ol+JnOm ziWVN6oe1y#znlDmy@wyUu&0J9*oS!$qb5_87GvaJL_`~lxK8Z&EBA7qHSnV*DAovA zz(e$aka_IWjUvQYz;3#+#1D)X;5KI7TQ>U0Dbq+PKUu~gk5HYTVP|4dWj_M2d%&Bo zTu9kLbWyI~UMqky;3((h!9Bj)ghJc#)5ic+G>cJys}+zncBT=hd-TvI$M$)$ldT9V zeeiovcr@52xWtY6&@?qSuZ51q(^f6F45K%9C}e6vGFzs%Zhpm--V4n=bhws6({)M7 zhu#^lhzF+j=cf2xsL+Qcn&Jb*QHtD0{FomkcMrMP_IEFG!a)^66BzLTy1`jv_^nSbk|tB=ucNEb3= zYgoKSV{40#k@KIQ5BSby2Q*a=tEW41-=wQ*j11;u@3d(8Kz6VvLNOk(w1G; zoBd?jVC^a=N3;6+;mBa3JGlm#m1^=ME%D!z!{btaeeHT(Lpz0DFS12o9{D^Qt*8*o zvmYhB=X3cL=;oM?JD(}%_T<-aOg`51xuHd>E3O#*Z+j5}ttO1}v= zp_jHK*qaF*{_;Y{%Y+q_1wzoaQc&7E?}>)y!mZcou}D-;;uuol!nqo%Om;k z5T7fsSkRkLRbRnjg6^5yE_xKUmCkSU181CYZ02n1Zbwg1(UEL`auv7u!(3hPT~Oj* z-L!P#U>7@u&>m$NN_2iF2ev1~fbp9?%6$+&_#G!`e4)v{WLG?N)U06y$x7Ty<8+1?s?x0i`Ylu$TosX$t zK^v=gfxn<>f~1R(QFBl0PU8 zXAH~2zUGcS&Kjad#?MY%9+A0^wWJpY9MswwCd^i$zwg2NG$S6ERb8X+l*TCwu_sbl zK+)`p#=5sPbJB#lI_Qn>rXaneaN|H8yhGKOIq_KREXG9EU1e8NJ{x44Xqal1=$CZ2 z>&nSTdazRx?Oirp1(rwVROOkg;RKs>uxX{v8APOf3@!Menpp0ZW%KHQ*M>;lSam&9 z>CQ1qW_7LOb_-(QN8*0{dJCdSxwzX3jGY4vdT&9GuM!s1OS#xhVxR*}%Wul~kL4Pa4meL@T@K zfd>*oN>!4w3uMmvLH@}A;*I=*Qm+NIOXow!J3OuKS!L7}W-nMATkv^OarNVmw@OTf z15%iueu+4%KFwGnp7vk>epXvACMJ^ka&uL-F?N##Rx5lY8@ zCN}jWt>6I^y+EqDvO#mYg}TsqB46A0cRJ7bhX_61j)iWW2H`Y&-!VV)n`qZguKhI% zlU_!!cm{t@-|yj)COy{0`_Xw}_PtiWq~DElugEYbyktqaz))JDxDaF6xe;K6^}hB9 zUihklVVVc+QZBb8csn^v_TGmr>X)nvNIDeJO&IhM0suC3>@9Gha#!KsWO%p{M@6Ef zCr>j5l#Dbs8w<&pKCI)Uu-oAU1@hf(8)Q=n9EH`-_fR~<+^OrKdGK6$gL$CAoC%;9 zdt6i+>GPmfe{F^;j7gKlcQ7Tk-=M@GQA*%OBT95rta{hZb3-$D(Rm_8zH5!5X-fQb zKsHVis5aEA(gLV5bxRmsb^YZ-Zb5c}3z|k#4gVtLsL^iRGYl!_H*fX->I*&6dE&Po zx3X`Ito54#%ElPa%qL|{y4Py%65&(0goR;RuN;dr>yk)WpQIWE23> z&3mE~gIB6o13aZwVCz4yVjXA?_(Wue{J}9|^L-s6hPdQKNT zdS_CGprv_wz~#N(rov33yTQDsTFNK%eA33R-CMNz^UF6FF(WJBL)lel+rLI_jO4prETTr}7nGLOB!Y~!z z0Y)?a<-2P#JIFI`adM)z0~cAtgX8@4+`Fh8Sz z*E^?Kf6M88>->&|QjNcXAIJR4_xgsI27lpI=;}Irrf^5(^>B?(`Tqbf!~Bfq;r{?W zBl!OSnTvUMq|2W#!4^@R{{RHjfALk<2-I8DZ|?s9BaUvH+M4^{`I+TnnstRdJqm6( z%E=)E{{SAX^-BEz0Fi~0cI01)J?Doap<8B_7=p0m0LP!q)^V=+tl6aS$wuhKVS|hj zj>fwY#Ke=q0wR9{_NV>{bK%`*!9NM~zZvK(HAdBRtr}N`-XFt(?XWdquie^R0{+db_cg0k56Af3*WUpmb38(OZb1M z>pE-OHj}8CV~tK$=0Q9%sw;Y86VGA>akx+f{{S4dUl)J)tM*axC&OK1!nf9os_Hsb zy6Tu+fSp1Eoy6mD=m8y1&`<|o@C(L25PT7&Tj=+n4K*3yO(~-{Hq4Hzx*$p5lYx=W z3BV_lfj}Im?1Q2B*Wt&*+bFcHC~B7XHkTu$?a8Sl1GJq|li2VJRJc=u5K zqC8LW3rK(PY?B%8;EqdKFD>Je9hO$gL053V=aG?&W3x~Ps`!V*9yIZHgRS(d-v~>l zT|$AU`&Habpahhw0*u54ZU#ZgM*4sckv=qOT2x;Ge`qo_ON)^ogf|9@3mb0JNsAcE z0JwF=NI9Sn=jwn80QzJ0Y`r>1!fPEDwI7C0IORz04;)vKjOBGCn(6u- zG?QGdcRlw`_)DgIOt!X@NQO&kWh?f9AI~2n<~=jF-=aN0B#Z(io3>(DLd9{5!t^R$==iz3YnsJxOw?TJqUg}gpOsJ%Q!IL>T_2@_)>!uD) z(cLqiw32P@Yg_X?gW`XP$Aa}sjSXgGmMDK0?Cl-SO5_8c4+p+G8k$t^J0+*}`JF1S zJsxKD{=XyFz7+o6zZdUp^-l-ry4IzlX+9&-Ufvx^?OH~X{@qqqR*^DT5CQG9wn*y7 z&#RJQoRpkXY2SW~=~p`b>Wu zV;Yf5vpkxzb5du`mFyg$Kpm%rbeEgM@M1iyl4bqIfBNRUoJC7lXS0Q*<%e2zEZOJ^ zmyK^4-~;mJqE)XOnnHq%?2d;-@Kw$A!bjx33t*5dj;LsPt>7XoZ*v^ejtAV`!W9j1gY^n-w!+iX>sCFaF&??mxzH(G+DfXxU$I`zrOQh3h@#N(j=>wY=- z{{Vka@&5qqW#ZojcxK?stXxl~HMO>Ovts%eVhP6p0!g3_$M$IW*Wry9PqfiINv*;p z8hb<}lI0He^7tGctU<@V2c-aU{{XTEv95Rr!S>d=?vHwqPvy;T8H}(9VvL6O3`rvx zBRu4d!~?4F4~^SI{ieJ{;!|?Tr{6q60V98^`J`G~0@!9591)N)!RL>Z1JpcQ@kdSZ zXM(L;!jc=?xAK?BfaHe)<*?gN1LXkcfw*qK=72st{iFOXt@uaaXT{g?J>+s;>N*p{ ze_;V6M3Lz?CNR!0H!QZ{i5wlpeF*^k4WI&mKDPasei3-L#DBBxkBRi#R!e4Urdxl8 z1coa+DUCoJF~L5ZSCNd0l}T!}`}Q`cUDK3f%H8(UM0&@D{8@kSkHFfVj}86B#nkrY z46>k)%0^$hxz7Z*B!GDJ>F3qLQmISYC#AX_aK_bD{gaNj>T$L{C)9N>2g|EW1^Zk> zBy8bJ6_Hy2li9X`-=;en>3s2mR?&Z>B&kZP*HrX9pW*hM;?LS&!`gnSVQ~=EbWJ8@ zxUw-kXd#TC$~H&@{JzA3IIbvRrtuXm)nEPq>*Fb5Fx2^#_2qtDnSt@D^H%Wx0K)4_ zEf-Rj${U%)CPOaQ5-Tz4tOBVAJojEbYkV{uqwf<_m)bVAK7G3Io~z@f*)=h@)0%5tO3-ICq2y#2C&;GJGH{h31A__s(g&oY+zM*vqo8!@Zxy`4nj*GIY2 zTLngReWfO(pH;E)X07o0;7Z$ICk=yv(!JVvm1D-98QkamYw-T&*4-G}H_aa-71@Tw zrp_!@8Q9M77lX_faV1&A8(o;-5!arzrZW+A>}7$&+jG$VGJFiwd^6zdZF=g#k_(8- zB!zmP{{U5a*bI89S;qRFrauA6N0|9P;ue;cG5~v&_XKCSY6v+bFTUltr%g;pshSBu)I47yx$2s*rM=X)Z}6pEX-7>{gq#xwr_>YxuZ{fPc4>5t&6 zEjPxxor6yu*OZ3g5HXC8lpOWrAbNwJTmW>sFU4Im!T$iYx5R%BL#f(Z=@Lz2J+x}- zf3fd2<9jb|p+~kz`T%-kFA-^X_UFxwc03q9V7EwQuXPP&(lv<@ z0+tqt;0Waoz`H9mC{%LUIL{6$yfL(;I45ZAwO4%wPY+WAIMS^p%{A+%U+esjp1vXc z0@FNI`%l5)kBBlDtl-zgJ5_v$f9@^U4ljKTvU3iNt+VD3&J;tKVIB+d{B0 zb@MpkYx-%X+w1*&kG?-N7JFrniCb)2 z<;nmDmH{I-pn1M()nIpUi~8A?6h z>c2~$r|^`ofvYFcTkwCW;Wk%~2a8*5%m`z&D}S|KtfHPA@)K(ke|~`f0KqgrY*@c$ zZx==5OUutOZIdQ8e1peI_YH^l;ShczhD0L)TqT5&f8dX6;+!r;nlV zv|3n^uH^_yE=MP=e{|w;N|Y}bsf9W>ljqp_1NOB40D?Do)8K!Cm&aZxvWx7IKma?& z(%8t)wGS1Jz|@Q@!Nto}eyHT4^6bl*(3+Pn=jT?n;j14Fc(2KceCG3+OBKKzo`Sva zX)2WN&Ir?mI+j|WZ+_k05%^oKf5A3>8u+Wj6GAm}6E39)K_56^pmKfjn(;E~wCUp# zi}$YY_vm{0f}L6t=3ecUzU@!Pe~Pv!BbHW770wQQ#eS!kPu@uUvowO`Z1c+Z51x~u z0wI47+F$r3I`~842f>Xu!k#D6WbGe*SvS3$EZ#A z8Ej12ea@{UkWQa!jkdOP^JkFb=2CJ9IiL=g;5UJO68QH{u-5JLO-9D%TQs=_Eqd(= zKGHw{OM)_aA9aR0=72E&0A<_n2K+?PjkdF-Byw2l_gZ{y7Q_o27Y`CHHi5#Z9S?s1 z)Z!5vtN`f=(#ximN@n`KhV?T}j3Gv6qej(Imx6(v6 zGU<^+I7hpYblFlFSYw!(C1z3lV{3nKHkJVV6rcitKJEVif^PhKi{Q7zD8Jz$uxpJj z@*Bi-O~~Igj+s|gVyrhY2LyE;&3xW#g`O(2_Is;!^10uJs|qmp_ImB|K8*N77woIz zUkYmeFSYO_x|EYmB1s0Zs(`lk>ZRrovj9YjuB-tEb_p2yvE*ho^BgB4PgQ^9c3?2r zOjPB~x2?WsrCfYO(!65h;cvpoF0Ep<5!h(ZTSMlx)Icky)kC^)xE5JEbHO$*l%YC%A;l8{dDhh*nemL022Px{{XOOh@kkDfAE7xgGKR0 z;&^^dAH|m6CE83Kt{-G9O6`9@PVeFj%5#xks>ZrW(}Gg6ZcaDpqWQDLsfEJhW$h(7 zMc&a;w^w$(7ejmY%J`Y#501Vw(=|&Eff{7j{vXp?*HzZy)MtlJS(!sduoXMn6%B_D z56zTTDghVud|c=!1mvBsYgIX>nk8FAvbBOWa#ka^1OP&VoZw(rp_gIdiNYs{k1s26QCnX6 zyX$-P>A99Vv~c*TeOdE!B`Hc;w5;rs(%t**W57If`$7C|_<`Y{_*p(Ui%z?-zqwd7 zEA(L`(@zSJrO--zys3XZ0;}xKGm?E88Fdu>)ykJ+IpZC@o%x-*t9{4KpS0hLJXxrG zAJw#IZm0gpmh#?vh@+2W4&<^uR!OORIvwr;eQ`o*jfFSD~3?S7QwG3wiQZOJ&G8o7})PT zBk?lyN{|LGyp9Pq<=4T-bJd}ZlXgDh{{Vu0{?wM=0z6%1<9`xfM!#lY$!>}_H@PRE zub0MApS4n?wN8Kk0CDsbYEzvlMz+mZ`fK*`{{Vu#cysoU_#rohG?_)Du{kGW44w!F zitWYXGaS~vH;GEn+Q*ZDz-8G)Dm*)U((l;(gYkci?=JjFCDfXOu=B|TzD0cuC`D7X zk2l-T+Fi4<@dwB4Ys7yF+u`=7skD}m#6HT5-*JE+{eLgcyx3qBJW{I_sp-_l%BC5? zv*YiH^M|y#-N`v0t$p@iAAKL5=2E>m9&KLv^I?;bejtAV`z`+f1jzV%rTDwxwvDfN z566+|I;9xlV2^#XuBv&J3*x$&Rv9jj@+A^3@9W#W4X z$~DY-e9X5nfe2PmCL43*E>|o;ILXMs1+Ur%!HK1KkKy0^E?*y;yL&Mz=$G1bGC=Xo zEQ=8*GBAG_NhBG`2j#$BppXvt;s?Y16Ttrfv-Y{FT=>fR`$UrWPEAe;CBuk~p5o3SF=I4@%O}hv0a$;$gq$y7&~ZQ-ny14kd|CTXc;41; z9YLmQ(ZOJsb0?oKpAy>zjFPVyAH?0r$>e|y0D51F{1bEGzlZkLpAvjeZ>wo`msaz| z9A0V*g6||=RKcCI7TF0Z4j3J+g$Hm4$X~P;qvJ0bd>;6(<4+P>O>dyzcuwl)Oq_*Q zzqo&gO$i&Q3`mSV;JgsVA~FUE0Q@wd0)Re{_!r_#{3X$J4XBC!l9DkWe>W00KHS%p zT0YMaIrq2aW2H;lLNV?BXVHJNC7yw-c$U-Q{{V5@G;2-S!igR+J0*LiCH0Le3Y&lML^uiCO#?6lV3iSrl6 zZ`vF7%khlbFNXdo{8-j6wcj?^Rq*7~>f+(;VUY=0BUt|Ig?>^W1b-5PgI=9jWz>Ht zPAZa7dOa=jW;i-{inZZ5)NQYy`~%wm0BJvqej@M}!M}&zIQW<0-BRaOzQ4DJTk#d3 z#h;ZFO_h;U;pcO-63foQbI&|^HX>8^V^MOn?62>9yDvj*+Xqe7l$08jT6ePLe!btW zrw#jDc*o&4?IG|MAB`RZS+4FhU0Q!T0d;vYTTLWPb{PDT_m_Jo&6POkX#*p-1%t%l zDSIl@Pg|>W`T6#-&085pwlehK(rVAoduY2px4H6PiS-n>)2$+FZ9LgqY(pihuz1Ut z*^t@lK^e~*fUi>v3JOi7t0xmW?OF8lJon?4u{-|Ey55+|e6-ZyNV41@^U;5Z1MA=G zS}G~#5U9Fe@+O^Ts7jmbW94e~%tC-Ve*)@v7M~;%5tD;neliMLv(v!TlypMhc(cp# z8_da-2WUIHQidA%dlfugu`RQy(ELUv!4Hp{A9}p%v@Cj*F&y1a)5HEYk4aGAsgw9l zdRLiO3hH_utt?Weyv~{*jhcUzoskK4%_EMR`U>S)Y+Uv_WtmAwa-4q|HD;PmKI!&K zg;;Llw|E$G*)5J$kC!#s&B@~VrPUo8VngyWYoX!NrePdI_Kgph#aC%><$31-9;TsC zi+dY9M3i?t!{Sb+mojWga!VYH``5pKrsJved6iWy6FCa?4;&}}paPS%0v&%pX20N< z{{RSnA?bezG;bRGIq~L)I%-;Omo@E!+sY(@RMYJ-8y=gsnBO3Dah&u}4`tUr8GJ_Z zf9)Nr_~%UVPK#};+PwC6noYr!0s(=NKp2AG#JM9G1gR?A09yU3{uTUX@h5>i7CcX@ zXcqHYYxcI9UHsFqNp6~NIYWOg4hGl=Cva@P$`2R-)bYQB{{U#qU)k?i@NdK`uM0_~ z>X$Yu+MSN4C=f~Zm62J4A^BJ;jP@tfJ3usk3Vb*Hto$LQL;Z`WcsEzD8gndAuA<<` zh9QorgVcI;9kD_<#J&rj)_a(yi6+!1-k`*oR~vs$N#~~A3=DP1 z1?%4fe$hTR{il3q;y(*&{t(mkSmCm_)hsSG2^o;ACut3{<^;3t`EkKH=L!Mp`nQF? zE8ciA!%O(~+B#{LcXsV}HjAmV3(($TELda(L3dI|q1F1755>M<-Se|<+H(&VI?{~+P0eesyijB zTJ_QT9l70D(Zu^aI=Z*M-tT7Yx@>%r;UD-;H62d!%fo+ql&Nac9q^^WL@pP;20$QV zI2}N*e!GHt?s=3Go7S*tN_|Be_!|oTCqwv5-y)`@^vn*@dqP zmHAVKO$9YxqiSmu{PYA~IJ#xUO7OZxgQw?J;H0{OOumX3kG) zO1CPqLv%T%cFw!Ne-1CT&-8sR?l)#^g=zNJos7oDma<=g>fo>vtE6Azde?-1V}FjG zDu_RZ{vPTYml*=Xe5C$auLiDrfs3=1y;1ZO@*IC`qjekn$$VS;AbfW4Eug&dU&F0y zOpp85R>Tj~3MuDUIOep|zIv1+wEelFy5zQs_n=*U=Bf`4v+Sm{jGi!{9*l=d^c&~PagPnwS5!f7M*uKpC^gz zH-9v7B+Tu&OhSMOImkSWazG##^>5oZ;V;Awff}!ZA@Nq77N;f6vszlNyJsmONpeD@ z%ufLH&+zrZY5-5!xAyAre}T09GsE60(sc`Tv$jYindi5V6M>R8Oil-<0BztN;2ht; z&)aXoUkJ79y*pY~sCG4N@ zk=)+HYp3YXa0KR3lQ3}cmKaisOALj|_bZSO!*3gS)5O0KJXL$+KNo6md8ld=w12k~ zIqrJ_{3<#CH~;}a8B_pJ2kI~E5Bp(!CjFT|;F!;d17~c?BM4=T7UKV6kFwvo`)S*DMdEj(e%&k=iq;aehaYFd_}B$ zQ1IL^_>VxI3u}A5ZrnY+++?(2^4tQ!SzFq?+-jWR?!mU2=xc|o`^2Q|wLK5UKeNZc z&)SDc)3uE!A5NpbF{5eP&c?MWe&zQ){{a39 zSNl$QAL8%qIjeYjFBs2;dV_bivK`q_Q+TYujj@@Eo<)}dNJAV+MjjEvh+kEV| z3sRPDs$w&!Im zbYSnX>c0#>Zf}g=34i2Q@E^pBy+3Kl@~#<3{OiiEkx;De wYL}2*%eoc%u^nsDrwK)Bc~xf_JqnenkduLa$&;{tnv<}8nv<}8cmo0d*-;_b?EnA( literal 51438 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 diff --git a/examples/webgl_loader_texture_ktx.html b/examples/webgl_loader_texture_ktx.html index 62ccc2ec5b5e53..ffe75b0b588a00 100644 --- a/examples/webgl_loader_texture_ktx.html +++ b/examples/webgl_loader_texture_ktx.html @@ -72,7 +72,7 @@ scene.add( ambientLight ); const pointLight = new THREE.PointLight( 0xffffff, 2, 0, 0 ); - pointLight.position.z = - 300; + pointLight.position.z = 300; scene.add( pointLight ); const geometry = new THREE.BoxGeometry( 200, 200, 200 ); diff --git a/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js b/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js index 0a743db303583f..18ae7ee7d47f52 100644 --- a/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +++ b/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js @@ -21,6 +21,13 @@ export default /* glsl */` #elif defined( USE_NORMALMAP_TANGENTSPACE ) vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + + #if defined( USE_PACKED_NORMALMAP ) + + mapN = vec3( mapN.xy, sqrt( saturate( 1.0 - dot( mapN.xy, mapN.xy ) ) ) ); + + #endif + mapN.xy *= normalScale; normal = normalize( tbn * mapN ); diff --git a/src/renderers/webgl/WebGLProgram.js b/src/renderers/webgl/WebGLProgram.js index 87c8b1e22cc8bf..c5676eebf58a15 100644 --- a/src/renderers/webgl/WebGLProgram.js +++ b/src/renderers/webgl/WebGLProgram.js @@ -696,6 +696,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) { parameters.normalMap ? '#define USE_NORMALMAP' : '', parameters.normalMapObjectSpace ? '#define USE_NORMALMAP_OBJECTSPACE' : '', parameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '', + parameters.packedNormalMap ? '#define USE_PACKED_NORMALMAP' : '', parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '', parameters.anisotropy ? '#define USE_ANISOTROPY' : '', diff --git a/src/renderers/webgl/WebGLPrograms.js b/src/renderers/webgl/WebGLPrograms.js index a534e0c8818d91..31aae9c3498fd6 100644 --- a/src/renderers/webgl/WebGLPrograms.js +++ b/src/renderers/webgl/WebGLPrograms.js @@ -1,4 +1,4 @@ -import { BackSide, DoubleSide, CubeUVReflectionMapping, ObjectSpaceNormalMap, TangentSpaceNormalMap, NoToneMapping, NormalBlending, SRGBTransfer } from '../../constants.js'; +import { BackSide, DoubleSide, CubeUVReflectionMapping, ObjectSpaceNormalMap, TangentSpaceNormalMap, NoToneMapping, NormalBlending, SRGBTransfer, RGFormat, RG11_EAC_Format, RED_GREEN_RGTC2_Format } from '../../constants.js'; import { Layers } from '../../core/Layers.js'; import { WebGLProgram } from './WebGLProgram.js'; import { WebGLShaderCache } from './WebGLShaderCache.js'; @@ -7,6 +7,12 @@ import { UniformsUtils } from '../shaders/UniformsUtils.js'; import { ColorManagement } from '../../math/ColorManagement.js'; import { warn } from '../../utils.js'; +function isPackedRGFormat( format ) { + + return format === RGFormat || format === RG11_EAC_Format || format === RED_GREEN_RGTC2_Format; + +} + function WebGLPrograms( renderer, environments, extensions, capabilities, bindingStates, clipping ) { const _programLayers = new Layers(); @@ -217,6 +223,7 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin normalMapObjectSpace: HAS_NORMALMAP && material.normalMapType === ObjectSpaceNormalMap, normalMapTangentSpace: HAS_NORMALMAP && material.normalMapType === TangentSpaceNormalMap, + packedNormalMap: HAS_NORMALMAP && material.normalMapType === TangentSpaceNormalMap && isPackedRGFormat( material.normalMap.format ), metalnessMap: HAS_METALNESSMAP, roughnessMap: HAS_ROUGHNESSMAP, @@ -521,6 +528,8 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin _programLayers.enable( 20 ); if ( parameters.gradientMap ) _programLayers.enable( 21 ); + if ( parameters.packedNormalMap ) + _programLayers.enable( 22 ); array.push( _programLayers.mask ); _programLayers.disableAll(); From 3ca54b0a022614b5b363bfa670ceb2ecef7a4574 Mon Sep 17 00:00:00 2001 From: Michael Herzog Date: Wed, 25 Feb 2026 10:04:22 +0100 Subject: [PATCH 2/2] WebGLRenderer: Fix feedback loop regression. (#33063) --- src/renderers/WebGLRenderer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index 0290a58642c0d2..797950ed9a7a75 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -1953,7 +1953,7 @@ class WebGLRenderer { generateMipmaps: true, type: hasHalfFloatSupport ? HalfFloatType : UnsignedByteType, minFilter: LinearMipmapLinearFilter, - samples: capabilities.samples, + samples: Math.max( 4, capabilities.samples ), // to avoid feedback loops, the transmission render target requires a resolve, see #26177 stencilBuffer: stencil, resolveDepthBuffer: false, resolveStencilBuffer: false,