There are many different factors at play here.
- We mainly use Basis Universal as a platform/GPU agnostic compression format. It decompresses at runtime into a format suitable for the target device.
- The size of the compressed texture is obviously smaller than an uncompressed image. How much smaller depends on compression settings.
- Compression is usually lossy, which means that visual quality will be affected. Depending on settings and image the visual difference may be very small or very noticeable.
- You pay a runtime CPU cost of transcoding from Basis to the target format supported by the GPU. This work is done on a thread and should not be noticeable as visual stutter, although on html5 you generally don’t have any threads and decompression will happen on the main thread which will lead to long frame times during transcoding.
- Another option is to compress to a specific target format, for instance ASTC, which can be used without any runtime transcoding, since the texture is compressed in a format which the GPU can use.
- The drawback is that your game won’t run unless th GPU supports the format.
- More details in this answer: Question about new ASTC WebGL support (PR #11434)
- The third option is to not compress textures at all.
- The size of your build will grow, but you will not pay a CPU cost of transcoding the images. It might also be the case that the uncompressed texture will still compress rather well at least when downloaded gzipped in an html5 build or when compressed in an APK or IPA.
There is some general advice in the Texture Compression manual.
I’m sure @AGulev can provide more advice.