Texture Streaming - anticto/Mutable-Documentation GitHub Wiki
Since version Unreal Engine 5.2 Mutable instances can generate their textures progressively. This has the following impact:
- Objects are ready to render much faster, but at a lower quality.
- Objects use less memory because larger texture mipmaps that are not needed won't be generated and won't use CPU or GPU memory.
- Total object generation time is larger, because some work is repeated for every mipmap update.
- There is a visible transition when texture mipmaps are updated, exactly like with the standard Unreal Engine texture streaming.
- The Mutable runtime is busier more often, which may delay the updates of other objects.
The general recommendation (and also the default behavior) is: Enable texture streaming when in-game. Disable texture streaming when the player is customizing an object, to prevent texture popping on mipmap updates.
Mutable already disables texture streaming for States with TextureCompressionStrategy set to None. This is an heuristic that assumes that uncompressed textures will only be used in CustomizableObject States that prioritize low update latency and popping is not allowed (for example changing the skin color in a lobby). This may be changed in the future to make it explicit and controllable by the user.
Additionally, global Mutable texture streaming can be enabled or disabled with the CVar mutable.EnableMutableProgressiveMipStreaming
. At runtime it can also be controlled with the following method: UCustomizableObjectSystem::SetProgressiveMipStreamingEnabled(bool bIsEnabled)
.