Version: Unity 6.0 (6000.0)
Language : English
Optimizing GPU texture memory with mipmap streaming
Enable mipmap streaming

Introduction to mipmap streaming

Use mipmap streaming to limit the size of textures in GPU memory.

How mipmap streaming works

For each texture in the cameraA component which creates an image of a particular viewpoint in your scene. The output is either drawn to the screen or captured as a texture. More info
See in Glossary
view, Unity automatically calculates and loads mipmap levels only up to a specific level, instead of loading all of them. This means that Unity only transfers some mipmap levels per texture from disk to the CPU and the GPU.

Unity calculates which mipmap levels to load from the meshes that display a texture, their UV layouts, and each camera’s position and settings. It gets these meshes from Mesh FilterA mesh component that takes a mesh from your assets and passes it to the Mesh Renderer for rendering on the screen. More info
See in Glossary
or Skinned Mesh Renderer components, so only objects with one of these components contribute to this calculation. When a texture appears on multiple objects at once, Unity loads the highest resolution that any of those objects needs.

If the textures Unity needs don’t all fit within the memory limit you set, Unity loads lower-resolution mipmap levels for some of the textures. If there is spare memory within the limit, Unity keeps higher-resolution mipmap levels loaded, so a texture might remain loaded at a higher resolution than the current view needs. For more information about setting a memory limit, refer to Configure mipmap streaming.

Limitations

  • Unity doesn’t support mipmap streaming on terrainThe landscape in your scene. A Terrain GameObject adds a large flat plane to your scene and you can use the Terrain’s Inspector window to create a detailed landscape. More info
    See in Glossary
    textures, because Unity needs the highest resolution mipmap levels at all times.
  • Unity doesn’t support mipmap streaming with texture arrays, cubemapA collection of six square textures that can represent the reflections in an environment or the skybox drawn behind your geometry. The six squares form the faces of an imaginary cube that surrounds an object; each face represents the view along the directions of the world axes (up, down, left, right, forward and back). More info
    See in Glossary
    arrays, or 3D textures.
  • If you render a texture without a Mesh Filter or Skinned Mesh Renderer — for example, with an API such as Graphics.DrawMeshNow, or through an object listed as unsupported — Unity doesn’t have the information it needs to calculate a mipmap level, so it loads the lowest-resolution mipmap level your quality settings allow. To control the level, override the mipmap level manually, or disable mipmap streaming on the texture.
  • Unity might not be able to calculate the correct mipmap level for textures that don’t use the special _ST property for texture tiling and offset. For more information about the _ST property, refer to Accessing shader properties in Cg/HLSL.
Optimizing GPU texture memory with mipmap streaming
Enable mipmap streaming