From 34979855261e0f58264a03ff0972728f988f9490 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Mon, 16 Oct 2023 16:33:00 +0200 Subject: [PATCH] Shaders: update DistanceFieldVector test files with fixed SDFs. The output is now *much* closer to the Vector shader output (mean difference went from ~6 to 1.79), and in the multi-draw case it's clearly visible that it's no longer slightly weirdly uneven. The test files are now also much smaller as the originals were created before RLE was implemented in TgaImageConverter. --- .../Test/DistanceFieldVectorGLTest.cpp | 14 ++++++-------- .../Test/TestFiles/vector-distancefield.tga | Bin 4114 -> 2654 bytes .../defaults-distancefield.tga | Bin 19218 -> 2534 bytes .../multidraw2D-distancefield.tga | Bin 3404 -> 3014 bytes .../multidraw3D-distancefield.tga | Bin 3030 -> 2602 bytes .../Test/VectorTestFiles/outline2D.tga | Bin 19218 -> 5690 bytes .../Test/VectorTestFiles/outline3D.tga | Bin 19218 -> 5267 bytes .../Test/VectorTestFiles/smooth0.1-2D.tga | Bin 19218 -> 4901 bytes .../Test/VectorTestFiles/smooth0.1-3D.tga | Bin 19218 -> 4503 bytes .../Test/VectorTestFiles/smooth0.2-2D.tga | Bin 19218 -> 7780 bytes .../Test/VectorTestFiles/smooth0.2-3D.tga | Bin 19218 -> 7030 bytes 11 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp b/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp index 483b6d8da..028559697 100644 --- a/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp +++ b/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp @@ -869,14 +869,13 @@ template void DistanceFieldVectorGLTest::ren MAGNUM_VERIFY_NO_GL_ERROR(); - /* Should be almost the same as Shaders::Vector output, but due to various - differences in the SDF output and too sharp default shininess it can't - be exact */ + /* Should be almost the same as Shaders::Vector output, but due to too + sharp default shininess it can't be exact */ CORRADE_COMPARE_WITH( /* Dropping the alpha channel, as it's always 1.0 */ Containers::arrayCast(_framebuffer.read(_framebuffer.viewport(), {PixelFormat::RGBA8Unorm}).pixels()), Utility::Path::join(_testDir, "VectorTestFiles/defaults.tga"), - (DebugTools::CompareImageToFile{_manager, 201.0f, 6.1f})); + (DebugTools::CompareImageToFile{_manager, 131.0f, 1.83f})); #if !(defined(MAGNUM_TARGET_GLES2) && defined(MAGNUM_TARGET_WEBGL)) /* SwiftShader has off-by-one differences on edges, ARM Mali off-by-one in @@ -980,14 +979,13 @@ template void DistanceFieldVectorGLTest::ren MAGNUM_VERIFY_NO_GL_ERROR(); - /* Should be almost the same as Shaders::Vector output, but due to various - differences in the SDF output and too sharp default shininess it can't - be exact */ + /* Should be almost the same as Shaders::Vector output, but due to too + sharp default shininess it can't be exact */ CORRADE_COMPARE_WITH( /* Dropping the alpha channel, as it's always 1.0 */ Containers::arrayCast(_framebuffer.read(_framebuffer.viewport(), {PixelFormat::RGBA8Unorm}).pixels()), Utility::Path::join(_testDir, "VectorTestFiles/defaults.tga"), - (DebugTools::CompareImageToFile{_manager, 201.0f, 6.1f})); + (DebugTools::CompareImageToFile{_manager, 131.0f, 1.83f})); #if !(defined(MAGNUM_TARGET_GLES2) && defined(MAGNUM_TARGET_WEBGL)) /* SwiftShader has off-by-one differences on edges, ARM Mali off-by-one in diff --git a/src/Magnum/Shaders/Test/TestFiles/vector-distancefield.tga b/src/Magnum/Shaders/Test/TestFiles/vector-distancefield.tga index adb78d3c1989088e49e98edfeedeada04180acfb..a1a92b7a4a7bbf4de63ecd1ee95e0e58cd0f4b12 100644 GIT binary patch literal 2654 zcmaKu-)kaQ6vwaDs2h{oW=pzhOae<5(i8$=p$#k%NjE}5TnG|y5q*$(5eDYrzR5gz zjd7t|=)l0d3_gs^W>^s+BL+-X#O*>zw=4wOr@r)0>A92W&W}WWyEC6T_n!0po_i3A zpwTaZ5-5xYcmFrY?+eeoi~486zBj0b0>S9~;A`w)Q-pJTOwBgJk^qS}f{2X6xbk)y?=` zI&0)Y+4Np~b9Fv!tumZ|U`#>euwv@8+Y14Lwr!+)H&>QWgC#VQx#1uRloRfvofqM|x!%o@$sB)Z?$6pD+5?D0`Jn=2HB zQdy!ztWYEonW&Mv?%el+J#^PlX-O!gQ^`FjN0mpIlzmvJU?QS2p%FNVBU=s_c2&mQ z>r{f35?91v3G=wb7YK)ngs>TDn7ivROWeW9wwVQ;65)mV1*?Dd^jk(PJi`^p*!;5Ea$b+Rg zYoQ`ft4`Rya~2wNN4qcfGaRO>LAtYy=8lqEjHW7SOdC%8C)dsy&IDbeYV+bYjpOe% ziCdz-c<9W&Wd~Vn_bqAU4|nXJv-`jeL(*RDFfTFKssSW1FE?DXnW{kM^~U=h1Z8HX-d6erR=T(RM9&V;a*DvsR>*@QxHm20)N;m z(CoQkyQ#_WYf!mFnYIcX*b8*MAcE#!j#K8w?bROs*=H?*X;a|2B2O?W`9XLj@pzOp zH}2>RH&^e?7KoEjpI8EzXWob~?Tyk#Jgp^aOZ$-Vq!}C|Cy{n0M4|)@!L8;#Aw3`NL#K4n|{PVm&I<%D2|%aPnLH;zLvHo1{_#Zr#zr%_F`?e69qxicCHJJj!OZ}{&B5n?J-EX! zpmzOM>i#k_3=%5*6F3N@QiI@s|2G-G8uUP?w@R`DOGt2N@ujsYaVynCJSn!Hr(-gwc*#B?cdyudpx&zrjzj#&qNb?UG65fQK`$-$ypLGZZ2A(($#G zg`nT%PtGlT-Popb1w!QacehqQym~U?1bFm(DYBKxu>v7@CYxISJRfiqmZS9KdoW>6F}?G)Ds;U`A$+Bz+ zGJOB@hNVjao2Rjs=o|wPWLXs9Ze&%}QIMhecPb@WZInXAfi;DBpz_A6*ZRop;tfKXuiIy8%+)6$zh1&abx5y4bt}-Jp7M z?ZwCXN7geB>#e)yg>G>6yB8n(53DaKhFP{j%iN%OyMK}J3;PTY!&uQkh`rv0%?I7! z;)a9|%FRRThM6G>EO~|MujAdqBC4_&IbA7(6`8KpnRK;~!7{#c3Oq+Y>)F5FUJzqFYDD zmp3<_{BE~<)@k*`uc^If1au+OK01c40K@x7vyVm%4AgtZKo_j{*N5^g65Kz(R3d;T zfA0TyUcn221Xz;;?>~QV@mnmt4-W(~AWcR;zL^eS;Ly@5|xf)WC0`$-s++51&^^@o{NB yIPGSSlbCoKd^H~?#hcLV)E&CdH|Bp5ct(nu>4|~EJ5?MRBgUv(d58KR{`eObP6mYl diff --git a/src/Magnum/Shaders/Test/VectorTestFiles/defaults-distancefield.tga b/src/Magnum/Shaders/Test/VectorTestFiles/defaults-distancefield.tga index f6b0079699b1576066a8bfe06f8ec6c395f68d8e..fba89076c5ad42282cdee676ce040921c68fcdae 100644 GIT binary patch literal 2534 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 MI1e}v{Ocb01rmL782|tP diff --git a/src/Magnum/Shaders/Test/VectorTestFiles/multidraw2D-distancefield.tga b/src/Magnum/Shaders/Test/VectorTestFiles/multidraw2D-distancefield.tga index d255dcae9fc25c6abd695077d8ad09fffd3c766f..0c3582b26508a792731ea98b479cf95b9d93e4d6 100644 GIT binary patch literal 3014 zcma);&udjj6vw~sMY|{>1eJ>7uP&r1T?9%&k@_DfB1+s8r5kbS)`e&^F=-S{#6^O} zh{j(eLTigqyAoXJ#)2&fuB3$)nnyI@3d}rpqcl(^Y=Y`9hd*;mdd(N3NXRh?V zif4PW*GVcGAZ>oPbU4 za6QhCZU!%}OTS95QP1M$Q|UtoRFx(J*9hsDiz-6DkRhvD8SFm|`RLA&0_ogHe*-x? zPkJbAmDUH{OY4AnVRHOH{xieu{F8$e)V#oa2xCm)HNaHR6@k_`ZzcQ=TN3{BKyg7D z4MLaI73mINh>Zc4X&tO|0h(D>?DI!tp2jQ5)nOCB9Bl&o7nc#OWnT*IGwDInZmw&I zqE;zy6VIgB_q1XK_@4y6tPXxRigv_1jzOzfE7~c&O7+<+#-9>2*(L2naW2%?OX*4S z1KsaU7@bk+GpPJbra+rfj>A(gnAc#thQE|{SY&3d;7k=avXj~|?eb8!j>&%F58rasXqk+X9yc64Qv+*1-2`7hBdNU;VtTbMC>aDV=hv~)=LvBs@ zSo*_+6`CJ>4#>P{er9YHT*29z=Qluc-aLShI*w`(nP_(Sy7V-vfa6 zNlfq)fuTYm-adGzLn5!EaP54LS5xNQW?cFVXIdz#)8N+$y(-bYB`v6M)nzvVd-KY5JPOsS#hEz?N6nujv6Cnj#c; zg(;lu3a!6%U3Z)eOV#Baar?~t26XTnKuM_64cj)k--q09M(%gy1nb?gh8WKzyxi|i zPIs0ygse$M%cM~gNw#lSliW+Jmy_%tg-c0x4RnW4u7x%>p7gFl?iniPM##n$oli3^ zU?aErx?Y4(biQ*XgILVp)>?+NLSqf{wm|PQ1m|#k?*IPIXIy8i(EzH9#g literal 3404 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 I*Z)5JFX$<5<^TWy literal 19218 zcmeI22~ZVB8pja?1d>HqF$f~XAp)Wp4|G=rZ%TGmlrpHRiCUH*8riLwRil+`Jc7H1 z0ueRdqOP}i-^6&|_kG_d-imnR{-BG_)XW=#snU7%_Py$Q@0)(zGvB|z{>~m78(W*= zPpnO>ji-&9_49wQ0>v`7-`^)+CwqH$7Z)>W<(-`!%9bsqczy@o+EuDd`TXXqIdezTuPth;#e;k81ILMKcGy^Bz9jcI+6N?bXz&dYXP`@nQyS zIdNikUS4USnH*ydcoE#?HEUi@nNk@o-(IqW#&jMvOrX@w~KiIXSQ`I{EI|u%T*-y!_P1N62?^V&aa00~vg2?b=<34jCd} z%qFH49<~e^P~OQ&GN~kd+}vh#@6H%(+RAI!gn?zDuyPn-`tPKscC1rJIYrVAc6R@a zj((Pz$uQAy+yrUNH3TnSQt&*gLkFpSl3PJE@b|x4=kf$pHn59PH_- znk6nhU0rt%9?TffVV`M8mMD(c##p=?@m{I;$%2y9>IeYtz_;^4)%gS1P<%$w7mpE4bBC~eXsZ><+ z^n6+rf)aWu=NgU|k7?5HA~?hcD10=^uHdY5TEl+h8d_GqZsye4vlC=Vi75O0j=SGb1(up)MR#!)jV$98D%NTDaco*EiFU%~4v~QCp z+8Sx2z`!RN8L*w3osH{6QtXOlH*a!D=a~5TvUYZ=RT7s3lMJ9?oaI6Z)CS5I2GB&2 zADtdHY)DLuO3GfYu0O=a78G%gSGvDo0sJ4`zFin+40{=!6eGHNb-*%(kX0#MXk+nW zhz{-AC5-LE^z`vvx-NdAVkN$Uu z4tgmSz{!XikFnZ*^r-Uwf;JW}{sj{)s_Rr*$X_NE6u=nY)ELR#@VtnLumLkJ(_Wm^ zUu)J>%2Y|?+Q7?TJeRrQ1y0`V*+P7X5@^~J1l9zhFS&giV|(`JpBelpJzXzy{-cY_ zoFZdIB$=I?YgTxv6{D^2FRJShU?)G-GAVj6Ym^xohC1t|fs_b#4I0E4mQHJ|xQ~JR znR=Z#s-uX}zgaVwB=ysJObH)(iB$d6_uo^PRqkO)=3FUrwhVBys}=0 z#fUPLj)oLs)!aLAp$R@S2JhxGGTrJTeV`vWl2fk#S62~ zl^jZ%%)M|AWM;O}H&z2$wPFmnRh2~KO^m{e6(Sghx4euDj1T^FYSC)|s4&h5t|W(o zz&mrMR=6N3DdCkXtHdfUi9oV?^kB@rg$uE7sym2Fqwval&a^MSsOjxZ_SYvWN~8t^ z8)ST&Po5<06`4MZL-Hsx3&v|RDSHVu?}+bF!~qe%9Nb%BhO>r|=2hV-vcfxG}SOSODm zax$n9H(}(FZ@(o+&;u)kOGe51pbM&+h6D>?6kePoB@3aFFiFGkapx+nBaUNAu@8`H{URkZGU0?`Vxd|pnT=BV}V(7WKE=j zA5j8ls}m}7)I}nk+OZ>Npr8})IZ#e-9TqmTM-L40gS0dOmV|fF-MjM6CJ6)OtKvrh zCr%(p#?_JxDzSq|^%4su4mw3+p{NV}CRm8jGmm;=4~%P(7nhHBAid)^faoh#lBB7{VwJCUO)RO$Dql;IrWT7;zS=dhq#mVwt+b`C G!2bXMGX>cI diff --git a/src/Magnum/Shaders/Test/VectorTestFiles/outline3D.tga b/src/Magnum/Shaders/Test/VectorTestFiles/outline3D.tga index 0570265287f313b3dbfcdb12d3abd2212c0cc702..326606b09d5d7853cb24a5912ef62ce6a8bfc328 100644 GIT binary patch literal 5267 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 y7xTkX{M2KiNHBags{tp5)oCC*_0 literal 19218 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 TuAUR%&U^c_a9X4ODinVJK?2o1 diff --git a/src/Magnum/Shaders/Test/VectorTestFiles/smooth0.1-2D.tga b/src/Magnum/Shaders/Test/VectorTestFiles/smooth0.1-2D.tga index ffea067545a617a2742179e388870c0c0952d82b..8ce76b60e6409d2b701eed76c64df47677c7c501 100644 GIT binary patch literal 4901 zcmd6rcT7}S6vk)XV+IEhK?D&+EU1Wr1sg_PP(j620V^t?t}SaX*ihF8LlFeApcq?h zQ9>}W#E#vlv8)?_KwIFHT}MyYbELAG;>zG4t-6@09O+=e%byI2mmJq7Bgo zZ^Q5I?(X8h#{U!C64(FB-*fQCXjBwOXXoNFuC7L|d=lTP6%fViH!Iv)u!mf_oK{PoL)8zdz&b*|elXhtx?&j?6rFF89%+MepC|>ohZ) zb1FZvUc1(N-n^iwsI)2#8klN_g@q0n5Sf&O>Fj&=^54B%pwnI^=S=t%zjSFx&z_Zo zf}G2jR~#IyWZkTqOs*9xdinbYMnqtH!v6hv&z_|S!v&u|6Uve=U*_n9$>5yBq7NUY z9zPz~p#vCHb~YGJW+x|4fB%*P2gWa3mVD~e!nbd6X2g~)gVwB>a_m^n!-pD}#{Bp1 zNwqMdC)MJdntJ6*OnSP9pC8=I0?9%&jxH|ct5)@I)hc4bgz+UMzi!&pykEasZQ2Ni zbW2TDhZYr$*}0R_P*05{8i-TItE0Z@0yOvWKzyvX>oNG^;Q&B zB}sUqdDg7y=vAv0c^OwyLfJ5@GX)AiAOt8R(cOG}n#RSA*u0s{XbWDyHl^RVF?jv@ zc4NlW@6-tdv$L}}hm%GPDmYT1CcS%4J9!dr=>tvUm^%OEOL9f_z)crXbEU3B3Jd4G zc#+BphlOw6q+Y!`WW$CAUAqDzKur~@R}bpknQX)SPE)7SQhM_&KoyADBRiYq%1Fz4 zdbWsWI_|aZKSPEGLpaQ32XV0cv zq%(8~!4Z+X$C>a^qqIwxC{$dcjD8^@s92h)#Sc*GgoU9iD41O+h|kEaTLap)gE#_31qJpZ!`zV+L!yQi z71jRfr|&5i8A%JuXm!+GsuslWnvzl}FpzMB5U6ycZ=*)A7Y+*`g)WNA&qt_bU7&ht zyV!#w)E_Zx+NY08g$gzxDlBB_;zc+n+EkhQ^lA63EKW!udJ7e#x%C3cF_V4wZl47U z8b(KZ2Lw2n&8bA>9wz+v8zAL)0cx^?Lv3ZmDr;D833#MR7|<^(45)~&va76r6zOJZcLp?tNbO(*Qz z$9=t~1t*N0r;#;!$AD3>Myh0~XKt=2s-j5aB%3kIas|F!#!<3CYu9SR)OhKdpqEl= zzhdp$rIqyXXgy>IEh8e-vwsPGEUfoB$lAkok3`x3k}Mn zNK8fsrV%K{25@AKkoich#KVfMA&f>w4jU;$#vVwAQb_g?O3et@0CqzA;932sDApb( z3gjbI_}L)jC3;0SR}zAWWX(MZU`^Y01kwR z%|SJr0d6yFSkmFcBwa6>V6F?QK~m`zG8VURAq^Uum{>O=0tMh9T%=i5!I2Mz%oh=| zuP<{4zKq?yoBD|vp+_0SIcLxq=~=gLGc^-etmvMd%?NJRw=YiwtTF^agc^@ZX2ip% zUOhI%c4NmPrVJp2Rqqq$T%a`SCPY(X|1(THaKIWqa-`ZLCnx37CBA{3xjOw8Pt!&g zd+b>m_eQcsj>SmP6Sdw~3cAkWxID-8uU}Ev`GSPH{^+&Kk6+-NfPuD`H2?MAwpU?) E0GY#$4FCWD literal 19218 zcmeI22TT-c7={56DGCUv2nrS~D58iBL6qEisMx#Si3PD>SG@D!^i=E>MG%c8mc){1 zRATQ+)F{?y)YyCPz2QALx0A{23}G>523+!o{b!k3zV~~-{;!3Fm4)G_wMAv&lsd&*OU^~s3Gi3Yr z*!}zUum*42)^7TAXAh4bffqGGD`1mezfR4})O^kV^l8S!htX@+6f0l;$Ki!mkS_T8 zRS#?Kt5;^cYFwM@zk)sIkY9{#+TFWj&YUq`6RupD_wF4xe7}Y0fnR`3zkh$!ks~b= z5~{aqWxPWB^&7f#XIw@G3Q76+@q18fju)`w&Yy1Byt(Wg$$e)cTakTu6U>Dsj>qehjkQNzL2)v7=NHCH0FaRb@2L3DJ~ z%9WFE-b{Y~o;B(E_3;-jOuTw^=A%dR-o9mJZvfijo%8Y~*{Wj0hIWpQYDmTR(T0tk zor{-OwdTz`Cnb$NcW%Pv%UzR`e;G0ajdh+oH*)b}7G{qQr{2Cj`{`4#&;R^cnjJL6 zizUY$JJw?CShuoeEi5fXT(S*850e&GVK+BtPtWqf!CmIfi#>24plw^n5+ztvO&(RN zdiweOI(#^v*=F+OZi^NT+OlQv)~(|%To7GAL%g#dKZXu`HXAc8XlLgY7>MTv_v*!B zgE4?tuQUFR|WI)vHI09!-pzeB%a-&G0>YT2Go(zJ7ft4-b}gp+e&QvJEbeCJWfu06BW~ zYHjhNYQi#j?VO!ua*CHFDphJZems7fV#vHag=LbU`)}Al8SGNJw0N^@L!Tn>i{)1h z4<}0C$V7Fm_$9O=vv1?ZR@T-sQH9Hbwzg$z*Y3V#2@=Y(548s@2X*i6RI;SvvsiU; zAD>182H?NKnttz|@F7~^C2`=qL>NVZd6NJY)T0MQh%~wiGQ;w)UAu7PLJkg!k7MM1 zO`FDS+&K63YiJdi)dSwFXruB&%Z9~LP|3*UGUdaEftxq`G-#k^8{j2P<1Y)0`V?*X zRl`fDAyRc)xR4lbjF-gPbJ;RFYi?82mW_i$!~XrLLyVu*7O$E;Lmc#Bw2D0f&PaMC zB`JdCO==PJ6`Vty+}I#$tq;)U`|*W$Q^6ZQU z4@Mn6+;jPI8Y0>s+Q1^ki{r(N0w9`RiRzJt$kX57#oJrWc?s-1OU*2;Aq8fI-#Wo7 z2tyx)drrJ^g%L5uRm7MvFphT@uTX(-O-t+K?hf@*o0nNN!K!g=>^~~mB zL{K3!k77uL!*T+G4R@G1leta3Zrv!!AW;TWyu<(^7cC;bi614~=o7CfBs9@UQ7O^( z60gXrp?&*e=ORGahS3l$q&U41KS$hXi{coXik|aXLmg>&X*EnBtp=`q!aD0d3l-&G*1dn~zS!M~pWb;-v&?J#iu)$267U z3@O-HJn1_mtd6s1Q-R2QR=h0i>Z)hFQ*Pa&&;=~T0|y6LNz*Wwlfo4DOxGDnWfQE5 z`S_5#`B?E0i!7E(Awrhazy_Lg!g-D4*lKroZf1}uNl1-}N!l*;rA9GcMi4&AYX z)C_RS%YN(E*Xq#XUtbsg`2}dOEN(ydrR6tFkY#gbf@>^5Rbv zA=xKf@sov(-tbDr13U4DX%BUX>`O`<*)#a!PtyByvez@-oXBtLJ!ZVJXfM6Y_4n(t zZv;%`=zH!b3I4$EPjbu`62btARu@Ckd;yk%vr}RsrJ9sSwY{nQQV~%*acqrBb+Q0U zmClG;4WsmZQ}OaFGbJhqrl~qvFq=cL2%ihQQg!9Iy%}$wqs%0M&HS3At~__MncqA| hnMneh`87#hdG2O2zj=-_lLY>m`ITZf@AH!e{sR-cY)SwC diff --git a/src/Magnum/Shaders/Test/VectorTestFiles/smooth0.1-3D.tga b/src/Magnum/Shaders/Test/VectorTestFiles/smooth0.1-3D.tga index 76327db1ea1cbcac7de5022277f499df73375f55..e5c45e1e257d8c00efab3c3f1459ee9510d4d04d 100644 GIT binary patch literal 4503 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 diff --git a/src/Magnum/Shaders/Test/VectorTestFiles/smooth0.2-2D.tga b/src/Magnum/Shaders/Test/VectorTestFiles/smooth0.2-2D.tga index 4605cc55942e1d79b57ea7581ceb32b228ff2e7f..2c26519bf58463b7d85c93d08a3b598da37e623f 100644 GIT binary patch literal 7780 zcmc(k2~<^88-}lN@3~xN5Re!Y5kXXNRumLOQNaOFoF@baL=nZDaX8F_AfiZ?Wj5GA zYUQeBmSr}WX_{GCnQ5BYK%%A=n%1+=@v><3|Nm0XU4O2HcRKs*cYojez2Cd{(dle; z=6?yg1f8eun2U>x_>=iN%unL=|NVZgfYi*&YL}I@wRjbu%{WSVZ>2XH?V2}t^7P!{ zE1&pI{ARwcg!k5b=jiF_+qrWSEsOnTh-Gd&sb1 zeP_xBc9l!9qxUTUS0|=R(+j8OLM;@8IYgf&jmtQvU$|t_#7k=le|2Wdi z3s6kM<*Psaw5H(983V6;;yZp3i~HwDNz7>;$z+VG{Pov@s``3;)$hM=xPHCj^5wFh ze=favv7qGp@AaiW{7_z7yRNRT^4hhHzx}qJ>m+ggnKO*N&v_VIu=&qF^$*>?&8^C6 zYxBSP2EYX?j~_Rz`Rucz^XHju!?kPGfBf;#ojVm=Dv2RYoGPF325wbRSI0crM~}{b z{q>nOHTfw|K50yO>Zw^ZH4FCbTlV3HIbVLMP7ADc8t2RtbNcUPk-s9kwrxj z)2HWm8$H^g_tdEa=Fg8^z8oBxd-pCqbO>bN+j!%~`m0wNwC>U+!cP+9O}B38059UD zB?tnLk^AL+{WZ%UT~-#Ap58SnDX4${mR-B%d3EUE(5id)_AxP?MvMqgNdZ~%wrvad z?Pd>>#bxJP&?mI_91wt6G;l>RxvQ|>XBpMQx%WxaUmt4HK z{P5xF+qZ)xC_37wQ>W&Be)eu|xi$_CjJufinW7!?N2|I|MClw*1+Bzka~;sUb;kt(qDWr zJ~uaH=uoeY9qrxS4K_BEI2EpI){Gi6m`q@A-l~;H+qPgP%mID-a&g$?$+63pC2!q2 zY4hg(85vj_m=QyzU3dQw^P(hokcA^7kE?EK%PY7=;kRCUq0b6NZL zC9PfCYtkhDurOzDZ)-`)1t~BM4({$O07m2}ONosQ9yl;KCI-I7EL;d9x{eyvwr^jQ zh)dc*GA86m+ zw@Vkl9zDP=bDgPEd_1}}b?a8hMi!d{R~CU48g= zpU_YlqMHIDBBJKZf##5zf^0h6>RY!E^hNKyL%zr$^>63u+DwhEGq3^A5}@b!jT;vo zIG|PyBXYm`iV8!>_`ct)S>SQ@@&c^LiWB2NPmDupdNXFgiOBTyq1oA7&JCK%TM=Ff zbwO~b(hj{T zO957IrPre&1QnK04DzfOUa+BvmmfL8L``iof5%E4QzoPji~_3!gFONQsI2(BJX8vB z)T274zMj%vcIXgsC3?h=+$-E6xNw*I3|_og?d>wbG;%eq*rGUneC{UF2oc~Nl>_r%)!-pLvG<(0=e>ItIe5q(ZW@;}beTD!@w4L8-2< z=`KS}rJ1TDa&nLvR7WzI1XRUrDNw0lQb`(V#zK}Q6(_<88C9CHEM<8p9+gRb_MA9z z%(`_CzWsLbg$q=JC7>D`s)_=jK(MByof+l-idIZ(+pJ~%jOjloDQYruo*;1K+FiqRGjjL$Qi~us+ zg~7DZ37a<2WI-%ExQbXp3Gl$G5}@969ag8LMFU(h-jlS_29dwvvfO3lNKA}lix!9h z8U$GKimrDbGX{BD{O-GjXV0#`a)l`=Fmn9hfdivTO6XCZ?b_ja6w(T<^YcUNR8d8Y z%>>el6!NQ%i0SfYZ;GAZ-B`TJ8WG}^SCJJAEG3iTov`KM1WeCsV#nITZU zp}cHu-TnPhYAgX=2G6mnzFuogg*R-$icylx*IpZ0Tuh?7BqsXx>`9Mz@bIAd0HJlS zUc?kTfEuLj*pazs4_gYXJ>nj>Vnt9?6mn`7I>>5rbR@#G-*J_d5CmrkWh{bJB`b8o z4XKkuJwgKe5KR(E7sG(@4IOykf(4KSzejUVEGnY&vJM)QSqGpD+<~MKsi}~k6tFL| z08+6haK{Z$D(Dg2Z}!feNu{L&v$6n-yaz@_`S4ksKKd_`re)J2c5ZGglr08Tf#{&tGoOEc@|GGhwcP)nmwz<|62;3XmQuCqja=JG7gd0?_o#K8?+VUOm`y7 zJ;slxiU3Q$@(ccrW2C@>0p3Pao*|W%iR&*k{&5#E4Ovatc;Bz9;>L!8` z#>yc)=o3PX2;l|eva@MUsE&6?2)zJ_RL~&+4+IAzVdx{&;|3_IR&-*#6|2Nnl2(~2 zbpaDPOWdDCOE(?up|TMd|_wFoRFs@G_5TIUzyCl`H5X>IexE3kxX`apcqBt|ejU z6qkg~vcFw*{5Yvm&I&Y&xHWMTa=d>(QYJI6b>lcFn}2Z9^GTnIt#d*GI}XX#R!Oo7 z49i0C&)c&H3X%d#05hrfCUyIEmdq|l<g85VU* z6$2|KD+}2dt>orS%fM2$m{1xk5f~YX5D#6oD&v(`*r~8`1r`E^jH&x9vDsx00wM&K!0FLoaM_U{y!0wgUwDJY zVWvqd4G*}uf4V7=g^x8;25K zKrwJYfO=q_Xt>PCAqHDi93pLR&hFim)u2U-aAIJje(zSZk$AFQ=L|`7;hGw@YaIPT z5=&q-Hqa6XaE+Q^*Mt#}sUZ(=u(hJdv5atyW2NxaR2uGGe0FwJ4%-OohIrz8F<(>< z7jq{L%v8Ui^$1pE+z)osIk+JzjNDM>SQ!!xDvAk&1Q(K0^>`XW1#J2no)Kbjgn%Hz zMoI|F3n%%NRX|w!(uyNT$`k{u6{qNWuGP11Q^o434{eIZf-@nnSQJ!x00B%%p@pby zV2et)JcENtuS~*CcydkwAPzFIWE>dcC9sqDihSkS2mM?tG$r=jhl-)` z;kQaIT%e_}Ta&3>9X(EF_pf88l}Ewo5()~$XFUau_@O|=oY6%Z160g-lR$x!Ql2Ov z|1^GBCx7w9suL%c9z2-G#zZ2kutpU@j0kGRATd}=c1js9jtRIGwM`&^KrFbwfIzkk z#01IZJDM4naBYc}If+?0(Dk$$7{P5RFtMdU)AhXaScNM9f!!?Sx_f(Sr96={KOIxg i-tO_aTGOB9-S3mb`+GKduTMPx*HhDf<4LahN%CI=&gLQj literal 19218 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 diff --git a/src/Magnum/Shaders/Test/VectorTestFiles/smooth0.2-3D.tga b/src/Magnum/Shaders/Test/VectorTestFiles/smooth0.2-3D.tga index 3ed7debb5397bdef2cbb28620c69e93d814e058a..d509dbc8da52d60d9d642bc5aa2e9ed80d5d209d 100644 GIT binary patch literal 7030 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