From 378840bc1b9719c418d1bdf59c3a2a82956b844e Mon Sep 17 00:00:00 2001 From: Perfare Date: Tue, 4 Jun 2019 13:05:49 +0800 Subject: [PATCH] improved Texture2D convert --- .../Libraries/x64/PVRTexLibWrapper.dll | Bin 13824 -> 14336 bytes .../Libraries/x64/TextureConverterWrapper.dll | Bin 11264 -> 13824 bytes AssetStudioGUI/Libraries/x64/astc.dll | Bin 35840 -> 35840 bytes AssetStudioGUI/Libraries/x64/texgenpack.dll | Bin 28160 -> 28160 bytes .../Libraries/x86/PVRTexLibWrapper.dll | Bin 10752 -> 10752 bytes .../Libraries/x86/TextureConverterWrapper.dll | Bin 9216 -> 10240 bytes AssetStudioGUI/Libraries/x86/astc.dll | Bin 32256 -> 32256 bytes AssetStudioGUI/Libraries/x86/texgenpack.dll | Bin 28160 -> 28160 bytes AssetStudioUtility/Texture2DConverter.cs | 111 +++++++++--------- 9 files changed, 57 insertions(+), 54 deletions(-) diff --git a/AssetStudioGUI/Libraries/x64/PVRTexLibWrapper.dll b/AssetStudioGUI/Libraries/x64/PVRTexLibWrapper.dll index b39559ff3ad2ce3a28e5e53130b06b93ca0a6962..9f40bd6154559c599a4ac503d9e9a34afed92823 100644 GIT binary patch delta 4923 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 delta 4652 zcmd^DZBSEJ8a_AXYCuB*A%GA_z)-MY3SD@sJFBl{tmCmo%>U_NvnsL(%dsuiBrui?#jdD__-f&SIOiJ1C~SZa38tkTnph6t z5yol&-eShO2D39#A|S`+_?eTjPGK-RJ__r1T!s&|{n-sk~Zc%y3Ac~QK`bPobuQ8?lq3-2j z?Lz8?$0h~MZHm8~{2#zSDVnPJLyOi45`S-zD>u24G1ry;P@mQn`l>!U7 z4%Ev(Se!1D@-Q;&{Er#hZ)K3=48P~nk^<{X)Ed7a`A+M;csh=;Y01CIuA}9RxfBEZ z=#oc_7K$;{R_U;4q-bt8x9JN7X>6U|BnTC}EukW5B}TRX+&eUChMI{1(OSV@O}IDz z7)?q8R#1P)qs1~lfKfO>+FDsN91DH5O$wO5<4%KX#cDX}{Iyq+!Um&^ksF3YeG&8< z2IIPjAyHf*^F)0qKVm3I-1BKP+PzN^I!NYMyqghiSFG}a9vu|e3yyBYSScttq~t1tUyRAB5qfB zaGg!Dmza1<;_59=V_T8}o9vSG_e)q!N6AF>_hHJe=lgC7-A2h*Sxp;X_rj=oA_>ce z#tAX`6Vn)wI9ejn+}Gg1@CNn&C}Zr43T#st|L?#j2>EQ{GL5jBXC^s>QC^pnVR?@} z`@k>4R8;Wz48;e|V>w05rX=o5S}W}36G;uiV?5PlOV?9yu+Hv|nr|BAPd5JBD;c3| z@f5$?v|QIh6C5mU;E$SW;<6MYbt%7SDi@yR@yS0n&aPyP7QA7&CUAOE{1e}lTqNw{ zPbRxf55pC$@=a-TBWt6E8o!vmieF1E6F%qZ=1k!nFEhK+j+Zi4WqA8q^1fY@;*>)v zYf}6z_nC`U9E0tf(oKp!kOipZ+uE?rFFp**WAaVeCdHqEVtZhIv6EjjFY9ZDZ8#p1 zx3FmL%>*V+ z=d$Ye$k@kNy(+{4(%lOCOx534@kteXRm@l8wyJiEiX$p&RKHRhWB;-;uK**GqoAzw z;L-<^23(5Ln5N)N8jnxU>SHB8lofk(TZgS}$By0YZJzDBcj1=t-{SV}ZQF0#wdEn( zjxD>kc{-_5U8z#eCAC4M#cn+GrO4)^4MM{lbgoD}1d@v(*;V3q*0T=E-i8Lxxuwu^)znqbWy+W{97v`5hEkP7_ zTeOL8vec&;e1_j+DG>7cK}3$g_R5hVi#8=RC-N$|9F5vic*K$>j37rw{CGVsTWGJY zG}a0UR_tl!_h#nV$RB&wH`FxDE0~#c9sFMFk*|53=(%HiN1Lb3E?0wbV%X!D!|80_x{a|O*mQn7s@FH# zo2#opnU^2TGF6_K?`a{=$$8qHa`ec2O^zGoA7+`>jnDJc%bw6Ytx+yvYQ84NU4lj@ zfnzVVoo>KIR?`Zs8D_^WsHpY>2M%;>Mkm-woCI<&_IldwcUCFw;(M&7`$p$_8Wqp@ zJgr4(7c}~I96d^X?s9xaC|R-XJ=FWyZQQXX)~0J{({-G>$rP!Kva-l<;?Eg*d7;oQ z^f=G9RSO+_i|v4+YeB2V*@`J^rm`7N$WBkXnyp-}=p3xafqEl{muF`s#^f&{=}=c3 z-=1Ayj;TALq?#GaT?XVYWmkXi@ntZUU}0<{JPBOL*%$9llPhDb<=kOO5qr?fll5 z<6vb^A)N$20USp<1x`4l@^64EmQthp&?1ly*-&u5%6oy&tDNvHmA?zjOjmkf1J)x^ z?+H6pPWUnsHE0yLKZCJ9g7*T=7K{#f8nB`dFAAyvZc}+D@J*GE11};`1($$yOoyo; z;IEKKp9X%e@(8fhiYY=2{X%~fiAMJjkp3Ycj=KQ+Clb|rKeI7*7Moo%9JB{Mj6{Wc zftQgA!EuX`kFUu5+wt)kWdo#?}f2 diff --git a/AssetStudioGUI/Libraries/x64/TextureConverterWrapper.dll b/AssetStudioGUI/Libraries/x64/TextureConverterWrapper.dll index 97d661a44390f80527ca949637440c64b61293eb..dd7aa6fd76980f35970bbcc679939416caa4fd85 100644 GIT binary patch literal 13824 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 delta 5120 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 diff --git a/AssetStudioGUI/Libraries/x64/astc.dll b/AssetStudioGUI/Libraries/x64/astc.dll index 2af681cbf00602a22ac92bb46f14c2e4f61afb53..6921b51a47f98b14aa35fc807f2e8e477c541bab 100644 GIT binary patch delta 137 zcmZpe!PGE=X@dYGbHlH%n}rz#i>-l-7zQ9<0%AKLR%r&}QjiD(15Azw$QA+O6rfxR zLT++=i6qFN$<-xm1#Ba$KX*@B?lph;v#5pJ4<&B4D1F1qTo060uQuU!NlngANp%bk Mac0<@Ry|7q0M9=yc>n+a delta 137 zcmZpe!PGE=X@dYGbKmc!n}rz#i>-l-7zQ9<0%AKLR%r&}QjiD(15Azw$QA+O6rfxR zLT++=i6qFN$<-xm1(++&Z0yd9@oF)A$y+OJSFqWl^bIRmR=wJUJ0&$aKP5FjvA868 Jb6WK*0RRYODrf)z diff --git a/AssetStudioGUI/Libraries/x64/texgenpack.dll b/AssetStudioGUI/Libraries/x64/texgenpack.dll index 27d97f592799c5a7c478f85ff2508faa43477444..48bb2c1a07488c913eb4138eb35558e010a3f47e 100644 GIT binary patch delta 999 zcmZp;!`N_#aRDRC`(IyUCbKX$u!b-&FtkkWWL(aew%L&BodM&m$qL4jk{+G>-Tn&9 z2WPr;x^sO0>C)-X!@vGux4+8fAmeo+^*hRd+JN90l>P;!#mXV#CQzEI0>b|S<==qP z`=Im+C_M>ES3v0)DD45I&p^$Gn8r}gP*4hC20&>GD6Ipv5UP-24pe*!l!l3$LDkuz zsds}~qy?qO ofvki9IZ)6i07DW<%nc}Z04N3n6SW0K(;5kBO)~a6%c3M60JbfxMgRZ+ delta 977 zcmZp;!`N_#aRDPsh74!)WERE-Ru2XShKk9ZjLR9rHXAa%Ghn9DAfZMZ-LSZCX^gpP+J5bsWEUwMKumLKt2ue?b(lJntHBkPc&6=LsTsENa2HDL7#9lx=B?pK@ zKq3qbFgYF|TLg$70OcMa$xXfxECGqIH^FNJT-WSVV2iEr+wiok>)R=}-pwmQZZLX+ zqERn3C9xzC7@fro3@IRfCWxuih-g!vH`Qeq9h&ww_u!{ diff --git a/AssetStudioGUI/Libraries/x86/PVRTexLibWrapper.dll b/AssetStudioGUI/Libraries/x86/PVRTexLibWrapper.dll index e8543d178ae16de947a347d35124c43d6a727283..7c7db8304287328dcf875f14fcd03e108dbc94f3 100644 GIT binary patch delta 2602 zcmc&#eNa5Q79TRIsMC^pWHxBq4cFp+!r#5t1MaC=mi7AW|k#D!Yp; z)Bz(ddTVR9?pFNl*N#lFGjzw!z(Na7!RgLg%kI+ccGUXT?W}Rut+d1V_S_ep1!s0< z|Jw_{bKd=(uY2!1?`E%Sud6>7D-YQ>bR4}g9W%S{r27FrzsI;|V18rfgzGP&KJNNb z)Ms3mM19uv1!(+|-%afU!q41afu7xW!W{vs#f3ltD_v$GwH~;X*~J zCmfOos(T9~{MV4IYg`(h^a!dV2nopV|9Jzgf%?GqzUS|RX9N|^7C-?B012TvA#|ry zP~`&IHJ;Kv64Jf==U_tkQ$bZg{i;j(k2=J>@~!%jitzLEhH2gpMEH8uSQ$+bK-4); zOd9?)JSV7%A3R3{l@Xp-oQsTpBk`08p$Omj2wkIM+rvf5qctG^Al_=2uHdEjYuJ`c ziC(70pO8(mH2fRVAj^@TjX~(|GQN|%Ei-ha$`Gu9{~Wk-SbnTwXk zR0G5dl*o?~Q?M!jBnW;|kqTwYUxs7j4@9$Q{o~Ypo|;dQwiw+bGKdOCx*RB&=HdTD z&c$SE8ew~5`>SpUp{u+;7E+7_6#kyI5VDNiic!~n0QR23YyVldL|peT=pyQ%PFJS5 znTf*rdx9YF8rTJWnQ}ftkD=Ufv3q32k{&pf+)__ZfnwBlc_{E_;ie{-q@&mc4)Zs5kV*Fa1Gh~bZ5O-{W zKq0eIl+~iF6{TO4O`;5n@+YD^F3Mw~Y!l@xqU;ytTcSKA$^)Y85oNb1kBU+OauAOh zMqt^lB`_hkC4r88>k&Ey7zRuMc!1 zAehr}41ABl{5;?i;2Pi_Anl2$-3mGYc;*SD7a1iao&#bQ&<$t>qybk6+6fo|{2D+< zJ$XCPu;Vz~B@w{-N0IWEE8&AsBc;2!v3ck2X05NS#@7;T*x3x;!3Fm1-de41aQWlWSs)Ss6IZ{RfC;`;20jMd1#EX+^1t1YH z47T9~Hga5*Bo%Mh3#v*yIJ9czvpA_897;+HN=K_xcA9iJ|Mid8SD4S8SCTe$%SO`* zIDUH5X6&HbKuC+wAgHW{T5r&s!BPr(57GN3i(zW&>fyK_%r}&{GPZ2U2NN15*+~iZ z@x_)OQ_JKcZlmZuwU`tAJ|mq;2~S>LWO0g?nMIsS%rHy2q0yuzShZleMnng6#~Jd+ zRcG-$=}caYcawo+&GO6P^+)V=dJa%=C$lNZ)@{8q?vz2*opMCYv!co0&4Ep4rcwW`4^| zGv70^?D*{LY*+RV**d*N@6>zst@_>ie*F>s3H>d-!m!eiVK5nc_BpnMEoZA)Kik5#vE6JRdzd}So?zeWU@x#!>@0ho zjWw+{Wtyy}64Mrw-*nJ)+H}SAPg9&(X-+pg%wcoC`8)H6IX81GmSW2`OQWUTa=`Mw zWx{gFa@q2YC1UxJwZi&y>wfD=>zCF!tJIcYOR?!}TWr;~kge0!XCt=PZKrMT+Ai4y z+dH`zbN`TgE%$b=_q*H_d%E3e-(hdJziJ<_>l}KA)zRtbcf979c3g2>b^OC|*RhmK zA4)v!4+_uI49@fD!J{PpKIoV+#YT(w~sr_AuZgg@YV;JVdereLbmCC F^>0kd1#$oY delta 2488 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ⅈ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 F{tNn>{%imM diff --git a/AssetStudioGUI/Libraries/x86/astc.dll b/AssetStudioGUI/Libraries/x86/astc.dll index 62c6097373f27c489a8acd3090999a8e63e680a8..b62429d22d6942900cc76634dc368fa509f1a2df 100644 GIT binary patch delta 137 zcmZqp!`SeLaf1LObIq@>n}rz_v#f!P7zQ9<0%9v5W@!TA9FPbD15Azw$QA)&2cVn- zLT++?wj{`)$=%tt0&Bf5iq;}YBvVk}nB*MS|lj8xhMS%DYQ0@+r+@xp;ND#X&ayrvwIV$=FCZ~F+a)zQKP45YVRS%KrxV&FmMPIb_om&50J$E0L4OpVlXgKn`bb^9cRL8=0z!70HV>F AJ^%m! delta 627 zcmZp;!`N_#aRDPsjtpn?WERE(Ru2XS29C*N&1oD7%8I*kvDE9)Y)&i(s0f0-5L<0UoKunrAWV zy%uk(RJZ5J+_8B@^chB8P{8P=rX-dmf&!>9R#-D9A7YqZCP-Ap7^r}u0Vp;Bq!J=# z0umG0yf>B|8pJ2!EK^)klk-zj8MXkG!axYn8zu?Ba6}Rd0QxrpD0Tu#tOzLP0TcsS j0|VPY;g!I^a0N;1!{owv>A@63q6x2=CmQf9O5p+klkA1Y diff --git a/AssetStudioUtility/Texture2DConverter.cs b/AssetStudioUtility/Texture2DConverter.cs index 314caa7..504b1db 100644 --- a/AssetStudioUtility/Texture2DConverter.cs +++ b/AssetStudioUtility/Texture2DConverter.cs @@ -71,23 +71,6 @@ namespace AssetStudio private int astcBlockWidth; private int astcBlockHeight; - [DllImport("PVRTexLibWrapper.dll", CallingConvention = CallingConvention.Cdecl)] - private static extern bool DecompressPVR(byte[] buffer, IntPtr bmp, int len); - - [DllImport("TextureConverterWrapper.dll", CallingConvention = CallingConvention.Cdecl)] - private static extern bool Ponvert(byte[] buffer, IntPtr bmp, int nWidth, int nHeight, int len, int type, int bmpsize, bool fixAlpha); - - [DllImport("crunch.dll", CallingConvention = CallingConvention.Cdecl)] - private static extern bool DecompressCRN(byte[] pSrc_file_data, int src_file_size, out IntPtr uncompressedData, out int uncompressedSize); - - [DllImport("crunchunity.dll", CallingConvention = CallingConvention.Cdecl)] - private static extern bool DecompressUnityCRN(byte[] pSrc_file_data, int src_file_size, out IntPtr uncompressedData, out int uncompressedSize); - - [DllImport("texgenpack.dll", CallingConvention = CallingConvention.Cdecl)] - private static extern void Decode(int texturetype, byte[] texturedata, int width, int height, IntPtr bmp); - - [DllImport("astc.dll", CallingConvention = CallingConvention.Cdecl)] - private static extern bool decode_astc(byte[] data, int width, int height, int blockwidth, int blockheight, IntPtr bmp); public Texture2DConverter(Texture2D m_Texture2D) { @@ -873,7 +856,7 @@ namespace AssetStudio case TextureFormat.BC5: case TextureFormat.BC6H: case TextureFormat.BC7: - bitmap = Texgenpack(); + bitmap = TexgenPackDecode(); break; case TextureFormat.DXT1Crunched: case TextureFormat.DXT5Crunched: @@ -935,43 +918,41 @@ namespace AssetStudio { buff = image_data; } - var hObject = GCHandle.Alloc(buff, GCHandleType.Pinned); - var pObject = hObject.AddrOfPinnedObject(); - var bitmap = new Bitmap(m_Width, m_Height, stride, PixelFormat.Format16bppRgb565, pObject); - hObject.Free(); + var gch = GCHandle.Alloc(buff, GCHandleType.Pinned); + var imagePtr = gch.AddrOfPinnedObject(); + var bitmap = new Bitmap(m_Width, m_Height, stride, PixelFormat.Format16bppRgb565, imagePtr); + gch.Free(); return bitmap; } - private Bitmap PVRToBitmap(byte[] pvrdata) + private Bitmap PVRToBitmap(byte[] pvrData) { - var bitmap = new Bitmap(m_Width, m_Height); - var rect = new Rectangle(0, 0, m_Width, m_Height); - var bmd = bitmap.LockBits(rect, ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb); - var len = Math.Abs(bmd.Stride) * bmd.Height; - if (!DecompressPVR(pvrdata, bmd.Scan0, len)) + var imageBuff = new byte[m_Width * m_Height * 4]; + var gch = GCHandle.Alloc(imageBuff, GCHandleType.Pinned); + var imagePtr = gch.AddrOfPinnedObject(); + if (!NativeMethods.DecompressPVR(pvrData, imagePtr)) { - bitmap.UnlockBits(bmd); - bitmap.Dispose(); + gch.Free(); return null; } - bitmap.UnlockBits(bmd); + var bitmap = new Bitmap(m_Width, m_Height, m_Width * 4, PixelFormat.Format32bppArgb, imagePtr); + gch.Free(); return bitmap; } private Bitmap TextureConverter() { - var bitmap = new Bitmap(m_Width, m_Height); - var rect = new Rectangle(0, 0, m_Width, m_Height); - var bmd = bitmap.LockBits(rect, ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb); - var len = Math.Abs(bmd.Stride) * bmd.Height; + var imageBuff = new byte[m_Width * m_Height * 4]; + var gch = GCHandle.Alloc(imageBuff, GCHandleType.Pinned); + var imagePtr = gch.AddrOfPinnedObject(); var fixAlpha = glBaseInternalFormat == KTXHeader.GL_RED || glBaseInternalFormat == KTXHeader.GL_RG; - if (!Ponvert(image_data, bmd.Scan0, m_Width, m_Height, image_data_size, (int)q_format, len, fixAlpha)) + if (!NativeMethods.Ponvert(image_data, image_data_size, m_Width, m_Height, (int)q_format, fixAlpha, imagePtr)) { - bitmap.UnlockBits(bmd); - bitmap.Dispose(); + gch.Free(); return null; } - bitmap.UnlockBits(bmd); + var bitmap = new Bitmap(m_Width, m_Height, m_Width * 4, PixelFormat.Format32bppArgb, imagePtr); + gch.Free(); return bitmap; } @@ -984,11 +965,11 @@ namespace AssetStudio || m_TextureFormat == TextureFormat.ETC_RGB4Crunched || m_TextureFormat == TextureFormat.ETC2_RGBA8Crunched) { - result = DecompressUnityCRN(image_data, image_data_size, out uncompressedData, out uncompressedSize); + result = NativeMethods.DecompressUnityCRN(image_data, image_data_size, out uncompressedData, out uncompressedSize); } else { - result = DecompressCRN(image_data, image_data_size, out uncompressedData, out uncompressedSize); + result = NativeMethods.DecompressCRN(image_data, image_data_size, out uncompressedData, out uncompressedSize); } if (result) @@ -1001,32 +982,54 @@ namespace AssetStudio } } - private Bitmap Texgenpack() + private Bitmap TexgenPackDecode() { - var bitmap = new Bitmap(m_Width, m_Height); - var rect = new Rectangle(0, 0, m_Width, m_Height); - var bmd = bitmap.LockBits(rect, ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb); - Decode((int)texturetype, image_data, m_Width, m_Height, bmd.Scan0); - bitmap.UnlockBits(bmd); + var imageBuff = new byte[m_Width * m_Height * 4]; + var gch = GCHandle.Alloc(imageBuff, GCHandleType.Pinned); + var imagePtr = gch.AddrOfPinnedObject(); + NativeMethods.TexgenPackDecode(image_data, (int)texturetype, m_Width, m_Height, imagePtr); + var bitmap = new Bitmap(m_Width, m_Height, m_Width * 4, PixelFormat.Format32bppArgb, imagePtr); + gch.Free(); return bitmap; } private Bitmap DecodeASTC() { - var bitmap = new Bitmap(m_Width, m_Height); - var rect = new Rectangle(0, 0, m_Width, m_Height); - var bmd = bitmap.LockBits(rect, ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb); - if (!decode_astc(image_data, m_Width, m_Height, astcBlockWidth, astcBlockHeight, bmd.Scan0)) + var imageBuff = new byte[m_Width * m_Height * 4]; + var gch = GCHandle.Alloc(imageBuff, GCHandleType.Pinned); + var imagePtr = gch.AddrOfPinnedObject(); + if (!NativeMethods.DecodeASTC(image_data, m_Width, m_Height, astcBlockWidth, astcBlockHeight, imagePtr)) { - bitmap.UnlockBits(bmd); - bitmap.Dispose(); + gch.Free(); return null; } - bitmap.UnlockBits(bmd); + var bitmap = new Bitmap(m_Width, m_Height, m_Width * 4, PixelFormat.Format32bppArgb, imagePtr); + gch.Free(); return bitmap; } } + internal static class NativeMethods + { + [DllImport("PVRTexLibWrapper.dll", CallingConvention = CallingConvention.Cdecl)] + public static extern bool DecompressPVR(byte[] data, IntPtr image); + + [DllImport("TextureConverterWrapper.dll", CallingConvention = CallingConvention.Cdecl)] + public static extern bool Ponvert(byte[] data, int dataSize, int width, int height, int type, bool fixAlpha, IntPtr image); + + [DllImport("crunch.dll", CallingConvention = CallingConvention.Cdecl)] + public static extern bool DecompressCRN(byte[] data, int dataSize, out IntPtr uncompressedData, out int uncompressedSize); + + [DllImport("crunchunity.dll", CallingConvention = CallingConvention.Cdecl)] + public static extern bool DecompressUnityCRN(byte[] data, int dataSize, out IntPtr uncompressedData, out int uncompressedSize); + + [DllImport("texgenpack.dll", CallingConvention = CallingConvention.Cdecl)] + public static extern void TexgenPackDecode(byte[] data, int textureType, int width, int height, IntPtr image); + + [DllImport("astc.dll", CallingConvention = CallingConvention.Cdecl)] + public static extern bool DecodeASTC(byte[] data, int width, int height, int blockwidth, int blockheight, IntPtr image); + } + public static class KTXHeader { public static byte[] IDENTIFIER = { 0xAB, 0x4B, 0x54, 0x58, 0x20, 0x31, 0x31, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A };