Optimizing Texture Atlases for Mobile Games: Cut VRAM by 50-70%

We often see how improperly packed textures turn a game into a "heavy weight": 300 MB instead of 80 MB, and on old Android devices it crashes with SIGKILL due to OOM. Meanwhile, everything works fine in the editor — Unity stores textures in uncompressed form, and the real VRAM size becomes apparent

Development and support of all types of mobile applications:

Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1All 1734 services
Optimizing Texture Atlases for Mobile Games: Cut VRAM by 50-70%
Medium
from 1 day to 3 days

Our competencies:

Frequently Asked Questions

Latest works

  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    597

We often see how improperly packed textures turn a game into a "heavy weight": 300 MB instead of 80 MB, and on old Android devices it crashes with SIGKILL due to OOM. Meanwhile, everything works fine in the editor — Unity stores textures in uncompressed form, and the real VRAM size becomes apparent only when profiling on a device. Our team, with 5+ years of experience on over 30 projects, has achieved a 50-70% reduction in memory consumption.

Optimizing Texture Atlases: Key Methods

The first and most common cause of memory overuse is the default RGBA32 format. If you don't set Override for each platform, Unity packs textures in uncompressed RGBA32. A 1024×1024 texture in RGBA32 takes 4 MB of VRAM. The same data in ASTC 6×6 is around 250 KB. That's a 16x difference. Always check compression settings for each platform.

The second typical mistake is an atlas size that is not a power of two. The GPU processes 700×900 textures inefficiently. Unity issues a warning but does not fix it automatically. Non-POT textures are not compressed by most formats and take more memory than the nearest POT. We guarantee bringing all atlases to POT.

The third problem is transparency where it's not needed. If the sprite is opaque, use RGB instead of RGBA. This is easily set in the import settings.

Compression Format Comparison Table

Platform Format Quality Usage Memory Savings (vs RGBA32)
Android (modern) ASTC 6×6 high all textures up to 16x
Android (legacy, API < 23) ETC2 medium opaque; ETC2 RGB for alpha up to 8x
iOS (A8+) ASTC 6×6 high all textures up to 16x
iOS (fallback) PVRTC low only when memory is extremely limited up to 6x

ASTC is adaptive and supports any aspect ratio. Available on all devices with Android 5.0+ and iOS A8+. For game sprites, 6×6 gives optimal quality/size. For UI with small text, use 4×4. In terms of quality, ASTC 6×6 is 2-3 times better than PVRTC at the same size.

ETC2 on Android is only needed for devices older than five years. If analytics show the share of such devices > 5%, take it into account.

How to Choose the Right Compression Format?

The choice depends on target devices. For most modern projects, ASTC 6×6 is optimal. If the project targets old devices, use ETC2 for Android and PVRTC for old iOS. It's important to set Overrides in the import settings for each platform.

Why Split Atlases by Context?

The correct strategy is to split by usage context, not by object type:

  • ui-hud: HUD elements displayed constantly
  • ui-menus: buttons, backgrounds, icons for menus (unloaded during gameplay)
  • gameplay-player: player sprites and animations
  • gameplay-enemies-tier1: first-level enemies
  • gameplay-vfx: particles, explosions, effects

Such splitting allows unloading unused atlases via Resources.UnloadUnusedAssets() or Addressables with explicit Release. With a single atlas, this is impossible. One of our clients, after restructuring 12 atlases, reduced peak memory by 35%.

Impact of Empty Space

Unity SpriteAtlas leaves padding between sprites (default 4 px) to prevent bleeding. On a 1024×1024 atlas, area loss can reach 15-20%. Reduce padding to 2 px for sprites without subpixel rendering — this improves packing. Monitor fill rate in the atlas Preview. If less than 70%, rework the split.

Process and Timeframes

Turnkey stages (3-6 days)
  1. Analytics: profiling on a real device via Memory Profiler, identifying top-10 heavy textures.
  2. Design: setting Overrides for Android/iOS, restructuring by context, disabling Mip Maps for 2D sprites.
  3. Implementation: modifying atlases, checking POT sizes, reducing padding.
  4. Testing: final check using Android GPU Inspector or Xcode Metal System Trace, comparing VRAM before and after.
  5. Documentation: report with results and maintenance recommendations.

Typical Results Table

Parameter Before Optimization After Optimization Reduction
VRAM for textures ~300 MB ~90 MB 70%
Number of textures 120 120 unchanged
Draw Calls per scene ~200 ~150 25%

Figures are for an average project. Your results may vary.

What’s Included

  • Full audit of current textures and atlases using Memory Profiler.
  • Compression Override setup for each target platform.
  • Atlas restructuring by usage context.
  • Optimization of padding, Mip Maps, and POT sizes.
  • Testing on real devices (Android and iOS).
  • Documentation with recommendations.
  • Post-optimization support for 1 month, including access to all reports and documentation.

Pricing

Optimization costs depend on the project scale. A basic audit starts at $500, full optimization from $1500. Contact us for a free consultation.

Result

After optimization, you will reduce texture memory usage by 50-70%, decrease Draw Calls due to proper packing, and ensure stable performance on devices with 2-3 GB of RAM. Visual quality will remain unchanged. Additional benefits include improved texture memory bandwidth and reduced fill rate pressure. Our technical approach uses texel density analysis and mipmap LOD bias adjustments for further gains. Contact us to discuss details.