Basis-Universal-Transcoders
Basis-Universal-Transcoders copied to clipboard
Support for BasisLZ / ETC1S → RGBA8?
I realize the implementation status table shows "planned" for this and other transcoding paths, but in case there's a need to prioritize among them — I would personally vote for BasisLZ → RGBA8 as the highest-priority item on the list.
All of the existing BasisU decoders (libktx, basisu, ...) are pretty complex to use as dependencies of a library, by JavaScript standards. Users can't just install the library anymore, they now have to install my library, and then install the BasisU decoder, and configure their build tools to deal with the WASM, which varies by build tool and platform and module syntax. The KhronosGroup/Basis-Universal-Transcoders project is (IMHO) the easiest to deal with of the available decoders, as a library author. But it's still prohibitively complex for me to try to support this alongside basisu or libktx — using this project for formats it supports, and another project for other formats. So far, that has unfortunately prevented me from using the KhronosGroup/Basis-Universal-Transcoders decoders at all. Not meant as a criticism, but hopefully a helpful FYI for maintainers. :)
The shortest path that would unblock my using this library would be having access to RGBA8 decoders for both UASTC and ETC1S. Even without the other transcode target formats, this allows me to at least use these lightweight transcoders for applications that just need to decode the images, e.g. to show small thumbnails of embedded textures.
Related user requests:
- https://github.com/donmccurdy/glTF-Transform/issues/591
I strongly support this idea, as gltf-transform is one of the best and most powerful ecosystem tools for glTF, so helping it support KTX2 will go a long way toward pushing adoption. And if this change makes it easy for gltf-transform, it will undoubtedly also help other implementors.
Can someone post ideas how to get this working? Technical plans or suggestions welcome.
@fire I believe the work required here would be to review the BasisLZ (ETC1S) Bitstream Specification, and implement an ETC1S→RGBA8 decoder in an AssemblyScript module, similar to the existing UASTC decoders.