What UE5 texture memory actually is
How a 4K BC7 texture becomes GPU bytes, why mipmaps add ~33%, and why r.Streaming.PoolSize is not extra VRAM.
What does UE5 texture memory mean?
The number you care about is GPU-resident size after the format Unreal actually uploads, not the PNG on disk. A 4K PNG can be 40 MB on disk and 16 MB on the GPU as BC7 — or 85 MB if someone left it uncompressed with mipmaps.
Unreal's texture streamer then decides which mip levels stay in the streaming pool. The pool is a budget, not a second GPU.
How much VRAM does a 4K texture use?
BC7 / BC3 / BC5: 4096 × 4096 × 1 byte = 16 MiB at the base level. With a full mip chain, ≈ 21.3 MiB.
BC1 / BC4: half of that — 8 MiB base, ≈ 10.7 MiB with mips.
RGBA8 uncompressed: 64 MiB base, ≈ 85.3 MiB with mips. That is the usual accident.
4K vs 2K vs 8K
Linear resolution doubling is a 4× texel increase. One 8K BC7 with mips is ≈ 85 MiB. Twenty of them is 1.7 GB before normals, ORM, and decals.
At 1440p, an 8K albedo on a surface that never fills the screen is paying for texels the filter will never fetch as the top mip.
Mipmaps
A complete chain to 1×1 is 1 + 1/4 + 1/16 + … ≈ 4/3 of the base level for power-of-two textures. You pay ~33% extra GPU memory so the streamer can keep small mips cheaply.
On disk, Unreal also stores that chain (or generates it). Disabling mips saves memory and guarantees shimmering.
How r.Streaming.PoolSize works
The console variable is megabytes. Epic documents that the pool also holds UI textures, cubemaps, NeverStream textures, and on some platforms non-texture GPU resources.
When Required Pool exceeds Pool Size, Unreal drops mips. That is the streamer doing its job. Setting the pool to 0 means unlimited and will not save a 8 GB scene on a 8 GB card.
Put a persistent value in DefaultEngine.ini under [/Script/Engine.RendererSettings]. Raising it is a last step, after format, resolution, and NeverStream hygiene.
Virtual texturing
VT uses a separate physical tile pool. Uniquely-mapped photogrammetry and GIS drapes belong there. They are poor citizens of r.Streaming.PoolSize because the whole 8K chain wants to be resident.
Tools for this task
- UE5 Texture Memory Calculator — GPU memory for a texture after compression and mipmaps.