Explore texture transcoding tasks distribution

Transcoding UASTC to other high-quality block-compressed formats like ASTC or BC7 is performed per-block. Each block is 4x4 pixels, 16 bytes.

For a typical 1024x1024 texture with all mip levels, transcoding each level independently may be suboptimal because of different task sizes:

image

An engine could concatenate and transcode all low-resolution levels at once to use fewer JS-to-WASM calls.

Also, transcoding a large texture (e.g. 4096x4096, 16 MB) could be split into several tasks and uploaded in chunks using compressedTexSubImage2D to use less intermediate client memory.

*Ported From GitHub