Mobile Texture Optimization in Unity: ASTC, MipMaps, and Hidden Performance Costs Explained
In Unity mobile projects, texture memory is often influenced by a small set of key factors: compression format, resolution, Read/Write settings, and MipMap usage. This session analyzes real profiling data from an OPPO R17 device using Unity 2022.3.60 to compare ASTC, ETC, and uncompressed formats. It explains how different compression strategies affect runtime memory, AssetBundle size, loading time, and GPU bandwidth, revealing trade-offs that are often overlooked in production optimization.
About GameOptim GameOptim helps Unity developers identify memory issues, rendering bottlenecks, and performance regressions through automated profiling and cloud based performance analysis. Explore more: 🌐 Website: www.gameoptim.com https://www.gameoptim.com/?fopt=blog 📘 Blog: www.gameoptim.com/blog/ https://www.gameoptim.com/blog/ 💼 LinkedIn: www.linkedin.com/company/gameoptim/ https://www.linkedin.com/company/gameoptim/ 🎥 YouTube: GO.PerformanceLab https://www.youtube.com/@GO.PerformanceLab 💬 Discord: GameOptim https://discord.gg/4Jh6hj9gRw ⭐ GitHub: GameOptim https://github.com/GameOptim/unity mobile performance guide 💻 Dev: GameOptim https://dev.to/gameoptim Texture memory is one of the most critical cost drivers in Unity mobile performance, directly affecting loading time, runtime memory usage, and GPU bandwidth consumption. In this video, we break down texture optimization using real device profiling results collected on an OPPO R17 running Unity 2022.3.60. The test asset is a standard 1024×1024 texture, evaluated across multiple compression formats and configuration settings. We focus on four core dimensions: • Texture compression formats ASTC, ETC, ETC2, Crunch variants, RGBA 32 / Half • Read/Write Enabled behavior and its impact on memory and loading time • MipMap generation and its geometric memory expansion cost • Real world trade offs between bundle size, runtime memory, and streaming cost Key findings include: ASTC has become the dominant mobile compression standard due to its flexibility and hardware support, but ASTC 4×4 may introduce higher loading time and larger bundle size than expected. Higher compression levels 6×6, 8×8, and beyond often provide better production trade offs for stylized or secondary textures. We also examine why uncompressed formats like RGBA 32 and RGBA Half significantly increase not only memory usage but also GPU bandwidth pressure during rendering, impacting thermals and battery life. An unexpected observation is that enabling Read/Write increases runtime memory as expected, but can slightly reduce texture loading time in some cases, highlighting non linear behavior in asset processing pipelines. Finally, we confirm that MipMaps increase memory usage by approximately 33% following a geometric progression, while also improving rendering stability and cache efficiency under certain conditions. The key takeaway: texture optimization is no longer a single variable decision. Effective optimization requires balancing memory footprint, loading performance, package size, and GPU bandwidth cost in real production scenarios.