Hi, I’m curious to understand my different high-level options when it comes to reducing lossless texture size to not deal with giant RGBA32 textures. This is for mobile devices in particular. These textures are taking up hundreds and hundreds of MB for me, and every new background is at least 12mb. Here are some strategies I can think of, without resorting to lossy textures (some textures include text, all are actual pixel data for the screen) or reducing the texture size and upsampling.
Simple, universal strategies:
- Use a .png, unpack it at runtime
- Use LZ4 compression in the .unity3d file (due to the lazy decompression of LZ4 blocks, do people try to also preemptively decompress stuff they’ll need later in real-time?)
Specialized ones, that seem more cumbersome to implement/maintain:
- For a texture that is one big solid color background with some small item in the middle, store the item’s texture separately since as a much smaller texture and use a solid texture behind it
- For a texture that is just different shades of a specific blue-green color (e.g. a gradient), use a solid texture of that color (programatically defined), along with a texture of just alpha values, and a white texture behind it
- For a texture that consists of a small object on top of an existing texture, programatically render the small object on top of existing texture (will the .resS file just de-duplicate the data between the two textures anyways?)
What are people’s thoughts? Is there a strategy here I should generally default to?