GithubHelp home page GithubHelp logo

khronosgroup / basis-universal-transcoders Goto Github PK

View Code? Open in Web Editor NEW
91.0 91.0 9.0 813 KB

A collection of optimized WebAssembly transcoders for Basis Universal compressed GPU texture formats.

License: Apache License 2.0

TypeScript 12.28% WebAssembly 87.72%

basis-universal-transcoders's People

Contributors

davidbuerer avatar lexaknyazev avatar maxgraey avatar outofcontrol avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

basis-universal-transcoders's Issues

Use unsigned types where possible

Use of unsigned types slightly improves the performance. Early tests show that the compiled binary remains the same with the only difference being instructions like shr_s, gt_s, etc being replaced with their unsigned counterparts. However, some code paths are faster with signed types, so further evaluation is required.

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.

Store expanded partition patterns directly

Store pre-expanded partition patterns instead of expanding them on the fly. This requires further specializing memory page 0 layouts for different target formats. Afterwards, some (if not all) branches in weights inversion routines for ASTC and BC7 could be eliminated.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.