TAServers / VTFParser

Simple and modern C++ library for parsing the Valve Texture Format
https://taservers.github.io/VTFParser/
MIT License
7 stars 0 forks source link

Re-add DXTn decompression #6

Open Mellnik opened 3 hours ago

Mellnik commented 3 hours ago

Hey, just noticed that you fully rewrote the library. I am currently using the "old" version (from 1-2 years ago) and while looking through the source I noticed that the DXT decompression is gone. Did I miss it or was it really removed?

Is there anything else that changed feature wise?

Thank you!

Derpius commented 2 hours ago

Hi, you haven’t missed anything!

Decompression methods along with the pixel accessing helpers were removed as part of tailoring the library to graphics APIs.

For some context, the original version of VTFParser was written for use in VisTrace (fully CPU-side), but we’re now using it - along with the other parsers - in a Vulkan-based project.

I’m happy to add some helper methods to perform decompression, although those would be something you’d use or enable on top of the Vtf class to avoid impacting read performance. There are other libraries that can do this for you, but generally as part of a much larger package

Is there anything else that changed feature wise?

In VTFParser it’s mostly features removed (e.g. decompression or the sampler methods) in favour of a GPU-oriented and faster parser

MDLParser has also received a rewrite though, and that comes with accessor helpers (similar to fastgltf) to make navigating the data less painful

There’s also the in-development PHYParser and impending BSPParser rewrite (for the same reasons as above). At some point I’ll be implementing parsers for the keyvalue and VPK formats too

Derpius commented 2 hours ago

Oh almost forgot, there’s actually documentation now too: https://taservers.github.io/VTFParser/

Mellnik commented 1 hour ago

Thank you for the explanation and linking the documentation.

I am probably going to update my app with the latest version here in the future. Taking the old version as reference for implementing pixel parsing for my needs. And for DXT probably DirectXTex.

The abstraction is a good thing. Nice to see that your other parser libraries getting updated too. Having a utility layer on top would be super useful for all libraries. Like the pixel access and decompression for VTF.