PERF.TEX003

4K and larger textures, and whether you need them that big

Info Performance Report only — manual fix

Texture memory scales with area, so every doubling of the dimension is 4× the cost. A 4096² compressed texture is around 11 MB; the same art at 1024² is under a megabyte. Most projects have a handful of textures that genuinely need 4K, and a tail of assets that are 4K because that’s what the source file happened to be.

What the scan looks at

Textures whose imported dimensions reach 4096 px or more on the active build target. The threshold is deliberately conservative — the point is to surface the outliers, not to argue with your art director about 2048s.

Why it costs you

  • Memory and VRAM, at 4× per doubling, whether or not the texture is ever seen up close.
  • Bandwidth, because sampling large mip levels touches more memory per frame. On mobile this shows up as thermal throttling before it shows up as an out-of-memory crash.
  • Build size and install size, which is the part users see before they’ve played anything.

How to fix it by hand

Don’t resize the source. Use Max Size in the importer, per platform:

  1. Select the texture, open the platform tab you care about (Android, iOS, WebGL), tick Override, set Max Size to 2048 or 1024.
  2. Look at the asset in context — in the game, at the distance the player sees it. A 4K wall texture on a wall you walk past is not the same decision as a 4K texture on a character’s face in a cutscene.
  3. Reimport, and check the memory figure moved (the Inspector footer shows the imported size).

Max Size is a cap, not a resize: the source art on disk is untouched, so raising it again later costs nothing but a reimport.

What PerfLint does about it

Report-only, at Info severity. “Too big” is a judgement about the art, not a defect — there’s no correct answer a button could apply. The finding gives the dimensions and the memory estimate so you can triage a list sorted by cost and cap the ones that don’t earn their size.

If you’d rather not cap resolution at all, the alternative is to let the engine load only the mip levels it needs at runtime — see PERF.TEXSTR001.

Check your own project. The scan is free, runs entirely on your machine, and reports this rule with the exact assets that trip it — nothing is uploaded.

Install the free scanner See a sample report


Last reviewed · All rules