Performance and Delivery

Mobile Game Texture Budget Guide

A mobile game texture budget is the explicit ceiling for textures resident in one worst-case scene, plus temporary staging memory and delivery time. Keep these numbers separate, choose GPU formats by supported hardware, and prove the result on representative devices.

Intermediate Mobile game developersTechnical artistsEnvironment artists Published

Download the lab manifest

Machine-readable source hashes, KTX2 byte counts, format settings, formulas, and scope limits for the controlled test set.

Mobile game texture budget guide with low, mid, and high ETC2 and ASTC test profiles
Controlled seven-map PLAYTEX AI test set with full mip chains and explicit format assumptions.

Companion references

Download the working sheets

Use the handbook for context. Keep these compact references nearby during naming, export, and engine import.

Direct answer

What is a mobile game texture budget?

Budget the textures resident in one worst-case scene—not the whole project—and keep separate ceilings for GPU residency, peak staging memory, and transfer time. Count every mip and the actual GPU format, then leave headroom for the rest of the game and for transient uploads.

Guide and tool boundary: This guide owns the decision method and measured example. Texture Budget & VRAM Analyzer owns uploaded-file inspection and per-map estimates; Game Texture Optimizer owns source-set cleanup; the Texture Troubleshooting Field Guide owns symptom-first runtime diagnosis.

What you will get

  • Define a worst-case-scene budget instead of guessing from total project size.
  • Calculate full-mip GPU bytes for ASTC and ETC2 without confusing transfer size with residency.
  • Turn low, mid, and high quality tiers into testable import and delivery rules.

When this budget method is useful

  • A mobile scene loads slowly or shows a memory warning when the camera turns.
  • One Android package must cover ASTC-capable and ETC2 fallback hardware.
  • Texture quality tiers need explicit resolution and block-size rules.
  • A technical art review needs repeatable memory, load-time, and crop evidence.

Acceptance test

Approve the asset only when these are true

  • The worst-case scene and camera path are named and repeatable.
  • GPU residency, largest staging spike, and transfer time are reported separately.
  • Every texture byte count includes the actual target format and intended mip chain.
  • Base color and color emission are sRGB; normals, masks, and scalar data are linear.
  • ASTC and ETC2 variants are selected by delivery targeting rather than installed together without need.
  • Low, mid, and high device results record build, OS, GPU, thermal state, peak memory, load time, and quality evidence.
  • The cooked build stays below the full application limit with deliberate headroom.
PLAYTEX AI Texture Budget and VRAM Analyzer showing a mobile texture set report and optimization recommendations
Texture Budget & VRAM Analyzer: mobile set report Actual PLAYTEX AI output separates source bytes, decoded RGBA8-equivalent memory, mip overhead, target-compressed estimates, per-map findings, and the reviewed optimization plan.
Four labeled quality crops comparing source, ETC2 RGB, ASTC 8 by 8, and ASTC 6 by 6 compression on a PLAYTEX AI albedo texture
Source, ETC2, ASTC 8×8, and ASTC 6×6 quality crops The same 256×256 region is shown at 2× display scale. Judge cyan line edges, small magenta marks, low-contrast blue fields, and grid intersections at the final on-screen size before approving a format.

Start with the worst-case scene, not the install

The install can contain textures that never coexist. Runtime risk comes from the working set visible or retained during one demanding scene, camera path, UI overlay, or transition. Record that set by asset identifier so the test can be repeated after content changes.

Reserve memory for render targets, depth buffers, meshes, animation, audio, scripts, the engine, and the operating system before assigning the remainder to textures. A texture-only number is not a total application memory limit.

Use exact block and mip math

For block compression, each mip costs ceil(width ÷ block width) × ceil(height ÷ block height) × bytes per block. ASTC uses 16-byte blocks across its footprints; ETC2 RGB uses 8-byte 4×4 blocks and ETC2 RGBA uses 16-byte 4×4 blocks. Sum every mip because the smallest levels still allocate complete blocks.

