From 5e349e237a8a51eb5a6aed162720a23af7ae99dd Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 18 Apr 2022 16:58:50 -0400 Subject: [PATCH] Fast pack --- core/assets-raw/sprites/units/anthicus.png | Bin 2434 -> 2431 bytes tools/build.gradle | 69 +++++++++------------ tools/src/mindustry/tools/Generators.java | 2 +- 3 files changed, 32 insertions(+), 39 deletions(-) diff --git a/core/assets-raw/sprites/units/anthicus.png b/core/assets-raw/sprites/units/anthicus.png index b4ca19858cc1fdad2e9b997eddf4141f08b3432c..a764180aab2f0560ac99569a9202477e42e08cd2 100644 GIT binary patch delta 2350 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 UNSiPM00000NkvXXu0mh|g6!*;o&W#< delta 2353 zcmV-13C{Na5`q(uF@HQsL_t(|ob8=4Xk9lHK(9;3Lg|z(lf4*1XRoEn5JO8zGR1TW z1cM=D&17fl(jf#2q0q%7LrFtOAQ|l9HFGfh#eeElPo>cPcL>+$%lAt6>Pc66@9RJy z_J8l`O6N;Y($kXxI-O3Z)9G|Nold9I>2x}sPN&o9bUK|*r+-tBwb}t#^X%8>3+nf~ z_jgvRELJMBoOEQBLDaxN*hH^_srY3(fnR)Q=V6nNmUNnu_Yz|MK9899jCXtB;4-YPCc`5m` z+5F=FQ;B!jSk0N;PzD)^1a>-9gV+{R)&uRw{Bek;@5?1;er8<~7 zY5JQfDL_un)vev7pTGF`Pf?oxefjOu&wqV*Mjj_=QChC~%?75aHNJdbIueubOGkY9 zn%hXL@|z4QrKv>uoOFbf&q+s6eoEh=MfuGIH01smlYfW!@>9>#(3`ixnA)x@ov_eVRogV+4&`5)|OQ zhf0?mD}R-*iM^J5bMYxPJ@#{o^!1Hvu)c9kbqgfnR=LpE19 zCqD$Hi7~`#c#HDQ#OKJEUx3^Lln|8Y6#0JIIi3bu$~O^zbNiM!L)=_A_xs--KTZp3 z09=~d*eNt+H3YL7|Mtym@p1FB)1}{G!BGWxZ-0MZ6$f<&2UUtmq%EimuZa~Y(5A8I-!(%nfHU+m`Q z`lai;$8ZxiF8B8LRn5C5@1?0Sj`uT4Wqf_(8rxyox^p+0Mo4-Ht$Z$)*=$aB8YOwR zpnuxT9cGx5j`;FRN~g|Ak?+PFl3zUVZAT6n^5hJFegY_| z`P4W+R^u(D15|n}tC3$zI+8kV{JsT~iWQ?2B7VIzR(UuWoMNTDZffw{KowS_21gxp_^M&h@$_)3%akpNi|` za1Z=E)|3ulT;m@+JXrW|xBBC3Zrtq_C|9^KLQl{nPuHk4VsQb)^GKCTY0SQLet*WE zJ~>$99z$xEFuOvyFOKxFDOdB|$rh?b3cl~y9e+~W=4Yqmzf?-bT9W3(V@=}V9)h~~PnSfwKli=KUz;asS5mr^^p`)o)ON(iNwa@|;Z6g9R| zGi&PI3~k-H%Ra)?E}RH;uDH+KG`RFquFJut;g^Hu7Ha0xh9Cb~EH(QdULC$5kCW7V ze91BP&_pu9qnV(=X9e+0c8sD_YvwN|EnE zJePr?4^XJ_wDy`QJ!~qCA-iXC*90gpznFOLrHPOr&6Xr?fybn4 zt{XenO-my^bX_j~lDlIR5sv};8OkLcxqjnHR)6Wzb50KT25-7VU6cB`l>FlNc+5a< z=}2hoJmk8ebBB!ACGss6o0#1Ig!f!;G3qmX1-~A$G2aFj0b+r>MZk}3@4$z2rfKLT-b!%5usM1%Kh9G&RE5`BBIb7Y^ zZGT2OK*1F_+TLjBj|EUjUYZPz)3FwYHc0f>2By3#ANwN-F-pB$S**ru0;cYr+Sj8g zxJ8|A)63mjq;LCZ7DC6k*AB@a zgLHrf#OGcmL&=wHl@>adx@L*hJ(g4#50H0VoIm_Z`8#p`IoyygXWZ5_As!&lN?1;M z%G^K+`K?F?Fc7clok|KuD&0pSKX%Lz`5NgK8zVKhm+cTF%{({ZBAF1fc-?s=_kXe- zibM=0Skf9yNjiY>JwBGP_wQb%V5JW` zhCZs5-j_qM#qvcRV?nju72N{hGLFYkwW+lH6zK@Y7Ry)Yn9@|=(lo@)?OTgb6Ix3C z5b4PL?6mr}r6HOb$5Z5x4p45a9e;{p$a+5un*BzGHu+0k&=9NnsS_+A$(GxjXlOF1 z64H^J8ydNcP5!8Mw#>0~snoP-XxGdZY5E@T({jPK92>=`!~?Whz%9lUqq%zz65GMK zl@+To=`G&h0U8z$P^Ob7nN-m*woV<=Y+wi_Keu!wr~HO(tnX0@>`b< zFcR?qpX8U8jtr4M2I&AJ5)Y6jBz3;rGOZenCQw8pWT*(sw5%Cbu!uxRE)kY#Su(nS zk&uwwA}rIgVw6E6maAD>Svix7(FTrKu4ZXr2x}sPN&o9bUK|*r_ - return image.getRaw(Math.max(Math.min(ix, image.width - 1), 0), Math.max(Math.min(iy, image.height - 1), 0)) - } - - def color = new Color() - def sum = new Color() - def suma = new Color() + Color color = new Color() + Color sum = new Color() + Color suma = new Color() int[] p = new int[9] for(int x = 0; x < image.width; x++){ for(int y = 0; y < image.height; y++){ - int A = getRGB(x - 1, y + 1), - B = getRGB(x, y + 1), - C = getRGB(x + 1, y + 1), - D = getRGB(x - 1, y), - E = getRGB(x, y), - F = getRGB(x + 1, y), - G = getRGB(x - 1, y - 1), - H = getRGB(x, y - 1), - I = getRGB(x + 1, y - 1) + int A = getRGB(image, x - 1, y + 1), + B = getRGB(image, x, y + 1), + C = getRGB(image, x + 1, y + 1), + D = getRGB(image, x - 1, y), + E = getRGB(image, x, y), + F = getRGB(image, x + 1, y), + G = getRGB(image, x - 1, y - 1), + H = getRGB(image, x, y - 1), + I = getRGB(image, x + 1, y - 1) Arrays.fill(p, E) @@ -73,10 +65,11 @@ private def antialias(File file, boolean doAntialias, boolean useFastAA){ for(int val : p){ color.rgba8888(val) - suma.r += color.r * color.a - suma.g += color.g * color.a - suma.b += color.b * color.a - suma.a += color.a + color.premultiplyAlpha() + suma.r(suma.r + color.r) + suma.g(suma.g + color.g) + suma.b(suma.b + color.b) + suma.a(suma.a + color.a) } float fm = suma.a <= 0.001f ? 0f : (float)(1f / suma.a) @@ -89,10 +82,10 @@ private def antialias(File file, boolean doAntialias, boolean useFastAA){ color.rgba8888(val) float a = color.a color.lerp(suma, (float) (1f - a)) - sum.r += color.r - sum.g += color.g - sum.b += color.b - sum.a += a + sum.r(sum.r + color.r) + sum.g(sum.g + color.g) + sum.b(sum.b + color.b) + sum.a(sum.a + a) total += 1f } @@ -159,7 +152,7 @@ task pack(dependsOn: [classes, configurations.runtimeClasspath]){ } if(enableAA){ - ExecutorService executor = Executors.newFixedThreadPool(16) + ExecutorService executor = Executors.newFixedThreadPool(OS.cores) long ms = System.currentTimeMillis() //antialias everything except UI elements @@ -167,13 +160,13 @@ task pack(dependsOn: [classes, configurations.runtimeClasspath]){ if(file.isDirectory() || (file.toString().replace("\\", "/").contains("/ui/") && file.toString().startsWith("icon-")) || file.toString().contains(".9.png") || file.toString().contains("aaaa")) return executor.submit{ - antialias(file.file, doAntialias, useFastAA) + antialias(file.file) } } Threads.await(executor) - println "Time taken for AA: ${(System.currentTimeMillis() - ms) / 1000f}" + println "Time taken for AA: ${(System.currentTimeMillis() - ms) / 1000f} seconds" } println("\n\nPacking normal 4096 sprites...\n\n") diff --git a/tools/src/mindustry/tools/Generators.java b/tools/src/mindustry/tools/Generators.java index 323fd40edc..0e4032aabd 100644 --- a/tools/src/mindustry/tools/Generators.java +++ b/tools/src/mindustry/tools/Generators.java @@ -154,7 +154,7 @@ public class Generators{ }); generate("cliffs", () -> { - ExecutorService exec = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()); + ExecutorService exec = Executors.newFixedThreadPool(OS.cores); int size = 64; int dark = new Color(0.5f, 0.5f, 0.6f, 1f).mul(0.98f).rgba(); int mid = Color.lightGray.rgba();