SeriousCache / UABE

Asset Bundle Extractor
3.71k stars 478 forks source link

Unity 5.5 asset bundles #90

Closed SamoVis closed 7 years ago

SamoVis commented 7 years ago

Hi, I was trying to open WebGL asset bundles created in Unity 5.5.0f3 using UABE 2.0b, bet when I hit Info button for shared assets, the application freezes and memory usage increases rapidly. Asset bundles from previous versions of Unity were fine and I was able to open and view them in UABE. Do you know where the problem is?

0x900x90 commented 7 years ago

Unity 5.5 asset bundles not supported at this moment.

DerPopo commented 7 years ago

Unity 5.5 has an updated .assets file format. I think I have identified all changes but I also need to adapt many functions in UABE to the changes. The new format basically has changed the asset type ids in the asset list to indices for a type list, which means that I have to change everything in UABE that uses these type ids from the asset list. I also have to update the .assets file writer to add new items to the type list if necessary, for which I need type according GUIDs. I hope it's relatively easy to extract these from the Unity player .exe as I've been doing for the type databases shipped with UABE. TL;DR I'm working on it but it'll take at least a few days.

DerPopo commented 7 years ago

It opens fine now and I've created a 5.5.0f3 type database. The things I still need to care for are related to asset dumps of MonoBehaviours in bundles (it needs to look up the correct type list entry) and adding type list entries to the .assets file in the save function if there is a new asset with a file type not yet described in that list, including generating the md4-hashes (not GUIDs as I assumed in the last post).

DerPopo commented 7 years ago

I think I've done all necessary changes for 5.5, I still need to test everything though.

DerPopo commented 7 years ago

5.5 works fine so far, I also had to update the Texture2D export/import functionality for new compression formats (BC4,BC5,BC6H,BC7) with another third-party library. Decompressing works fast but compressing a 1024x1024 texture even with the fastest preset takes around 5 minutes with full CPU usage (it creates up to 32 threads). I guess I'll need to use another library for that purpose.

DerPopo commented 7 years ago

Microsoft's DirectXTex also is quite slow (haven't tested GPU acceleration because I don't plan to add any d3d dependencies) but I've finally found one (ISTC Texture Compressor) that is much faster (in single thread compression I stopped after around 5 minutes at the fastest compression, the other library takes less than 1 second). It still crashes with BC6H, probably it wants 16bit floats instead of 8bit ints for each color channel.