The familiar one-third mip overhead is a useful approximation for square power-of-two textures. The exact byte count is the sum of every level, especially for block formats and non-square textures.

Separate color interpretation from compression

Base color and color-bearing emission are normally decoded as sRGB. Normal, roughness, metallic, ambient occlusion, height, opacity data, and ORM-style packed masks stay linear. A compression format does not correct the wrong color-space flag.

Alpha changes the candidate format and byte rate. Remove alpha only after pixel inspection and shader-contract review prove it is unused; a fully opaque preview does not prove an alpha channel is irrelevant to every material path.

Treat transfer, staging, and residency as different limits

Download or package bytes affect delivery. A CPU decode buffer or KTX2 transcode buffer affects the load spike. GPU-compressed mip payload affects residency. Reporting only one of these can make a build look safe while the transition still crashes.

The worked cold-load column is deliberately a network-profile calculation, not a phone benchmark. Measure storage, parsing, transcode, upload, and shader work in the cooked runtime before publishing a device claim.

Move from the decision to the shipped package

Measure the actual files in Texture Budget & VRAM Analyzer, send the reviewed plan through Texture Doctor, then apply the approved resolution, mip, color-space, channel, and compression rules in the target runtime package.

Use Game Texture Optimizer when source resizing or cleanup is the next job. Use the Texture Troubleshooting Field Guide when a cooked build already shows a symptom. Those pages keep their own jobs; this URL remains the educational owner for the budget decision.

Mobile texture budget settings that change the result

Resolution and mip ceilings

Set ceilings by screen coverage and map role before choosing a compression format.

  • Color and normal maps: Preserve silhouette-adjacent color detail and surface direction that remain visible at the closest supported camera distance. Raise the ceiling only when a same-size crop or device capture shows a visible loss. Lower it when the asset never covers enough pixels to use the top mip.
  • Masks and utility maps: Store scalar material controls that often carry less spatial detail than color or normals. Start one tier below color, then inspect packed channels individually for banding, edge loss, or cross-channel contamination.
  • Mip policy: Adds filtered lower-resolution levels for distance stability and streaming. Keep mips for world and character textures. Consider disabling only for fixed-resolution UI or other assets that never minify, and verify aliasing and memory separately.

ASTC and ETC2 delivery

A format choice is valid only when the target GPU and the cooked package agree.

  • ASTC 6×6: Uses 3.56 bits per pixel and preserves more local detail than larger ASTC footprints at a higher byte cost. Use for prominent color, normals, or other artifact-sensitive maps on an ASTC-capable high tier after crop review.
  • ASTC 8×8: Uses 2 bits per pixel and cuts payload versus 6×6, with a higher risk of softened edges or block artifacts. Use for mid-tier maps, broad gradients, or lower-information content that passes the final-size crop test.
  • ETC2 fallback: Provides a widely compatible OpenGL ES 3-class target, with RGB and alpha-capable variants at different byte rates. Include it through texture-compression targeting or a separate build when ASTC support is outside the device floor. Verify that unsupported formats do not expand to RGBA8.

Engine handoff checks

These labels match documentation reviewed on August 29, 2026; confirm them against the engine version used by the project.

  • Unity 6.0 Android override: Set platform-specific Max Size, texture format, compression quality, mipmaps, and sRGB by texture role. Android App Bundles can target multiple compression formats. Profile the built player because unsupported ASTC or ETC2 fallback behavior can change memory and load time.
  • Unreal Engine 5.8 Android formats: Android Multi can include ETC2 and ASTC, and format priority selects the highest-priority supported target. Inspect cooked output, texture groups, maximum size, LOD bias, and streaming residency on each supported device class.

Turn a texture ceiling into import and delivery rules

A mobile game texture budget is the explicit ceiling for textures resident in one worst-case scene, plus temporary staging memory and delivery time. Keep these numbers separate, choose GPU formats by supported hardware, and prove the result on representative devices.

Step 1: Define the worst-case scene

Pick one reproducible camera path or gameplay beat and list only the textures that can be resident together. Project size is a delivery concern; simultaneous residency is the runtime budget concern.

