Texture Streaming Configuration

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.

Command Description
r.TextureStreaming Enables or disables the texture streamer. When disabled, all texture mips get fully loaded in memory, even if the texture is never used for rendering. This option can be toggled at runtime.
r.Streaming.PoolSize Controls the size of the texture pool. The streaming pool uses what's left of the texture pool after the non-streaming allocations. When set to 0, memory constraints will be ignored by the streamer. This will also remove temporary memory constraints (limiting the number of inflight requests) and all textures will be held in memory indefinitely.
r.Streaming.UseFixedPoolSize Whether the texture pool size can be changed at runtime.
r.Streaming.FramesForFullUpdate Controls how many frames the full update of the streamer states will be distributed over. High values will require a bigger temporary pool (to prevent IO request starvation) and will also affect the reactivity of the streamer. Low values will increase the update time cost on the main thread.
r.Streaming.UseNewMetrics Whether to use the latest changes to the logic around which mip should be streamed in or to keep using the previous computations. This is available for compatibility only as the new metrics improve over the previous ones.
r.Streaming.MaxTempMemoryAllowed The size of the temporary pool (see Reporting Texture Streaming Metrics).
r.Streaming.HLODStrategy Controls the loading strategy for hierarchical LOD textures :
  • 0 : Allow streaming of all mips

  • 1 : Allow streaming of the last mips (biggest) only.

  • 2 : Always stream all possible mips.

r.Streaming.HiddenPrimitiveScale 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.
r.Streaming.MaxEffectiveScreenSize 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.
r.Streaming.Boost A global boost affecting the wanted resolution of textures.
r.Streaming.MipBias A global mip bias used to prevent the streamer from loading the biggest mips for each texture. Used to accommodate 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.

r.Streaming.UsePerTextureBias Limits the effect of the global mip bias by limiting its effect to the max allowed mip, and not the wanted mips from any viewpoint, and applying 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.
r.Streaming.DropMips This debug options is 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.

r.Streaming.FullyLoadUsedTextures Stream all used textures to their max available resolution, and keep them in memory forever. To be used as an alternative to disabling texture streaming completely, which would load texture that are never used (requiring more memory).
r.Streaming.UseAllMips Whether or not to remove all resolution limitations coming from texture group settings and cinematic settings. To be used when showcasing art or making promotional material.
r.Streaming.AnalysisIndex Used in Material Texture Coordinate Scale Accuracy View Mode to investigate the accuracy for individual textures.