Texture Streaming Configuration

System for loading and unloading textures into and out of memory during play.

Choose your operating system:




After checking the accuracy of your built texture streaming, you may want to adjust the texture streamer's behavior and priorities. The parameters below can be adjusted through configuration files, and most of them can also be updated at runtime from the console window.




This enables or disables the texture streamer. When it is disabled, all texture mips will get fully loaded in memory, even if the texture is never used for rendering. You can toggle this option at runtime, if needed.


The pool size in MB available for textures in the engine. This pool contains UI textures, NeverStream textures, cubemaps and streaming textures. On some platforms, this pool can also hold non texture resouces like GPU particle buffers and vertex buffers. When set to 0, the pool size will be unlimited.


When using a non-zero value, the texture pool size can be changed at runtime.


The number of frames between each full update of the texture streamer. Each update recomputes the required resolution of each texture and generate mip load or unload requests. Higher values reduce the texture streamer CPU usage while lower values increase its reactivity.


For compatibility only. When set to false, the texture streamer will proceed as per 4.12 version.


The amount of temporary memory in MB allowed for updating the textures. This should be big enough to avoid starving the texture streamer while being small enough to prevent wasting (unused) memory.


This controls the loading strategy for hierarchical LOD textures :

  • 0 : Allow streaming of all mips

  • 1 : Only stream the last mip. The other mips are always loaded.

  • 2 : Don't stream any mips. All mips are always loaded.


This controls a scale applied to the "wanted" resolution when the component referring to a texture is not visible (i.e. its bounding box is occluded). This only affects the resolution before it gets clamped by the max available resolution to avoid downgrading textures that are already limited. In other words, it only affects textures that have appropriate resolutions for the viewpoint.


When non-zero, this will limit the screen size considered by the streamer when computing the "wanted" resolution of textures. This will prevent high resolutions from requiring significantly bigger streaming pools.


This is a global boost affecting the "wanted" resolution of textures.


This is a global mip bias used to prevent the streamer from loading the biggest mips for each texture. It is used to accommodate a low streaming pool. This also affects which mips the streamer tries to load for any viewpoints, as with a small r.Streaming.Boost or a limiting r.Streaming.MaxEffectiveScreenSize .

There are a few exceptions to how this bias is applied :

  • Terrain & Landscape textures : bias has no effect.

  • Hierarchical LOD textures : bias does not limit max resolution.

  • Lightmaps & Shadowmaps : bias only limits max resolution.


This is used to limit the effect of the global mip bias by limiting its effect to the max allowed mip and not the "wanted" mips from any viewpoint. It will then apply it to textures only in order to fit in the streaming pool. Each texture has its own mip bias, ranging from 0 to MipBias , depending on the budget computation.


This is a debug option used to prevent keeping mips in memory even if the streaming pool allows it:

  • 0 : Drop no mips.

  • 1 : Drop cached mips.

  • 2 : Drop cached and hidden mips.

The purpose of this is to assets the accuracy of the wanted mip computation, as the displayed resolution can be affected by previous load requests or hidden primitives.


This will stream all used textures to their max available resolution and keep them in memory for as long as the application is opened. This should be used as an alternative to disabling texture streaming completely, which would load textures that are never used and ultimately, requiring more memory usage.


Whether or not to remove all resolution limitations coming from texture group settings and cinematic settings. This should only be used when showcasing art or making promotional material.


This is used in Material Texture Coordinate Scale Accuracy View Mode to investigate the accuracy for individual textures.


If enabled, the engine will check if texture streaming needs to be rebuilt, displaying a warning when simulating or in Play in Editor (PIE) mode.


If enabled, unused dynamic bounds will be removed from the update loop.


If enabled, the texture pool size will be limited to how much GPU memory is available.


When non 0, this allows the texture streamer to first load the visible mips from a texture when non visible mips must also be loaded. This improves the visual quality by prioritizing visible mips over force loaded mips or hidden mips that could become visible.


If non-zero, this sets the number of components the engine will incrementally load per frame before the level is visible. This applies to components with their mobility set to static. The default value is set to 50.


Whether the streaming texture's "wanted" resolution will be scaled down by the global mip bias.


Whether the material texture scales and the coordinates will be used for texture streaming.

Help shape the future of Unreal Engine documentation! Tell us how we're doing so we can serve you better.
Take our survey