Crunch compression only really affects how big the file is on disk. At runtime / on GPU they’re all going to be the same size as a non-crunched DXT1 format, which is about 43KB.
Swapping the texture costs some CPU time, basically zero GPU time. Every frame a GPU renders is essentially treated as a fully unique “thing”, so you could change the texture every object in the game is using every frame and it wouldn’t impact how long the GPU takes to render since it already doesn’t know or care what was in the previous frame rendered.
What matters more than the number of objects you’re doing this to, or even to some degree the size of the texture, is how many textures you’re swapping between in total. That’s how much VRAM you’ll need to hold the textures. If it’s tens or even hundreds, it’s probably not even going to be noticeable at 256x256 (a single 4096x4096 texture is equivalent to 256 256x256 textures of the same format, and modern games have have dozens if not hundreds of those). The first time you use any specific image it’ll have to be uploaded to the GPU, but after that as long as you don’t use more memory than the GPU has available it’ll just sit there and be reused. Even then a hand full of 256x256 textures being read from disk and uploaded to the GPU isn’t really that significant in the grand scheme of things, at least on modern PC & consoles. 20+ might be noticeable though. And it may be a bit slow on the Switch. But again after that it shouldn’t be a problem. And you could force them to be resident by having them pre-load during a load screen. Usually done by drawing them on some object “in view” but hidden somehow by something drawing over it (like the loading screen UI) or on a one sided plane facing away from the camera.
There’s also the possibility Unity will unload textures from the GPU if it thinks they’re not in use anymore meaning it’ll need to be reuploaded again. This is especially true if you have mip map streaming enabled, but in that case just make sure the textures are set to not be streaming.
I did not know that the texture would sit there to be reused. (if Unity does not unload them at their own will)
So, If I have 10 unique texture for a quad that is changing its texture every frame. eventually GPU has all 10 unique texture in there, correct?
if its 256*256, then size is 43kb meaning 43kb * 10 = 430kb at least.
Is this correct?
Thank you.