Step 2: Assign per-role ceilings

Keep color and normal maps only as large as screen coverage can justify. Start utility masks one tier lower, then raise a map only when a crop at the final on-screen size proves the loss is visible.

Step 3: Ship ASTC with an ETC2 fallback

Use ASTC block size as a per-role quality control on supported GPUs. Keep an ETC2 path or an explicit device exclusion so an unsupported ASTC asset does not silently expand to RGBA8.

Step 4: Profile the cooked build on devices

Record scene-entry time, peak texture residency, the largest staging spike, memory warnings, thermal state, and the exact device and build. The cooked runtime—not source PNG size—is the authority.

Open Texture Budget & VRAM Analyzer

One PLAYTEX AI texture set, three controlled delivery profiles

Controlled lab profile from August 29, 2026. Values are codec payload and transparent transfer-model results, not physical-phone measurements.
ProfileTexture ceilingFormatBundleModeled peakCold-load profile
Low512 color + normal; 256 utilityETC2 RGB 4 bpp0.54 MiB0.71 MiB1,003 ms @ 5 Mbps + 90 ms
Mid1024 color + normal; 512 utilityASTC 8×8 2 bpp1.09 MiB1.42 MiB653 ms @ 15 Mbps + 45 ms
High1024 for all seven mapsASTC 6×6 3.56 bpp4.18 MiB4.78 MiB902 ms @ 40 Mbps + 25 ms

Texture budget mistakes that survive desktop testing

  • Using PNG or JPEG file size as the resident GPU-memory number.
  • Budgeting the complete project instead of the textures that coexist in one scene.
  • Quoting the 33% mip rule without summing small compressed blocks.
  • Applying one ASTC block size to albedo, normals, masks, and UI without crop review.
  • Shipping ASTC without a verified compatibility path for the supported device floor.
  • Treating a KTX2 container size as proof of its final GPU residency.
  • Measuring steady-state memory while ignoring the scene-transition staging peak.
  • Calling an emulator or transfer profile a physical-device benchmark.

What is a reasonable mobile game texture budget?

There is no safe universal number. Set a worst-case-scene ceiling inside the memory left after the engine, render targets, geometry, animation, audio, scripts, and platform reserve are counted. Then validate peak residency and staging on the lowest supported device.

Do mipmaps add 33% memory?

A complete power-of-two mip chain approaches one third more texels than the base level. Exact compressed bytes differ because every small mip still occupies whole compression blocks, so calculate every level for the chosen format.

Should mobile textures use ASTC or ETC2?

ASTC is the flexible primary choice when the supported devices expose it because block size can trade quality for memory. ETC2 is a useful compatibility target for OpenGL ES 3-class hardware. Package both only when the delivery system selects the right variant instead of installing both.

Is KTX2 the same as ASTC?

No. KTX2 is a container. It can carry a GPU-native format or a universal payload that transcodes at runtime. Resident memory follows the final GPU format, dimensions, and mip chain—not the KTX2 filename.

Which texture maps should be sRGB?

Base color and color-bearing emission are normally sampled as sRGB. Normal, roughness, metallic, ambient occlusion, height, opacity data, and packed masks are data and should be sampled linearly unless a documented shader contract says otherwise.

Can this guide replace on-device profiling?

No. The worked matrix exposes the math and a repeatable test shape. Final authority belongs to the cooked build on representative low, mid, and high devices with memory, loading, thermal, and visual evidence recorded together.

Primary sources

Official specifications and renderer documentation

PLAYTEX AI guidance is paired with official specifications and platform documentation where the handoff depends on an outside convention.

  1. Android Developers: Textures and mobile optimization
  2. Google Play: Target texture compression formats in Android App Bundles
  3. Unity 6.0 Manual: Choose a GPU texture format by platform
  4. Unity 6.0 Manual: GPU texture format reference
  5. Unreal Engine 5.8: Android texture format settings
  6. Khronos Data Format Specification 1.4: ETC2 and ASTC block formats